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)