从DXF导入时,如何查找连接的直线和圆弧



我正在使用ezdxf.dxf文件导入Python。它工作顺利。我得到一个直线和圆弧的列表。

如何计算出哪些直线和圆弧是相互连接的?它们是以某种方式索引的,还是我需要搜索直线和圆弧的起点和终点,然后匹配它们?

我需要查找的是.dxf文件中的封闭行。

您必须手动匹配直线和圆弧端点。

使用默认拉伸(0,0,1(获取圆弧的端点:

from ezdxf.math import Vector
start_point = Vector.from_deg_angle(arc.dxf.start_angle, arc.dxf.radius)
end_point = Vector.from_deg_angle(arc.dxf.end_angle, arc.dxf.radius)

添加到弧中心:

s = start_point + arc.dxf.center
e = end_point + arc.dxf.center

如果arc.dxf.extrusion定义的对象坐标系(OCS(不同于(0,0,1(,则必须进行到世界坐标系(WCS(的转换:

ocs = arc.ocs()
s = ocs.to_wcs(s)
e = ocs.to_wcs(e)

下一个ezdxf版本v0.11将具有Arc.start_pointArc.end_point属性,这将返回WCS坐标。

重要提示:不要与等号运算符(==(进行比较,使用math.isclose()或更好的Vector.isclose(),如:

s.isclose(line.dxf.start, abs_tol=1e-6)
e.isclose(line.dxf.start, abs_tol=1e-6)
s.isclose(line.dxf.end, abs_tol=1e-6)
e.isclose(line.dxf.end, abs_tol=1e-6)

根据您的需要设置绝对公差。

最新更新