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。
留言
張貼留言