我需要一个 Lisp 例程来在一组选定的封闭多段线中查找,这些多段线内部是空的,我使用的是 Autocad 2021,
使用List命令得到的闭合多段线的信息如下:
命令:列表 1 找到 LWPOLYLINE 图层:“MyLayer” 空间:模型空间 手柄=2c3 关闭 恒定宽度 0.0000 区域 300.5426 周长 77.3595 在点 X=4707.3509 Y=1402.3153 Z= 0.0000 在点 X=4735.6706 Y=1402.3153 Z= 0.0000 在点 X=4728.8578 Y=1412.4497 Z= 0.0000 在点 X=4715.4995 Y=1414.5833 Z= 0.0000 在点 X=4703.6106 Y=1412.9831 Z= 0.0000
我的测试图如下图所示,有 2 条闭合多段线,里面有一个块,另一条是空的,我需要选择 3 条闭合多段线,在例程执行后,选择一条空的
我尝试在 Autolisp 论坛上查找,但只找到 Lisp 来删除封闭折线之外的对象或类似的东西,我需要例程来生成 lisp 文档。
您需要构建一个执行以下步骤的程序:
使用
ssget
与 "X"
模式字符串和适当的选择过滤器(参考)获取所有候选折线的初始选择集。
使用此处描述的任何方法迭代选择。
对于每条折线,获取折线顶点集 - 您可以使用“massoc”函数来执行此操作,如此处所述。
对折线的范围进行缩放,以便下一个图形选择准确。
尝试使用
ssget
以及 "WP"
模式字符串和折线顶点列表(以及可选的过滤器列表来获取目标图层上的目标对象(如果适用))。
执行前一缩放可恢复原始缩放。
确保任何返回的选择集不包含当前正在处理的折线 - 如果是这样,请使用
ssdel
将其从选择中删除。
如果结果选择集为空,则折线为空;否则折线包含一些对象,因此应从原始集合中丢弃。