如何避免丢失Osnap
嘿伙计们,如何避免丢失Osnap?
经常用一些lisp,后来发现Osnap丢了
谢谢你的帮助! 您需要有权访问AutoLISP代码。主动Osnap模式存储在OSMODE系统变量中;程序员将其设置为0,以不干扰其代码执行的绘制操作,但在处理完成时以及出现错误时,应将其恢复。
(setq userOsm (getvar "OSMODE")) ;retain user setup
(setvar "OSMODE" 0) ;disable temporary
...
(setvar "OSMODE" userOsm) ;restore user setup 试试这个:
(defun resetosmode (v1 v2 /)
(if (/= (getvar "osmode") 1015)
(setvar "osmode" 1015)
)
(princ)
)
(vlr-editor-reactor
nil
'((:vlr-lispEnded . ResetOsmode)
(:vlr-lispCancelled . ResetOsmode)
(:vlr-commandEnded . ResetOsmode)
(:vlr-commandCancelled . ResetOsmode)
(:vlr-commandFailed . ResetOsmode)
)
) 还可以查看错误陷阱,并将重置osmode恢复到原来的状态,这是我们对osmode和filedia进行2键重置的最简单方式。
Flyfox1047-如何在现有程序中实现这一点?我有多个程序,我想添加一些错误处理,这样当用户“逃逸”时,不会导致他们失去所有为程序更改的变量。提前感谢! 请查看李的教程。 谢谢MSasu,我想我终于明白了!
将其放在代码的开头,或放在ACAD20XDOC中。lsp Flyfox1047,请考虑使用acad。lsp/阿卡多克。lsp自动加载器代替acad??。lsp/acad20??文件。lsp文件;这些是为系统目的保留的,不建议附加到它们上(即可能被修复或service pack安装所取代)。 谢谢你们的帮助。我最初的问题是,如果有人运行我的程序是esc。从程序中,所有切换的变量都将丢失。所以我所做的就是在我的getvar代码之后添加了*错误*代码。此外,在*错误*代码中,我重置了所有原始变量。所以现在它工作得很好!!几年来,我一直在努力解决这个问题,在你的帮助下,我成功了,谢谢!!!
页:
[1]