标签: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 10 3 (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)程序的流程控制
标签:style blog http color ar 文件 2014 div sp
原文地址:http://www.cnblogs.com/xueniwawa/p/3966981.html