明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2618|回复: 7

[讨论] 对本论坛的《防止捕捉丢失》,进行了修改

[复制链接]
发表于 2016-6-13 20:01:37 | 显示全部楼层 |阅读模式
论坛里搜索到的防止捕捉丢失,使用效果很好,就是在命令执行过程中,捕捉模式改变后,比如:在绘图过程中,通过 草图设置 对象捕捉 界面人工更改捕捉模式后,命令结束时仍为最初的捕捉方式,这里觉得有点不方便,现在修改成可记住中途捕捉模式的改变。

原防止捕捉丢失代码:
  1. <blockquote>(or *osmodemonitor* (setq *osmodemonitor*
修改后的代码:
  1. (defun C:TT ()
  2. ;;
  3.   ;
  4.   ;
  5.   ;(vlr-remove-all :vlr-sysvar-reactor)
  6.   ;(vlr-remove-all :vlr-lisp-reactor)
  7. (vl-load-com)
  8. (or *OSMODEMONITOR*
  9.      (setq *OSMODEMONITOR* (vlr-lisp-reactor NIL
  10.                '( ;(:vlr-lispwillstart . SAVEOSMODE)
  11.                  (:vlr-lispended . RESETOSMODE)
  12.                  (:vlr-lispcancelled . RESETOSMODE)
  13.                 )
  14.          )
  15.      *OSMODEMONITOR* (vlr-sysvar-reactor NIL '((:vlr-sysvarwillchange . SAVEOSMODE) (:vlr-sysvarchanged . SAVEOSMODE)))
  16.      )
  17. ) ;反应器构造
  18. ;;回调函数
  19. (defun  SAVEOSMODE (V1 V2 / OSN)
  20.   (if (and (setq OSN (getvar 'OSMODE)) (/= OSN 0) (/= OSN 16384) (= (car V2) "OSMODE"))
  21.    (setq *LASTOSMODE* (rem OSN 16384))
  22.   )
  23. )
  24. (defun  RESETOSMODE (V1 V2)
  25.   (if (and *LASTOSMODE* (/= (getvar "osmode") *LASTOSMODE*))
  26.    (setvar "osmode" *LASTOSMODE*)
  27.   )
  28. )
  29. (princ)
  30. )
输入TT开始防丢失
每次命令之后捕捉一直是打开状态
发表于 2018-11-6 19:52:05 | 显示全部楼层
本帖最后由 尘缘一生 于 2018-11-6 20:02 编辑

程序有点错误,看是不是这样。。。


(defun C:TT ()
;;

(vl-load-com)
(or *OSMODEMONITOR*
  (setq *OSMODEMONITOR* (vlr-lisp-reactor NIL
              '((:vlr-lispwillstart . SAVEOSMODE)
                (:vlr-lispended . RESETOSMODE)
                (:vlr-lispcancelled . RESETOSMODE)
               )
             )
   *OSMODEMONITOR* (vlr-sysvar-reactor NIL
            '((:vlr-sysvarwillchange . SAVEOSMODE)
              (:vlr-sysvarchanged . SAVEOSMODE)
              
             )
           )
  )
) ;反应器构造
;;回调函数
(defun  SAVEOSMODE (V1 V2 / OSN)
  (if (and (setq OSN (getvar 'OSMODE)) (/= OSN 0) (/= OSN 16384) (= (car V2) "OSMODE"))
   (setq *LASTOSMODE* (rem OSN 16384))
  )
)
(defun  RESETOSMODE (V1 V2)
  (if (and *LASTOSMODE* (/= (getvar "osmode") *LASTOSMODE*))
   (setvar "osmode" *LASTOSMODE*)
  )
)
(princ)
)  ;;;输入TT开始防丢失


本帖子中包含更多资源

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

x
 楼主| 发表于 2016-6-16 19:49:54 | 显示全部楼层
水洗可口可乐 发表于 2016-6-13 23:39
试试了下 没反应..

看不出什么反应,没运行前,捕捉是否有丢失现象,运行之后,是否还有丢失现象。
 楼主| 发表于 2016-6-16 19:49:03 | 显示全部楼层
水洗可口可乐 发表于 2016-6-13 23:39
试试了下 没反应..

看不出什么反应,没运行前,捕捉是否有丢失现象,运行之后,是否还有丢失现象。
 楼主| 发表于 2016-6-16 19:46:44 | 显示全部楼层
maiko 发表于 2016-6-13 23:41
其实没啥意义,用个错误处理功能,这些都不要了用反映器,CAD都慢了

自己写的当然可以加错误处理,如果用的不是自己写的,别人的程序不一定处理的好,我想原来写这个命令人的初衷也是这么考虑的。
 楼主| 发表于 2016-6-16 19:44:12 | 显示全部楼层
maiko 发表于 2016-6-13 23:41
其实没啥意义,用个错误处理功能,这些都不要了用反映器,CAD都慢了

自己写的当然可以加错误处理,如果用的不是自己写的,别人的程序不一定处理的好,我想原来写这个命令人的初衷也是这么考虑的。
发表于 2016-6-13 23:41:44 | 显示全部楼层
其实没啥意义,用个错误处理功能,这些都不要了用反映器,CAD都慢了
发表于 2016-6-13 23:39:46 | 显示全部楼层
试试了下 没反应..  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-19 05:17 , Processed in 0.169053 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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