Вы должны сопоставить конечные точки линии и дуги вручную.
Получите конечные точки дуг с экструзией по умолчанию (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
Если система координат объекта (OCS), определенная arc.dxf.extrusion
, отличается от (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)
Установите абсолютный допуск в соответствии с вашими потребностями.
person
mozman
schedule
20.11.2019