在 .dxf 中有 Polyline 对象,它们本身就是圆、直线、圆弧等的数组。我需要找到拱门中心的坐标。
图书馆正在使用中import ezdxf
首先,您需要找到拱门本身,为此,您需要分割折线:
for file in glob.glob(os.path.join(old_dir_path, '*.dxf')):
# Открываем чертеж
doc = ezdxf.readfile(file)
msp = doc.modelspace()
# Получаем все объекты из разбитых полиний
polys = [poly.explode() for polyin msp if poly.dxftype() == 'LWPOLYLINE']
print(polys)
问题 - 如何分割折线?在 Nanocad 中,这是 EXPLODE 功能 - 它分割选定的对象。这在 python 中有效,但结果证明对象是某些对象<ezdxf.query.EntityQuery object at 0x79796c41ab90>- 不可能从中提取名称或属性。
有没有人做过类似的事情,请告诉我解决方案
我找到了一个解决方案,也许在枚举元素方面不是最优化的,但它有效 - 它搜索复杂的对象(折线),将它们分解为基元,并检查每个基元以查看它是否属于拱门。
我的原始版本只是有一个逻辑错误,因为我不明白ezdxf库是如何工作的。