BIGAL 发表于 2022-7-5 19:14:15

Broncos15您是按esc键还是Enter键停止输入?如果esc,那么它可能在不执行最后一个setvar Rkmcswain的情况下退出lisp?

tombu 发表于 2022-7-5 19:19:13

 
我的“对象捕捉光标菜单”(Object Snap Cursor Menu)中有一个弹出按钮,使用宏
^P(ai_onoff "osnapz") ^P
$(eval,Elev = $(if,$(and,1,$(getvar,osnapz)),$(getvar,elevation),"Snap"))作为显示名称。

broncos15 发表于 2022-7-5 19:21:24

BIGAL,不,我正在按enter键,这就是为什么我不明白为什么它没有将osnapz设置回0。

tombu 发表于 2022-7-5 19:23:56

 
将其设置为0,并使用“与实际PLINE命令相同的提示”运行PLINE命令在我的电脑上。
加载lisp后是否运行PLINEZERO命令?文本屏幕上显示什么?
我得到的是。

broncos15 发表于 2022-7-5 19:26:38

 
我在我的文本屏幕上得到了相同的显示。然而,当我返回检查以确保一切正常工作时,我看到osnapz是1,而不是设置回0。由于某种原因,lisp没有运行最后一行代码。

tombu 发表于 2022-7-5 19:31:42

这应该可以做到。
(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)
)

broncos15 发表于 2022-7-5 19:33:06

 
 
汤布,谢谢你的帮助。我对你的代码做了一个小小的调整:
 
 
10
不幸的是,它仍然将osnapz保持在1,而不是0。在运行lisp之前,我将osnapz设置为0,它不会将其放回原处。

iconeo 发表于 2022-7-5 19:37:20

 
这似乎对我不起作用。即使我更改高程,它的读数也始终为Elev=0。它应该是动态变化的吗?

tombu 发表于 2022-7-5 19:41:45

 
不确定该告诉您什么,在运行命令之前,您和我的代码都试过了,并且都将osnapz设置为value。您还应该添加“elevation”作为局部变量。

broncos15 发表于 2022-7-5 19:44:59

 
 
我让它工作了。谢谢你的帮助。我对lisp很陌生,典型变量和局部变量之间有什么区别?
页: 1 [2]
查看完整版本: Lisp始终在z处绘制pline