我的“对象捕捉光标菜单”(Object Snap Cursor Menu)中有一个弹出按钮,使用宏
^P(ai_onoff "osnapz") ^P
$(eval,Elev = $(if,$(and,1,$(getvar,osnapz)),$(getvar,elevation),"Snap"))作为显示名称。 BIGAL,不,我正在按enter键,这就是为什么我不明白为什么它没有将osnapz设置回0。
将其设置为0,并使用“与实际PLINE命令相同的提示”运行PLINE命令在我的电脑上。
加载lisp后是否运行PLINEZERO命令?文本屏幕上显示什么?
我得到的是。
我在我的文本屏幕上得到了相同的显示。然而,当我返回检查以确保一切正常工作时,我看到osnapz是1,而不是设置回0。由于某种原因,lisp没有运行最后一行代码。 这应该可以做到。
(defun c:plinezero ( / osnapz cmdecho)
(setvar "elevation" 0.0)
(setq osnapz (getvar "osnapz"))
(setvar "osnapz" 1)
(setq cmdecho (getvar "cmdecho"))
(setvar "cmdecho" 1)
(command "._PLINE")
(while (> (logand (getvar "CMDACTIVE") 1) 0)
(command PAUSE)
)
(setvar "osnapz" osnapz)
(setvar "cmdecho" cmdecho)
(princ)
)
汤布,谢谢你的帮助。我对你的代码做了一个小小的调整:
10
不幸的是,它仍然将osnapz保持在1,而不是0。在运行lisp之前,我将osnapz设置为0,它不会将其放回原处。
这似乎对我不起作用。即使我更改高程,它的读数也始终为Elev=0。它应该是动态变化的吗?
不确定该告诉您什么,在运行命令之前,您和我的代码都试过了,并且都将osnapz设置为value。您还应该添加“elevation”作为局部变量。
我让它工作了。谢谢你的帮助。我对lisp很陌生,典型变量和局部变量之间有什么区别?
页:
1
[2]