123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- import math
- from ezdxf.enums import TextEntityAlignment
- import core
- from drawer.BaseDrawer import VentGraphDrawer, BaseDrawer
- from entity.primitives import TunText
- class TunTextDrawer(BaseDrawer):
- def initialize_data(self):
- pass
- def draw_agg(self):
- assert isinstance(self.obj, TunText)
- if self.obj.middle_line.agg_line[0][0] < self.obj.middle_line.agg_line[1][0]:
- route = core.calculate_angle_with_x_axis(self.obj.middle_line.agg_line[0], self.obj.middle_line.agg_line[1])
- from_point, to_point = core.parallel_line(self.obj.middle_line.agg_line[0],
- self.obj.middle_line.agg_line[1],
- 1.7 * self.obj.width)
- else:
- route = core.calculate_angle_with_x_axis(self.obj.middle_line.agg_line[1], self.obj.middle_line.agg_line[0])
- from_point, to_point = core.parallel_line(self.obj.middle_line.agg_line[1],
- self.obj.middle_line.agg_line[0],
- 1.7 * self.obj.width)
- angle = math.degrees(route)
- text_center = core.find_point_on_line(from_point, to_point, 1 / 2)
- dxfattribs = {
- 'insert': text_center, 'style': 'msyh',
- "layer": f"图层{self.obj.layer_id}"}
- text = self.msp.add_text(text=self.obj.name, rotation=angle, dxfattribs=dxfattribs, height=self.obj.width).set_placement(
- text_center,
- align=TextEntityAlignment.CENTER)
- text.rgb = self.obj.color
- def draw_div(self):
- assert isinstance(self.obj, TunText)
- if self.obj.middle_line.div_line[0][0] < self.obj.middle_line.div_line[1][0]:
- route = core.calculate_angle_with_x_axis(self.obj.middle_line.div_line[0], self.obj.middle_line.div_line[1])
- from_point, to_point = core.parallel_line(self.obj.middle_line.div_line[0],
- self.obj.middle_line.div_line[1],
- 1.7 * self.obj.width)
- else:
- route = core.calculate_angle_with_x_axis(self.obj.middle_line.div_line[1], self.obj.middle_line.div_line[0])
- from_point, to_point = core.parallel_line(self.obj.middle_line.div_line[1],
- self.obj.middle_line.div_line[0],
- 1.7 * self.obj.width)
- angle = math.degrees(route)
- text_center = core.find_point_on_line(from_point, to_point, 1 / 2)
- dxfattribs = {
- 'insert': text_center, 'style': 'msyh',
- "layer": f"图层{self.obj.layer_id}"}
- text = self.msp.add_text(text=self.obj.name, rotation=angle, dxfattribs=dxfattribs, height=self.obj.width).set_placement(
- text_center,
- align=TextEntityAlignment.CENTER)
- text.rgb = self.obj.color
- #
- # def initialize_data(self):
- # assert isinstance(self.obj,TunText)
- #
- #
- # def draw_obj(self, center, route):
- # assert isinstance(self.obj, TunText)
- # if self.obj.middle_line.agg_line[0][0] > self.obj.middle_line.agg_line[1][0]:
- # route = core.calculate_angle_with_x_axis(self.from_point, self.to_point)
- # else:
- # route = core.calculate_angle_with_x_axis(self.to_point, self.from_point)
- # angle = math.degrees(route)
- # from_point, to_point = core.parallel_line(self.from_point, self.to_point, 1.7 * self.width)
- # tun_center = core.find_point_on_line(from_point, to_point, 1 / 2)
- # dxfattribs = {
- # 'insert': tun_center, 'style': 'msyh', 'color': core.get_color_by_layer(self.layer),
- # "layer": f"图层{self.layer}"}
- # self.msp.add_text(text=self.text, rotation=angle, dxfattribs=dxfattribs, height=5).set_placement(tun_center,
- # align=TextEntityAlignment.CENTER)
|