Lisp 在 Autocad 中查找空闭合多段线

问题描述 投票:0回答:1

我需要一个 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 条闭合多段线,在例程执行后,选择一条空的

Drawing

我尝试在 Autolisp 论坛上查找,但只找到 Lisp 来删除封闭折线之外的对象或类似的东西,我需要例程来生成 lisp 文档。

automation lisp autocad autodesk autodesk-inventor
1个回答
0
投票

您需要构建一个执行以下步骤的程序:

  • 使用

    ssget
    "X"
    模式字符串和适当的选择过滤器(参考)获取所有候选折线的初始选择集。

  • 使用此处描述的任何方法迭代选择。

  • 对于每条折线,获取折线顶点集 - 您可以使用“massoc”函数来执行此操作,如此处所述。

  • 对折线的范围进行缩放,以便下一个图形选择准确。

  • 尝试使用

    ssget
    以及
    "WP"
    模式字符串和折线顶点列表(以及可选的过滤器列表来获取目标图层上的目标对象(如果适用))。

  • 执行前一缩放可恢复原始缩放。

  • 确保任何返回的选择集不包含当前正在处理的折线 - 如果是这样,请使用

    ssdel
    将其从选择中删除。

  • 如果结果选择集为空,则折线为空;否则折线包含一些对象,因此应从原始集合中丢弃。

© www.soinside.com 2019 - 2024. All rights reserved.