LauKwokFai 发表于 2022-7-6 07:35:03

如何在Lis时重置OSNAP

我想知道在终止lisp时是否可以将OSNAP重置回初始设置。
 
例如,我的“OSMODE”初始设置为47,出于某种原因,我可能需要将“OSMODE”设置为0,以确保它不会捕捉到附近的对象,但如果我现在终止此lisp,我将不得不再次设置“OSMODE”。
 
有人能帮忙吗?
 
 
非常感谢

Dadgad 发表于 2022-7-6 07:45:05

对不起,我不知道如何告诉你去做,但我知道一份写得好的清单会完全满足你的要求。
保存prelisp OSMODE设置,并在完成后或退出后恢复它(如果发生这种情况)。
有人肯定会澄清如何为你做这件事。
我打赌如果你去http://www.lee-mac.com/programs.html,
看看李·麦克的口吃,你会发现
从lisp中快速了解应该如何完成。

LauKwokFai 发表于 2022-7-6 07:51:33

谢谢Dadgad,实际上我已经看了一段时间李的Lisp程序了,因为我真的不太擅长这个,我还没有找到任何解决方案,甚至,我不够聪明,无法理解。
 
我不知道这是否与*错误*有关,我仍在研究它。

Tharwat 发表于 2022-7-6 07:59:42


(setq os (getvar 'osmode))
(setvar 'osmode 0)
;;; you codes here ...

(setvar 'osmode os)

LauKwokFai 发表于 2022-7-6 08:06:59

谢谢Tharwat,我已经在我的lisp中包含了您建议的代码,我的问题是lisp在到达行(setvar“osmode”os)之前被终止,例如按ESC

Tharwat 发表于 2022-7-6 08:08:38

错误子程序将处理该问题。。。
 
需要考虑的几件事。。(仅举一个例子)
 

(defun c:Test(/ *error* p1 p2 os)
(defun *error*(x)
   (if os
   (setvar 'osmode os))
   (if (eq (strcase x) "*CANCEL*")
   (princ "\n cancelled ...."))
   (princ)
   )

(setq os (getvar 'osmode))
(setvar 'osmode 0)
(if (and (setq p1 (getpoint "\n Specify first point :"))
          (setq p2 (getpoint "\n nexi point :" p1))
          )
   (command "_.line" p1 p2 "")
   (princ)
   )

(setvar 'osmode os)
(princ)
)

Lee Mac 发表于 2022-7-6 08:21:13

 
您是否使用“Esc”终止LISP?
 
如果是这样,您将需要使用*错误*处理程序来重置环境。

LauKwokFai 发表于 2022-7-6 08:26:24

我们并不是想通过按ESC键来终止LISP,我们习惯于在绘图过程中按ESC键!!这就是为什么我们总是丢失OSMODE设置的原因。
 
我正在查看Lee Mac编程中的*error*示例,如果我在error子程序中添加一行(setvar“osmode”my\u osmode),它似乎可以工作。我还在测试。
 
 
非常感谢。

neophoible 发表于 2022-7-6 08:33:57

另一种易于恢复的方法是关闭运行Osnap,而不是关闭所有Osnap设置。在这种情况下,崩溃只意味着重新打开OSNAP,例如使用F3。要在AutoLISP中关闭运行OSNAP,首先保存原始值,然后用16384屏蔽OSMODE——如下所示:
 

(setq OriginalOsmode (getvar "OSMODE"))
(setvar "OSMODE" (logior 16384 OriginalOsmode))

 
当处理NYRFPT程序并且没有错误处理程序时,这很方便,尽管错误处理程序肯定是最好的方法。当然,您仍然需要重置一行:
 

(setvar "OSMODE" OriginalOsmode)

ketxu 发表于 2022-7-6 08:39:08

你可以试试这个
http://xaydungit.vn/diendan/showthread.php?3551-Reset-l%E1%BA%A1i bi%E1%BA%BFn-OSNAP-sau-khi-d%C3%B9ng lisp&高亮显示=Reset+OSNAP
 
只需加载它
页: [1]
查看完整版本: 如何在Lis时重置OSNAP