Lisp更改全部的Z值
我正在寻找一个简单的Lisp例程,将所有选定实体的所有部分的Z值更改为特定值。它将用于简单的轮廓信息(一束线、多段线或文本)。理想情况下,该命令将请求选择集(或使用已选择的集),然后请求新高程(例如125'6”)。
谢谢,汤姆 看起来很简单,而且你已经计划好了常规。。。你只剩下写代码了。
测试隐含选择,如果不存在,则提示用户输入新的选择集和高程差。然后迭代选择集,移动选择集。你挂在我朋友身上的是哪一部分? 这是这一部分:“然后迭代选择集,移动选择集。”剩下的我可以做。
汤姆 这里不是给你代码,而是要使用的命令
从开始
ss长度ss
然后重复
然后Sname ss x
移动对象0,0,0,0,z
结束重复
也可能是foreach 我的任务是在实体中设置Z值的精确代码,特别是对于具有多个顶点(直线和多段线)的实体。Isense嵌套循环:每个实体外部,每个顶点内部。 如果我没有弄错的话,您可以很容易地用CHANGE命令来完成这项工作。
命令:更改
选择对象:指定对角点:210
选择对象:
指定更改点或[特性]:p
输入要更改的特性:e
指定新高程:127 谢谢。我要试试(有点太容易了,我应该考虑一下)。我认为它需要更具体的实体和顶点。我会告诉你事情的进展。可能明天。。。 汤姆,这可以简单地通过移动命令来完成。考虑将SS从0,0,0移动到0,0,10。
为了更好地了解正确编码需要做什么,只需手动执行任务,然后根据输入转录成代码。确保在多种情况下测试代码,以删除任何错误。
HTH公司 Move和Change/Elev命令都有效。移动命令更为复杂,因为首先需要计算出图元的高程。Change命令的局限性在于,如果一个图元中有多个Z值(例如垂直斜线),它不会执行任何操作。
就短期而言,变革方法正在发挥作用。我只需要先跑平。理想情况下,我想找到一个解决方案,在那里我可以实际更改Z值,而不是将每个实体作为一个整体处理。
谢谢。。。 正如你所发现的,你的问题并不简单。
更改有一些主要限制:
[列表]
[*]它无法处理具有不同Z轴值的实体(线3DFACES、重多段线网格、3DPolyline)
[*]实体必须在当前UCS中
[/列表]
使用MOVE时,您必须首先计算出当前高程,然后计算新高程。同样,必须处理具有不同高程的图元,多段线有其自己的特性(组38)
(entmod)也可以做到这一点,你只需要注意顺序实体(带有属性和重多段线的插入)
(and (setq ss (ssget))
(while (setq en (ssname ss 0))
(setq ed (entget en))
;;;DO YOUR THING HERE....
(ssdel en ss)))
希望这能帮助你走得更远-大卫
页:
[1]
2