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

Python 如何查找从DXF导入时连接的直线和圆弧?,python,autocad,dxf,ezdxf,Python,Autocad,Dxf,Ezdxf,我正在使用将.dxf文件导入Python。它工作顺利。我得到一个直线和圆弧的列表 如何确定哪些直线和圆弧相互连接?它们是否以某种方式建立了索引,或者我是否需要搜索直线和圆弧的起点和终点,然后进行匹配 我需要找到的是.dxf文件中的闭合行 必须手动匹配直线和圆弧端点 获取具有默认拉伸(0、0、1)的圆弧的端点: 添加到弧中心: s = start_point + arc.dxf.center e = end_point + arc.dxf.center 如果由arc.dxf.extraction

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

如何确定哪些直线和圆弧相互连接?它们是否以某种方式建立了索引,或者我是否需要搜索直线和圆弧的起点和终点,然后进行匹配


我需要找到的是
.dxf
文件中的闭合行

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

获取具有默认拉伸(0、0、1)的圆弧的端点:

添加到弧中心:

s = start_point + arc.dxf.center
e = end_point + arc.dxf.center
如果由
arc.dxf.extraction
定义的对象坐标系(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
属性,这些属性将返回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)

根据需要设置绝对公差。

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

获取具有默认拉伸(0、0、1)的圆弧的端点:

添加到弧中心:

s = start_point + arc.dxf.center
e = end_point + arc.dxf.center
如果由
arc.dxf.extraction
定义的对象坐标系(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
属性,这些属性将返回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)

根据需要设置绝对公差。

没有内置索引。你需要自己构建,没有内置索引。你需要自己建造它。非常有用谢谢非常有用