face_drawer.py 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. from drawer.BaseDrawer import VentGraphDrawer, BaseDrawer
  2. from entity.Node import Node
  3. from entity.primitives import Empty, Face
  4. class FaceDrawer(BaseDrawer):
  5. def __init__(self, obj, msp, style):
  6. self.face_drawers = {
  7. 0: self.draw_face_style_0,
  8. }
  9. super().__init__(obj, msp, style)
  10. def initialize_data(self):
  11. pass
  12. def draw_agg(self):
  13. self.face_drawers[self.style]('agg')
  14. def draw_div(self):
  15. self.face_drawers[self.style]('div')
  16. def draw_face_style_0(self,type):
  17. assert isinstance(self.obj, Face)
  18. point_attr = 'agg_point' if type == 'agg' else 'div_point'
  19. boundary_points = []
  20. for node in self.obj.node_list:
  21. node = getattr(node, point_attr)
  22. boundary_points.append(node)
  23. hatch = self.msp.add_hatch(color=1)
  24. hatch.set_pattern_fill(name='JIS_WOOD', scale=20, angle=75)
  25. # 新版本直接添加多段线路径,无需 flags 参数
  26. hatch.paths.add_polyline_path(
  27. boundary_points,
  28. is_closed=True # 只需确保闭合即可
  29. )