Source code for pyleecan.GUI.Dxf.dxf_to_pyleecan_list
from ...Classes.Segment import Segment
from ...Classes.Arc1 import Arc1
from ...Classes.Arc2 import Arc2
from math import cos, sin, pi
from logging import getLogger
from ...loggers import GUI_LOG_NAME
[docs]def dxf_to_pyleecan_list(entities):
"""
Create the pyleecan object corresponding to the DXF entities
Currently handles Line and Arc
"""
obj_list = []
for entity in entities:
dxftype = entity.dxftype()
dxf = entity.dxf
if dxftype == "LINE": # {"LINE", "XLINE", "RAY"}:
start = complex(*dxf.start[:-1])
end = complex(*dxf.end[:-1])
obj_list.append(Segment(start, end))
elif dxftype == "ARC":
start_angle = dxf.start_angle / 180 * pi
end_angle = dxf.end_angle / 180 * pi
if start_angle > pi:
start_angle -= 2 * pi
if end_angle > pi:
end_angle -= 2 * pi
center = complex(*dxf.center[:-1])
begin = (
dxf.center[0]
+ dxf.radius * cos(start_angle)
+ 1j * (dxf.center[1] + dxf.radius * sin(start_angle))
)
end = (
dxf.center[0]
+ dxf.radius * cos(end_angle)
+ 1j * (dxf.center[1] + dxf.radius * sin(end_angle))
)
obj_list.append(
Arc1(begin=begin, end=end, radius=dxf.radius, is_trigo_direction=True)
)
else:
getLogger(GUI_LOG_NAME).warning(
"Unable to load dxftype="
+ str(dxftype)
+ ". Removing element from preview"
)
return obj_list