请教CTRL+Z后捕捉丢失的问题怎么处理(已解决)
本帖最后由 xj6019 于 2021-3-23 08:55 编辑用代码中发现一个问题,大家应该也都有体会,代码中添加了恢复捕捉和防错误的代码后,代码开头将捕捉设置成0,完整运行代码的情况下或者途中按了ESC都可以恢复捕捉的,这个是没问题的,但是有一种情况,当运行完成代码后,发现画的东西有问题,这是会CTRL+Z撤销一下刚才的操作,这种时候,捕捉就会顺带又恢复成0,没有捕捉了,像这种情况有什么很好的处理方式呀,可以在撤销的时候不丢失捕捉。非常困惑,期待高手们可以指点一下,谢谢了。
附件代码很简单,只是自己摸索寻找了太久太久,终于锁定了这个恢复捕捉的方案,用了段时间了,效果非常理想,拿出来共享,寻觅不易,收个小币。
勿怪!勿怪!!!
1 用lisp命令反应器,
2 编组时,把捕捉设置放在编组之内 自贡黄明儒 发表于 2021-1-18 18:48
1 用lisp命令反应器,
2 编组时,把捕捉设置放在编组之内
都是套的错误函数,错误函数里面有编组的,这样下面捕捉设置为0的时候,肯定都进行编组了吧 自贡黄明儒 发表于 2021-1-18 18:48
1 用lisp命令反应器,
2 编组时,把捕捉设置放在编组之内
你好黄老师,CTRL+Z的命令反应器,您可以提供一下吗,我自己手里只有一个双击反应器,在这个基础上可以改吗,麻烦了。
以下是双击反应器
(vl-load-reactors)
(vl-load-com)
(setq shell (vlax-create-object "WScript.Shell"))
(执行的命令)
(if (not mouse_reactor) (setq mouse_reactor (vlr-mouse-reactor nil '((:vlr-beginDoubleClick . Testsst11)))))
(defun Testsst11(a b)
(执行的命令)
) 建议仔细设置undo的程序流程,首先是 undo begin, 然后再设置 Osnap 关闭,操作完毕后,恢复 Osnap,最后是 undo end, 这样在程序运行结束后,再按 Ctrl+Z,会直接回到 undo begin 之前的状态。
下来试一下 代码开头将捕捉设置成0清空捕捉是错误的做法,正确做法不是设置为0,而是设置为(+(getvar'osmode)16384)关闭捕捉。。。
(defun setosmode(/ os)
(setvar "osmode"((if(> os 16384) rem +)(rem(setq os(getvar"osmode"))16384)16384))
) llsheng_73 发表于 2022-6-20 09:57
代码开头将捕捉设置成0清空捕捉是错误的做法,正确做法不是设置为0,而是设置为(+(getvar'osmode)16384)关 ...
感谢73大佬的指导,受教了,非常感谢!!
页:
[1]