Lisp始终在z处绘制pline
我之前不小心把这个贴错了论坛。我有一个快速的问题,关于我在lisp例程中做了什么错误。我正在尝试更正lisp例程,该例程将我绘制的多段线的高程设置为高程0,无论捕捉到的点是什么。我不熟悉lisp例程,所以我仍在学习很多,我很难看到我做错了什么。我的lisp例程是:(defun c:plinezero ()
(setvar "Osnapz" 1)
(command "pline")
(command "osnap" "0")
(princ)
)
一种方法是这样。
(defun c:plinezero ()
(setvar "elevation" 0.0)
(setvar "osnapz" 1)
(command "._PLINE")
(while (= (logand (getvar "CMDACTIVE") 1) 1)
(command PAUSE)
)
(princ)
)
注意,osnapz=1意味着它将使用当前高程,而不一定是0.0
您可能希望保存这两个系统变量的当前值,然后再恢复它们。
这里没有显示。 非常感谢你的帮助!所以我使用了你发送的代码,这很有效。我的问题是,该命令没有与实际pline命令相同的提示。我之所以要添加提示,是为了让不熟悉CAD的人能够理解pline的一切。我在末尾添加了一行,我认为这会将osnapz设置回0,但它似乎不是出于某种原因这样做的。
代码:
(defun c:plinezero()
(setvar“elevation”0.0)
(setvar“osnapz”1)
(命令“_PLINE”)
(while(=(logand(getvar“CMDACTIVE”)1)1)
(命令暂停)
)
(setvar“osnapz”0)
(普林斯)
) 另一个选项是简单地设置选项>>绘图>>用当前高程替换Z值 iconeo,有没有一种命令行方式可以做到这一点(即,我可以不用键入命令行选项,然后选择“绘图”选项卡,然后选择“替换z”)吗
是的。
(command "setvar" "osnapz" "1")
我们把它放在我们的阿卡多克。lsp,因此它适用于所有用户。我们很少在3D环境下工作,所以如果用户确实需要它,就必须将其关闭。
我们也把这个放进去,以防有人对他们的UCS发疯。
(if (/= (getvar "WorldUCS") 1)
(alert "Warning. Your UCS is not set to world.")
) Iconeo,谢谢你的帮助。这就是我试图合并到原始命令中的内容,但我无法使用lisp例程将osnapz设置回0。这很重要,因为我们在3D中广泛工作。
如果是这样的话,我会设置一个按钮用作切换。像这样:
^C^C osnapz $M=$(-,1,$(getvar,osnapz))
或
(if (zerop (getvar "osnapz"))(setvar "osnapz" 1)(setvar "osnapz" 0))
然后,当你需要在模式之间切换时,只需点击一下即可。
我喜欢UCS大喊Iconeo,对于那些在这些事情上没有经验的人来说,非常有帮助。
关于一致性,有很多话要说。
当图形单位不是公制时,我使用modemacro发出警报,因为这是我们的stanard MO。 哈哈,我用同样的当不在帝国。。。然后我们在墨西哥找到了很多工作。。。
页:
[1]
2