使用 Ezdxf Python 获取给定闭合折线内部或交叉的所有实体

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

有没有任何解决方案可以使用 ezdxf 库执行以下操作 输入:

  • DXF 文件.dxf
  • 列出闭合多边形的坐标(2D) 输出:
  • 此多边形内部(或交叉)的所有实体(圆、线影线...),每个实体都有属性(图层、颜色)

我认为query方法无法获取给定区域中的实体。 那么请问有什么解决办法吗! 谢谢!

我尝试过查询https://ezdxf.readthedocs.io/en/stable/tutorials/getting_data.html#tut-getting-data

但没有提供按坐标过滤的可能性...

python geometry autocad cad ezdxf
1个回答
0
投票

可能没有任何直接的函数可以做到这一点,但你可以做的是:

  • 使用 i.dxf.handle 通过句柄选择多边形,其中 i 是可迭代的模型空间。为此,您需要了解句柄。如果您不知道句柄,您可以将其作为唯一的多边形并使用 i.dxftype() == 文档中的任何类型。
  • 接下来,迭代模型空间并检查穿过多边形任意两个顶点的线是否也穿过任何其他实体。

该解决方案可能需要您为每个实体类型创建一个完整的 if-elif-else 树,并研究一些坐标几何。例如,一个圆将要求您检查直线与其中心的垂直距离是否小于或等于其半径。同时,还需要看看线段的至少一端距圆心的距离是否小于或等于其半径。

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