AutoLISP 防止輸入函數回傳空值

輸入函數基本上是以GET開頭,
例如:GETINTGETREAL...等
回傳空值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


留言

這個網誌中的熱門文章

AutoCAD 填充線(剖面線)樣式簡易製作產生器

AutoCAD 如何自訂線型教學

AutoCAD 動態圖塊-如何在所有可見性顯示或隱藏