捕捉恢复之程序出错或者中途退出
(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")
999999 发表于 2020-8-16 17:50
优秀优秀,请问大神,是不是在(你的程序)这里插入其它功能的代码的话,那启动命令就要删掉, ...
是的,删除defun这一行,注意括号对称 优秀优秀,请问大神,是不是在(你的程序)这里插入其它功能的代码的话,那启动命令就要删掉,用您的第一个启动命令就能启动了呢 hhh454 发表于 2020-8-17 12:37
是的,删除defun这一行,注意括号对称
谢谢大神的解答 这个好用, 谢谢大佬 有一个疑问, 如果是用户自己设置的呢, 他不是都保存不了, 会还原到最初的值
有没有什么方式能捕捉到用户自己设置的捕捉事件.
本帖最后由 hhh454 于 2025-1-17 09:40 编辑
nuan1989 发表于 2025-1-16 03:58
有一个疑问, 如果是用户自己设置的呢, 他不是都保存不了, 会还原到最初的值
有没有什么方式能捕捉到用户自 ...
(setvar "OSMODE" OS_OLD)
把上面的这句代码放到你参数设置完的后面,程序备份的就是你的参数,
程序出错时,恢复的就是你的参数了
恢复捕捉大部分还是考虑按esc退出的情况下的补救,不要指望这个
自定程序可以考虑一键设置捕捉,
例如你有3组捕捉参数,编号1,2,3,
假如函数值为1时调用1号参数,并备份
要考虑代码出错时,程序恢复的是最后一次备份的捕捉参数
hhh454 发表于 2025-1-17 09:26
(setvar "OSMODE" OS_OLD)
把上面的这句代码放到你参数设置完的后面,程序备份的就是你的参数,
程序出 ...
我已经想到解决方式了, 就是在执行函数前面设置下"OS_OLD"变量.然后你这函数就能完美用上.
页:
[1]