killer9806 发表于 2007-6-29 14:48:00

[求助]*error*函数的用法

<p>本人平常做了一些小程序,但是如果选取物体后,按:ESC键退出。但是系统变量都不能恢复到原来的运行命令状态中。希望大虾们指教一下。最好的代码可以学习一下。谢谢</p>

王咣生 发表于 2007-6-29 15:29:00

<p>(defun #err (s)<br/>&nbsp; (alert "中断")</p><p>&nbsp; (if $orr (setq *error* $orr))<br/>&nbsp; (princ)<br/>)</p><p>;程序中断时执行#err<br/>(setq $orr *error*)</p><p>(defun c:test ( / )<br/>&nbsp; (setq *error* #err)<br/>&nbsp; (setq ss (ssget))</p><p>&nbsp; (alert (itoa (sslength ss)))<br/>&nbsp; (setq *error* $orr)<br/>&nbsp; (princ)<br/>)</p>

wandong 发表于 2007-6-30 08:39:00

<p>通常错误处理函数的用法:</p><p>defun c:test(/ oldcmdcho&nbsp;olderror ...)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>(setq oldcmdcho (getvar "cmdecho"))<br/>(setvar "cmdecho" 0)<br/>(setq old...) <br/>(setq olderror *error*<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *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>

killer9806 发表于 2007-7-1 15:23:00

<p>谢楼上两位的实例。体会中</p>

colder 发表于 2007-7-8 16:41:00

<p>*error*的用法 希望大家能在一起仔细讨论一下 拿出自己的心得来分享</p><p>因为我有时候觉得 这个东东属于LISP的垃圾回收机制</p>

honxj 发表于 2008-8-15 22:41:00

目前正在研究error函数的用法!

asen 发表于 2008-8-16 05:37:00

<p>就是在程序出现异常错误的时候执行&nbsp; *error* 函数</p>

caoyin 发表于 2008-8-16 08:49:00

<a href="http://bbs.mjtd.com/forum.php?mod=viewthread&tid=59013&amp;replyID=&amp;skin=1">http://bbs.mjtd.com/forum.php?mod=viewthread&tid=59013&amp;replyID=&amp;skin=1</a>
页: [1]
查看完整版本: [求助]*error*函数的用法