wind_bridge_drawer.py 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. import math
  2. import core
  3. from drawer.BaseDrawer import VentGraphDrawer
  4. class WindBridgeDrawer(VentGraphDrawer):
  5. def initialize_data(self):
  6. self.obj.color = (255, 255, 255)
  7. def draw_obj(self, center, route):
  8. width = self.obj.width * 1.7
  9. line_top_middle = center[0], center[1] + width / 2
  10. line_top_left = line_top_middle[0] - width * 1.25 / 2, line_top_middle[1]
  11. line_top_left_2 = line_top_left[0] - math.cos(math.pi / 6) * width * 0.625, line_top_left[1] + math.sin(
  12. math.pi / 6) * width * 0.625
  13. line_top_right = core.symmetric_point(line_top_left, line_top_middle)
  14. line_top_right_2 = core.symmetric_point(line_top_left_2, (line_top_middle[0], line_top_middle[1] + math.sin(
  15. math.pi / 6) * width * 0.625))
  16. line_bottom_middle = center[0], center[1] - width / 2
  17. line_bottom_left = line_bottom_middle[0] - width * 1.25 / 2, line_bottom_middle[1]
  18. line_bottom_left_2 = line_bottom_left[0] - math.cos(math.pi / 6) * width * 0.625, line_bottom_left[
  19. 1] - math.sin(
  20. math.pi / 6) * width * 0.625
  21. line_bottom_right = core.symmetric_point(line_bottom_left, line_bottom_middle)
  22. line_bottom_right_2 = core.symmetric_point(line_bottom_left_2,
  23. (line_bottom_middle[0], line_bottom_middle[1] - math.sin(
  24. math.pi / 6) * width * 0.625))
  25. line_top_left = core.rotate_point_around_another(line_top_left, center, route)
  26. line_top_left_2 = core.rotate_point_around_another(line_top_left_2, center, route)
  27. line_top_right = core.rotate_point_around_another(line_top_right, center, route)
  28. line_top_right_2 = core.rotate_point_around_another(line_top_right_2, center, route)
  29. line_bottom_left = core.rotate_point_around_another(line_bottom_left, center, route)
  30. line_bottom_left_2 = core.rotate_point_around_another(line_bottom_left_2, center, route)
  31. line_bottom_right = core.rotate_point_around_another(line_bottom_right, center, route)
  32. line_bottom_right_2 = core.rotate_point_around_another(line_bottom_right_2, center, route)
  33. line = self.msp.add_line(line_top_left, line_top_left_2, dxfattribs={"layer": f"图层{self.obj.layer_id}"})
  34. line.rgb = self.obj.color
  35. line = self.msp.add_line(line_top_right, line_top_left, dxfattribs={"layer": f"图层{self.obj.layer_id}"})
  36. line.rgb = self.obj.color
  37. line = self.msp.add_line(line_top_right, line_top_right_2, dxfattribs={"layer": f"图层{self.obj.layer_id}"})
  38. line.rgb = self.obj.color
  39. line = self.msp.add_line(line_bottom_left, line_bottom_right, dxfattribs={"layer": f"图层{self.obj.layer_id}"})
  40. line.rgb = self.obj.color
  41. line = self.msp.add_line(line_bottom_right, line_bottom_right_2, dxfattribs={"layer": f"图层{self.obj.layer_id}"})
  42. line.rgb = self.obj.color
  43. line = self.msp.add_line(line_bottom_left, line_bottom_left_2, dxfattribs={"layer": f"图层{self.obj.layer_id}"})
  44. line.rgb = self.obj.color