从 DXF 导入时如何找到连接的直线和弧线?
How to find which Lines and Arcs are connected when imported from 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_point
和 Arc.end_point
属性,这将 return 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)
根据需要设置绝对公差。
我正在使用 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_point
和 Arc.end_point
属性,这将 return 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)
根据需要设置绝对公差。