drill_drawer.py 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. from drawer.BaseDrawer import VentGraphDrawer, BaseDrawer
  2. from entity.Node import Node
  3. from entity.primitives import Drill
  4. class DrillDrawer(BaseDrawer):
  5. def __init__(self, obj, msp, style):
  6. self.drill_drawers = {
  7. 0: self.draw_duct_style_0,
  8. }
  9. super().__init__(obj, msp, style)
  10. def initialize_data(self):
  11. pass
  12. def draw_agg(self):
  13. self.drill_drawers[self.style]('agg')
  14. def draw_div(self):
  15. self.drill_drawers[self.style]('div')
  16. def draw_duct_style_0(self,type):
  17. assert isinstance(self.obj, Drill)
  18. point_attr = 'agg_point' if type == 'agg' else 'div_point'
  19. for line in self.obj.line_list:
  20. i = 0
  21. while i < len(line) - 1:
  22. node = line[i]
  23. next_node = line[i + 1]
  24. node = getattr(node,point_attr)
  25. next_node = getattr(next_node,point_attr)
  26. self.msp.add_line(node, next_node, dxfattribs={"layer": f"图层{self.obj.layer_id}"})
  27. i = i + 1