明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1281|回复: 7

[源码] 捕捉恢复之程序出错或者中途退出

  [复制链接]
发表于 2020-8-6 20:26:45 | 显示全部楼层 |阅读模式
(defun c:tt( / )
  (vl-load-com)
;错误恢复捕捉
(defun *MYERR* (MSG)
(setvar "CMDECHO" CMD_OLD)
(setvar "OSMODE" OS_OLD)
(setq *ERROR* *OLDERR*)
(if (= MSG "完美退出。谢谢使用。")
(princ (strcat "\\n>>>" MSG))
(princ "\\n>>>虽然中途退出了,对象捕捉已经被恢复。")
)
(princ)
)
(setq *OLDERR* *ERROR*
*ERROR*  *MYERR*
OS_OLD   (getvar "OSMODE")
CMD_OLD  (getvar "CMDECHO")
)
;----绘制部分----

(你的程序)

(princ);_关闭程序返回值
);_程序结束
(princ "\n**********春婵程序加载完成,启动命令:tt **********")
(princ "\n")

"觉得好,就打赏"
还没有人打赏,支持一下
 楼主| 发表于 2020-8-17 12:37:59 | 显示全部楼层
999999 发表于 2020-8-16 17:50
优秀优秀,请问大神,是不是在(你的程序)这里插入其它功能的代码的话,那启动命令就要删掉, ...

是的,删除defun这一行,注意括号对称
回复 支持 1 反对 0

使用道具 举报

发表于 2020-8-16 17:50:22 | 显示全部楼层
优秀优秀,请问大神,是不是在(你的程序)这里插入其它功能的代码的话,那启动命令就要删掉,用您的第一个启动命令就能启动了呢
发表于 2020-8-17 15:26:07 | 显示全部楼层
hhh454 发表于 2020-8-17 12:37
是的,删除defun这一行,注意括号对称

谢谢大神的解答
发表于 6 天前 | 显示全部楼层
这个好用, 谢谢大佬
回复 支持 反对

使用道具 举报

发表于 6 天前 | 显示全部楼层
有一个疑问, 如果是用户自己设置的呢, 他不是都保存不了, 会还原到最初的值
有没有什么方式能捕捉到用户自己设置的捕捉事件.
回复 支持 反对

使用道具 举报

 楼主| 发表于 5 天前 | 显示全部楼层
本帖最后由 hhh454 于 2025-1-17 09:40 编辑
nuan1989 发表于 2025-1-16 03:58
有一个疑问, 如果是用户自己设置的呢, 他不是都保存不了, 会还原到最初的值
有没有什么方式能捕捉到用户自 ...

(setvar "OSMODE" OS_OLD)
把上面的这句代码放到你参数设置完的后面,程序备份的就是你的参数,
程序出错时,恢复的就是你的参数了
恢复捕捉大部分还是考虑按esc退出的情况下的补救,不要指望这个
自定程序可以考虑一键设置捕捉,
例如你有3组捕捉参数,编号1,2,3,
假如函数值为1时调用1号参数,并备份
要考虑代码出错时,程序恢复的是最后一次备份的捕捉参数
回复 支持 反对

使用道具 举报

发表于 5 天前 | 显示全部楼层
hhh454 发表于 2025-1-17 09:26
(setvar "OSMODE" OS_OLD)
把上面的这句代码放到你参数设置完的后面,程序备份的就是你的参数,
程序出 ...

我已经想到解决方式了, 就是在执行函数前面设置下"OS_OLD"变量.  然后你这函数就能完美用上.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-1-22 19:08 , Processed in 0.177165 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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