def test_circle_flattening(r, s, e, sagitta, count): arc = Arc.new(dxfattribs={ 'radius': r, 'start_angle': s, 'end_angle': e, }) assert len(list(arc.flattening(sagitta))) == count
def test_from_arc(): from ezdxf.entities.arc import Arc arc = Arc.new(dxfattribs={'center': (2, 2, 2), 'radius': 3}) ellipse = Ellipse.from_arc(arc) assert ellipse.dxf.center == (2, 2, 2) assert ellipse.dxf.major_axis == (3, 0, 0) assert ellipse.dxf.ratio == 1 assert ellipse.dxf.start_param == 0 assert math.isclose(ellipse.dxf.end_param, math.pi * 2)
def test_arc_to_code(): from ezdxf.entities.arc import Arc entity = Arc.new(handle='ABBA', owner='0', dxfattribs={ 'color': '7', 'center': (1, 2, 3), 'radius': 2, 'start_angle': 30, 'end_angle': 60, }) new_entity = translate_to_code_and_execute(entity) for name in ('color', 'center', 'radius', 'start_angle', 'end_angle'): assert new_entity.get_dxf_attrib(name) == entity.get_dxf_attrib(name)
def test_angles(): arc = Arc.new(dxfattribs={'radius': 1, 'start_angle': 30, 'end_angle': 60}) assert tuple(arc.angles(2)) == (30, 60) assert tuple(arc.angles(3)) == (30, 45, 60) arc.dxf.start_angle = 180 arc.dxf.end_angle = 0 assert tuple(arc.angles(2)) == (180, 0) assert tuple(arc.angles(3)) == (180, 270, 0) arc.dxf.start_angle = -90 arc.dxf.end_angle = -180 assert tuple(arc.angles(2)) == (270, 180) assert tuple(arc.angles(4)) == (270, 0, 90, 180)
def test_arc_default_ocs(): arc = Arc.new(dxfattribs={'center': (2, 3, 4), 'thickness': 2, 'start_angle': 30, 'end_angle': 60}) # 1. rotation - 2. scaling - 3. translation m = Matrix44.chain(Matrix44.scale(2, 2, 3), Matrix44.translate(1, 1, 1)) # default extrusion is (0, 0, 1), therefore scale(2, 2, ..) is a uniform scaling in the xy-play of the OCS arc.transform(m) assert arc.dxf.center == (5, 7, 13) assert arc.dxf.extrusion == (0, 0, 1) assert arc.dxf.thickness == 6 assert math.isclose(arc.dxf.start_angle, 30, abs_tol=1e-9) assert math.isclose(arc.dxf.end_angle, 60, abs_tol=1e-9) arc.transform(Matrix44.z_rotate(math.radians(30))) assert math.isclose(arc.dxf.start_angle, 60, abs_tol=1e-9) assert math.isclose(arc.dxf.end_angle, 90, abs_tol=1e-9)
def test_arc_to_code(): from ezdxf.entities.arc import Arc entity = Arc.new( handle="ABBA", owner="0", dxfattribs={ "color": "7", "center": (1, 2, 3), "radius": 2, "start_angle": 30, "end_angle": 60, }, ) new_entity = translate_to_code_and_execute(entity) for name in ("color", "center", "radius", "start_angle", "end_angle"): assert new_entity.get_dxf_attrib(name) == entity.get_dxf_attrib(name)