如何在Lis时重置OSNAP
我想知道在终止lisp时是否可以将OSNAP重置回初始设置。例如,我的“OSMODE”初始设置为47,出于某种原因,我可能需要将“OSMODE”设置为0,以确保它不会捕捉到附近的对象,但如果我现在终止此lisp,我将不得不再次设置“OSMODE”。
有人能帮忙吗?
非常感谢 对不起,我不知道如何告诉你去做,但我知道一份写得好的清单会完全满足你的要求。
保存prelisp OSMODE设置,并在完成后或退出后恢复它(如果发生这种情况)。
有人肯定会澄清如何为你做这件事。
我打赌如果你去http://www.lee-mac.com/programs.html,
看看李·麦克的口吃,你会发现
从lisp中快速了解应该如何完成。 谢谢Dadgad,实际上我已经看了一段时间李的Lisp程序了,因为我真的不太擅长这个,我还没有找到任何解决方案,甚至,我不够聪明,无法理解。
我不知道这是否与*错误*有关,我仍在研究它。
(setq os (getvar 'osmode))
(setvar 'osmode 0)
;;; you codes here ...
(setvar 'osmode os)
谢谢Tharwat,我已经在我的lisp中包含了您建议的代码,我的问题是lisp在到达行(setvar“osmode”os)之前被终止,例如按ESC 错误子程序将处理该问题。。。
需要考虑的几件事。。(仅举一个例子)
(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)
)
您是否使用“Esc”终止LISP?
如果是这样,您将需要使用*错误*处理程序来重置环境。 我们并不是想通过按ESC键来终止LISP,我们习惯于在绘图过程中按ESC键!!这就是为什么我们总是丢失OSMODE设置的原因。
我正在查看Lee Mac编程中的*error*示例,如果我在error子程序中添加一行(setvar“osmode”my\u osmode),它似乎可以工作。我还在测试。
非常感谢。 另一种易于恢复的方法是关闭运行Osnap,而不是关闭所有Osnap设置。在这种情况下,崩溃只意味着重新打开OSNAP,例如使用F3。要在AutoLISP中关闭运行OSNAP,首先保存原始值,然后用16384屏蔽OSMODE——如下所示:
(setq OriginalOsmode (getvar "OSMODE"))
(setvar "OSMODE" (logior 16384 OriginalOsmode))
当处理NYRFPT程序并且没有错误处理程序时,这很方便,尽管错误处理程序肯定是最好的方法。当然,您仍然需要重置一行:
(setvar "OSMODE" OriginalOsmode)
你可以试试这个
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]