明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 948|回复: 8

[讨论] 请教CTRL+Z后捕捉丢失的问题怎么处理(已解决)

  [复制链接]
发表于 2021-1-18 18:22 | 显示全部楼层 |阅读模式
本帖最后由 xj6019 于 2021-3-23 08:55 编辑

用代码中发现一个问题,大家应该也都有体会,代码中添加了恢复捕捉和防错误的代码后,代码开头将捕捉设置成0,完整运行代码的情况下或者途中按了ESC都可以恢复捕捉的,这个是没问题的,但是有一种情况,当运行完成代码后,发现画的东西有问题,这是会CTRL+Z撤销一下刚才的操作,这种时候,捕捉就会顺带又恢复成0,没有捕捉了,像这种情况有什么很好的处理方式呀,可以在撤销的时候不丢失捕捉。非常困惑,期待高手们可以指点一下,谢谢了。


附件代码很简单,只是自己摸索寻找了太久太久,终于锁定了这个恢复捕捉的方案,用了段时间了,效果非常理想,拿出来共享,寻觅不易,收个小币。
勿怪!勿怪!!!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2021-1-18 18:48 | 显示全部楼层
1 用lisp命令反应器,
2 编组时,把捕捉设置放在编组之内
 楼主| 发表于 2021-1-18 20:11 | 显示全部楼层
自贡黄明儒 发表于 2021-1-18 18:48
1 用lisp命令反应器,
2 编组时,把捕捉设置放在编组之内

都是套的错误函数,错误函数里面有编组的,这样下面捕捉设置为0的时候,肯定都进行编组了吧
 楼主| 发表于 2021-1-18 20:17 | 显示全部楼层
自贡黄明儒 发表于 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)
        (执行的命令)
)
发表于 2021-1-18 23:14 | 显示全部楼层
建议仔细设置undo的程序流程,首先是 undo begin, 然后再设置 Osnap 关闭,操作完毕后,恢复 Osnap,最后是 undo end, 这样在程序运行结束后,再按 Ctrl+Z,会直接回到 undo begin 之前的状态。

点评

领导,可以提供一下你说的群号吗,想添加一下  发表于 2021-1-19 07:32
发表于 2022-5-25 21:42 | 显示全部楼层
下来试一下
发表于 2022-6-20 09:57 | 显示全部楼层
代码开头将捕捉设置成0清空捕捉是错误的做法,正确做法不是设置为0,而是设置为(+(getvar'osmode)16384)关闭捕捉。。。
  1. (defun setosmode(/ os)
  2.   (setvar "osmode"((if(> os 16384) rem +)(rem(setq os(getvar"osmode"))16384)16384))
  3.   )
 楼主| 发表于 2022-6-20 12:48 | 显示全部楼层
llsheng_73 发表于 2022-6-20 09:57
代码开头将捕捉设置成0清空捕捉是错误的做法,正确做法不是设置为0,而是设置为(+(getvar'osmode)16384)关 ...

感谢73大佬的指导,受教了,非常感谢!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-3-29 15:42 , Processed in 0.315316 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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