[求助]*error*函数的用法
<p>本人平常做了一些小程序,但是如果选取物体后,按:ESC键退出。但是系统变量都不能恢复到原来的运行命令状态中。希望大虾们指教一下。最好的代码可以学习一下。谢谢</p> <p>(defun #err (s)<br/> (alert "中断")</p><p> (if $orr (setq *error* $orr))<br/> (princ)<br/>)</p><p>;程序中断时执行#err<br/>(setq $orr *error*)</p><p>(defun c:test ( / )<br/> (setq *error* #err)<br/> (setq ss (ssget))</p><p> (alert (itoa (sslength ss)))<br/> (setq *error* $orr)<br/> (princ)<br/>)</p> <p>通常错误处理函数的用法:</p><p>defun c:test(/ oldcmdcho olderror ...) <br/>(setq oldcmdcho (getvar "cmdecho"))<br/>(setvar "cmdecho" 0)<br/>(setq old...) <br/>(setq olderror *error*<br/> *error* my_err)<br/>(command "._undo" "be")</p><p>.......</p><p>(command) <br/>(command "._undo" "_end")<br/>(setvar "cmdecho" oldcmdcho)<br/>(setvar ...)<br/>(setq *error* olderror)<br/>(princ)<br/>(princ)<br/>)<br/>(defun my_err(msg)<br/>(command) <br/>(command "._undo" "_end")<br/>(setvar "cmdecho" oldcmdcho)<br/>(setvar ...)<br/>(setq *error* olderror)<br/>(princ)<br/>)<br/></p> <p>谢楼上两位的实例。体会中</p> <p>*error*的用法 希望大家能在一起仔细讨论一下 拿出自己的心得来分享</p><p>因为我有时候觉得 这个东东属于LISP的垃圾回收机制</p> 目前正在研究error函数的用法! <p>就是在程序出现异常错误的时候执行 *error* 函数</p> <a href="http://bbs.mjtd.com/forum.php?mod=viewthread&tid=59013&replyID=&skin=1">http://bbs.mjtd.com/forum.php?mod=viewthread&tid=59013&replyID=&skin=1</a>
页:
[1]