AutoLISP 防止輸入函數回傳空值
輸入函數基本上是以GET開頭,
例如:
回傳空值
通常是未輸入值就按下Enter鍵,
通常方法是在前面使用
但是如果有設定預設值時,
但不用
卻只會回傳空值
這時就會使用一些方法來解決,
通常方法是在後面使用
缺點是會多一個變數。
另一個方法是使用
來判斷是否回傳空值
例如:
GETINT
、GETREAL
...等回傳空值
nil
通常是未輸入值就按下Enter鍵,
通常方法是在前面使用
initget
來預防,(initget 1);;;參數1是防止直接按下Enter鍵
但是如果有設定預設值時,
(setq TheV 10) (setq TheV (getreal (strcat "\n 輸入新的值:<" TheV ">")))想要直接用預設值,而使用
initget
來預防就會不方便了,但不用
initget
,卻又想要使用預設值,而直接按下Enter鍵,卻只會回傳空值
nil
,這時就會使用一些方法來解決,
通常方法是在後面使用
IF
進行判斷,缺點是會多一個變數。
(setq TheV 10) (setq NewTheV (getreal (strcat "\n 輸入新的值:<" TheV ">"))) (if (/= NewTheV nil) (setq TheV NewTheV))
另一個方法是使用
cond
:來判斷是否回傳空值
nil
,否則給予原本的值。(setq TheV 10) (setq TheV (cond ((getreal (strcat "\n 輸入新的值:<" (rtos TheV) ">"))) (TheV)))*備註:
getstring
不適用此方法,因為直接按下Enter鍵會回回傳的是""
,而不是nil
。
留言
張貼留言