明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2658|回复: 4

请问vlisp里有没有类似VB里的exit sub或exit for的流程控制语句

[复制链接]
发表于 2003-4-18 22:08:00 | 显示全部楼层 |阅读模式
本人在编写vlisp程序时,有时候经常在循环体中进行判断,如果在判断中找到一个所
需要的东西,想跳出循环题,但一直没有找到这样的语句来实现,只好每次设置一个tag,要是有象vb里的exit for就好了,问一下大家,看大家是怎样处理这个问题的
发表于 2003-4-21 10:51:00 | 显示全部楼层

希望你看懂!!

;;看懂就能用!!!!!!!!!
;;Tony Tanzillo wrote:
(defun BREAK-OUT-OF-LOOP (/ I)
  (vl-catch-all-apply
    '(lambda ()
       (setq I 0)
       (repeat 10000
         (if (eq 1000 (setq I (1+ I)))
           (exit)
         )
       )
     )
  )
  (princ "\nstill going...")
)

;; Tony Tanzillo
;; name is NOT case-senseitive
;; must include .dwg
;; Return: Document object if open, or NIL
(defun ISDOCOPEN (NAME / TEMP)
  (setq NAME (strcase NAME))
  (vl-catch-all-apply
    '(lambda ()
       (vlax-for DOC (vla-get-documents (vlax-get-acad-object))
         (if (eq NAME (strcase (vla-get-name DOC)))
           (progn (setq TEMP DOC) (exit))
         )
       )
     )
  )
  TEMP
)
 楼主| 发表于 2003-4-21 22:40:00 | 显示全部楼层

我不知道我看懂没有,但我自己解释一下,你评评

不知道你为什么把代码写这么奇怪,我至少看了半小时以上,还不太透,
功力不够啊
你主要使用了两个函数,一个vl-catch-all-apply和exit其实你没有必要
让代码那么费解,可以写些你代码的目的,我到现在都不知道你代码的意义
所在,其中vl-catch-all-apply不会因出现错误而中止程序,而exit则是跳出循环的句子,第一个代码的目的我完全不懂,第二个好像是如果当前打开的是特定的文件名文件,则退出,但我想如果不是的话,不是照样退出吗,
????只是temp的赋值不同而已

你只要给我回答说有跳出循环的的语句或者有中止程序的语句,就想vb离地
exit和end一样,然后告诉我相应的语句在vlisp里是exit就可以了,
发表于 2003-4-21 23:51:00 | 显示全部楼层

你理解错了……看来没有看懂(见内)

(exit)函数在lisp中是退出整个程序的,与你要求的退出sub或退出for有所不同,所以这里有必要用vl-catch-all-apply捕获这个异常,确保只是退出循环而不是中止程序。

建议你把所有的autolisp/vlisp的帮助通读一篇,可能有些问题就不是问题了。
 楼主| 发表于 2003-4-22 00:09:00 | 显示全部楼层

明白了,谢谢,非常感谢

你这样说就太清楚了,我一直看书都是看基础的,对于难的,比如那些vlisp扩展的,我一般没有,那个东西又多,相关书籍好的有少(没有),所以我是不会看得(还有你们这些高手现在成了一个我不看这些的更大原因了,呵呵),即使我看了,在实际工作作没有用到,也就会忘了,

没半法,人太懒了,呵呵,谢谢,真的谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-26 09:49 , Processed in 0.160292 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表