highflybird 发表于 2022-7-5 23:40:16

如何避免丢失Osnap

嘿伙计们,
如何避免丢失Osnap?
经常用一些lisp,后来发现Osnap丢了
谢谢你的帮助!

MSasu 发表于 2022-7-5 23:52:39

您需要有权访问AutoLISP代码。主动Osnap模式存储在OSMODE系统变量中;程序员将其设置为0,以不干扰其代码执行的绘制操作,但在处理完成时以及出现错误时,应将其恢复。
(setq userOsm (getvar "OSMODE"))   ;retain user setup
(setvar "OSMODE" 0)                ;disable temporary
...
(setvar "OSMODE" userOsm)          ;restore user setup

flyfox1047 发表于 2022-7-5 23:56:30

试试这个:
(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)
)
)

BIGAL 发表于 2022-7-6 00:06:08

还可以查看错误陷阱,并将重置osmode恢复到原来的状态,这是我们对osmode和filedia进行2键重置的最简单方式。

Jebus_kfc 发表于 2022-7-6 00:12:55

 
 
 
Flyfox1047-如何在现有程序中实现这一点?我有多个程序,我想添加一些错误处理,这样当用户“逃逸”时,不会导致他们失去所有为程序更改的变量。提前感谢!

MSasu 发表于 2022-7-6 00:13:54

请查看李的教程。

Jebus_kfc 发表于 2022-7-6 00:22:49

谢谢MSasu,我想我终于明白了!

flyfox1047 发表于 2022-7-6 00:31:13

 
将其放在代码的开头,或放在ACAD20XDOC中。lsp

MSasu 发表于 2022-7-6 00:34:28

Flyfox1047,请考虑使用acad。lsp/阿卡多克。lsp自动加载器代替acad??。lsp/acad20??文件。lsp文件;这些是为系统目的保留的,不建议附加到它们上(即可能被修复或service pack安装所取代)。

Jebus_kfc 发表于 2022-7-6 00:43:34

谢谢你们的帮助。我最初的问题是,如果有人运行我的程序是esc。从程序中,所有切换的变量都将丢失。所以我所做的就是在我的getvar代码之后添加了*错误*代码。此外,在*错误*代码中,我重置了所有原始变量。所以现在它工作得很好!!几年来,我一直在努力解决这个问题,在你的帮助下,我成功了,谢谢!!!
页: [1]
查看完整版本: 如何避免丢失Osnap