论坛里搜索到的防止捕捉丢失,使用效果很好,就是在命令执行过程中,捕捉模式改变后,比如:在绘图过程中,通过 草图设置 对象捕捉 界面人工更改捕捉模式后,命令结束时仍为最初的捕捉方式,这里觉得有点不方便,现在修改成可记住中途捕捉模式的改变。
原防止捕捉丢失代码: - <blockquote>(or *osmodemonitor* (setq *osmodemonitor*
修改后的代码: - (defun C:TT ()
- ;;
- ;
- ;
- ;(vlr-remove-all :vlr-sysvar-reactor)
- ;(vlr-remove-all :vlr-lisp-reactor)
- (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开始防丢失
每次命令之后捕捉一直是打开状态
|