请问在autolisp中如何才能在中途跳出循环啊,有没有类似c里面的如break,continue等的e

我现在用autolisp的循环语句while,但我想中途跳出来可不可以啊。如
(setq a 1)
(while (<= a 100)
(setq a (1+ a))
;这里我想a=40时结束循环,应该怎么做
;比如我用if语句,当if为ture时,我怎么可以结束while
....
)
还有我想问一下在autolisp里面有没有类似c的else..if..then..的啊
比如我想做
当(if (and (<= (abs L) 0.0001) (<= (abs W) 0.0001) (<= (abs H) 0.0001))成立时做(setq flag 1)
不成立时执行下面语句:
(princ a f)
(princ "x=" f)
(princ L f)
(princ " " f)
(princ "y=" f)
(princ W f)
(princ " " f)
(princ "z=" f)
(princ H f)
(princ " | " f)
(princ "\n" f)
(setq a (1+ a))
谢谢大家了!!!
同时,也想问一下:用autolisp怎么可以在atuocad中的每一个点用鼠标点中后自动显示标号(如第一个点标注1,第二个标2,依次类推的。如果用autolisp不行,用别的怎么实现,如vb或是c++也行。

对于第一个问题,很遗憾,没有。但是仔细想下,既然用while了,有什么必要在a=40就退出呢?我猜你真实意图可能是其他变量在执行过程中满足条件就退出循环对吧,直接把条件列在whlie的条件里,与a<100用and连接能解决问题。
对于第二个问题,Lisp的if语法本身就是(if <条件> <条件真执行> <条件假执行>),所以里的代码可以这样:
(if (and (XXX) (XXX)...)
(setq flag 1) ;条件满足执行
(progn

所有if不满足需要执行的语句放这里





第三个问题你是要把标号写在图上还是临时显示?写上去的话很容易实现,临时显示用grtext能实现
温馨提示:答案为网友推荐,仅供参考
相似回答