123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- from core import rotate_point_around_another
- from drawer.BaseDrawer import BaseDrawer, VentGraphDrawer
- from entity.primitives import Gate
- from ezdxf import math as mt
- from dict.model_config import _get_app_name, _global_model_configs
- class AutoGateDrawer(VentGraphDrawer):
- def __init__(self, obj, msp, style):
- super().__init__(obj, msp, style)
- self.gate_drawers = {
- 0: self.draw_gate_style_0,
- }
- def initialize_data(self):
- self.obj.color = (255, 255, 255)
- def draw_obj(self, center, route):
- self.gate_drawers[self.style](center, route)
- def draw_gate_style_0(self, center, route):
- # a1
- # c2(|°c1
- # 。a2
- a1 = center[0], center[1] + self.obj.width * 0.7
- a2 = center[0], center[1] - self.obj.width * 0.7
- c1 = center[0], center[1]
- c2 = center[0] - 0.5 * self.obj.width, center[1]
- mt_carc = mt.arc.ConstructionArc()
- arc_1 = mt_carc.from_3p(start_point=a1, def_point=c2, end_point=a2)
- arc = self.msp.add_arc(center=arc_1.center, radius=arc_1.radius, start_angle=arc_1.start_angle,
- end_angle=arc_1.end_angle,
- dxfattribs={"layer": f"图层{self.obj.layer_id}", "lineweight": 50})
- arc.rgb = self.obj.color
- hatch = self.msp.add_hatch()
- hatch.set_pattern_fill('SOLID') # 'SOLID'表示实心填充,color=1为红色
- # 添加边缘路径(圆形边界)
- edge_path = hatch.paths.add_edge_path()
- edge_path.add_arc(
- center=c1,
- radius=self.obj.width * 0.1,
- start_angle=0, # 起始角度0度
- end_angle=360, # 结束角度360度,形成完整圆
- ccw=True # 逆时针方向
- )
- edge_path.add_arc(
- center=c2,
- radius=self.obj.width * 0.1,
- start_angle=0, # 起始角度0度
- end_angle=360, # 结束角度360度,形成完整圆
- ccw=True # 逆时针方向
- )
|