您必须手动匹配直线和圆弧端点。
使用默认拉伸 (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)
Run Code Online (Sandbox Code Playgroud)
添加到圆弧中心:
s = start_point + arc.dxf.center
e = end_point + arc.dxf.center
Run Code Online (Sandbox Code Playgroud)
如果 定义的对象坐标系 (OCS)arc.dxf.extrusion与 (0, 0, 1) 不同,则必须转换为世界坐标系 (WCS):
ocs = arc.ocs()
s = ocs.to_wcs(s)
e = ocs.to_wcs(e)
Run Code Online (Sandbox Code Playgroud)
下一个 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)
Run Code Online (Sandbox Code Playgroud)
根据您的需要设置绝对公差。
| 归档时间: |
|
| 查看次数: |
1339 次 |
| 最近记录: |