標籤:style blog http color ar 檔案 2014 div sp
AutoLISP程式的流程通過流程式控制制函數控制。
1.分支結構
(1)(cond(測試運算式1 結果運算式1)[(測試運算式2 結果運算式2)]……)
【例】
1 (setq n( cond((<= i 1) 1)2 ((<= i 1) 1)3 ((<= i 2) 4)4 ((<= i 3) 10)5 (t 100)6 )7 )
說明:該函數類似C語言中的switch語句。最後一個測試運算式"t(或T)"相當於"default",指其餘情況。也可缺少這個測試運算式。與C語言switch不同的是,若某一測試運算式成立,即返回相應結果運算式的值,不在向下測試。如果i等於0,n值就為1,運算結束。
(2)(if 測試條件運算式 運算式1 [運算式2])
若測試條件運算式結果為真,則執行運算式1,否則,執行運算式2.例如:(if(> a 1) (setq b 2))含義是:如果a大於1,則b等於2,否則不進行任何計算,求值結束。(if(> a 1) (setq b 2) (setq b 2))含義是:如果a大於1,則b等於2,否則b等於3,求值結束。
當條件運算式成立時,要執行多個運算式的時候,需要用到progn函數。
(3)(progn 運算式……)
(if(> a 1) (progn (setq b 2) (print (+ b a)) ) (progn (setq b 4) (print b) ))
解釋:如果條件成立,則b等於2,列印a和b的和,返回a和b的和。否則,b等於4,列印b,返回b的值。
2.迴圈結構
(1)(repeat 整數n 運算式……)
重複執行n次。對多有的運算式求值,返回最後一個運算式的計算結果。
1 (setq a 1 b 100)2 (repeat 103 (setq a(+ 1 a))4 (setq b(+ 10 b))5 )
(2) (while 測試式 運算式……)
(setq i 1 a 10) (while ( <= i 10) (setq a(+ a 10)) (setq i(1+ i)) )
不知道為什麼總出錯。
解決:因為<=需要連起來寫
Visual LISP 第3章 程式的流程式控制制盒AutoLISP檔案(1)程式的流程式控制制