From 6e98f76ce919d293559b14d1393b250f83832fc7 Mon Sep 17 00:00:00 2001 From: n3040 Date: Tue, 5 Dec 2023 01:32:19 +0800 Subject: [PATCH] Refactor curve, sag, and swing methods in Line class --- graphic.py | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/graphic.py b/graphic.py index eabe2e8..5391a70 100644 --- a/graphic.py +++ b/graphic.py @@ -42,7 +42,7 @@ class Line: self._points = None self._rotation = None - def curve(self): + def curve(self,draw=False)->List: if self._points: return self._points start_p = self._start_p @@ -53,7 +53,7 @@ class Line: line = Vector3D(end_p.x, end_p.y, end_p.z) - Vector3D( start_p.x, start_p.y, start_p.z ) - # 计算与X轴的角度 + # 计算与X轴的角度,画弧垂。先沿Z轴旋转到xz平面的x正半轴上。 xy_project = copy.deepcopy(line) # 投影到xy平面上 xy_project.z = 0 x_abs_angel = xy_project.angle_to(Vector3D(1, 0, 0)) @@ -72,7 +72,7 @@ class Line: ] = list() # 未旋转之前的伪坐标 for foo in range(len(span_l)): p_points.append((span_l[foo] + start_p.x, start_p.y, z_points[foo])) - # 绕Z轴旋转 + # 绕起点,在Z轴方向旋转 rotation = transformation.Rotation( x_angel, [start_p.x, start_p.y, start_p.z], @@ -83,11 +83,12 @@ class Line: p_points, ) self._points = points - msp = self._msp - msp.add_polyline3d(points) + if draw: + msp = self._msp + msp.add_polyline3d(points) return points - def sag(self): + def sag(self,draw=False): start_p = self._start_p end_p = self._end_p span = self._span @@ -114,12 +115,13 @@ class Line: ] # 旋转前的值 sag_points = rotation.rotate(p_sag_points) sag_value = start_p.z + middle_span * height / span - middle_z - msp = self._msp - msp.add_polyline3d(sag_points) - draw_text(msp, f'sag {sag_value}', sag_points[1]) + if draw: + msp = self._msp + msp.add_polyline3d(sag_points) + draw_text(msp, f'sag {sag_value}', sag_points[1]) return sag_points - def swing(self, angel): + def swing(self, angel,draw=False)->List: if not self._points: self.curve() points = self._points @@ -131,8 +133,9 @@ class Line: [end_p.x, end_p.y, end_p.z], ) swing_point = swing_rotation.rotate(points) - msp = self._msp - msp.add_polyline3d(swing_point) + if draw: + msp = self._msp + msp.add_polyline3d(swing_point) return swing_point