From 878b6093b713d3b90738d3b96684a9443ba6ff0e Mon Sep 17 00:00:00 2001 From: bklronin Date: Thu, 2 Jan 2025 19:28:43 +0100 Subject: [PATCH] - Added new buttons and settings --- drawing_modules/draw_widget_solve.py | 84 ++++++++++++++++++++++++---- gui.ui | 2 +- 2 files changed, 75 insertions(+), 11 deletions(-) diff --git a/drawing_modules/draw_widget_solve.py b/drawing_modules/draw_widget_solve.py index e7429fb..15d145b 100644 --- a/drawing_modules/draw_widget_solve.py +++ b/drawing_modules/draw_widget_solve.py @@ -264,7 +264,7 @@ class SketchWidget(QWidget): def update_ui_points(self, point_list: list): # Print initial state of slv_points_main # print("Initial slv_points_main:", self.slv_points_main) - print("Change list:", point_list) + #print("Change list:", point_list) if len(point_list) > 0: for tbu_points_idx in point_list: @@ -291,7 +291,7 @@ class SketchWidget(QWidget): if event.button() == Qt.LeftButton and not self.mouse_mode: self.drag_buffer[1] = local_event_pos - print("Le main buffer", self.drag_buffer) + #print("Le main buffer", self.drag_buffer) if not None in self.main_buffer and len(self.main_buffer) == 2: entry = self.drag_buffer[0] @@ -343,7 +343,7 @@ class SketchWidget(QWidget): self.line_draw_buffer[1] = point - print("Buffer state", self.line_draw_buffer) + #print("Buffer state", self.line_draw_buffer) if self.line_draw_buffer[0] and self.line_draw_buffer[1]: @@ -367,7 +367,7 @@ class SketchWidget(QWidget): self.main_buffer[1] = self.get_handle_from_ui_point(self.hovered_point) if self.main_buffer[0] and self.main_buffer[1]: - print("buf", self.main_buffer) + # print("buf", self.main_buffer) self.sketch.coincident(self.main_buffer[0], self.main_buffer[1], self.sketch.wp) @@ -387,7 +387,7 @@ class SketchWidget(QWidget): self.main_buffer = [None, None] if event.button() == Qt.LeftButton and self.mouse_mode == "pt_line": - print("ptline") + #print("ptline") line_selected = None if self.hovered_point and not self.main_buffer[1]: @@ -418,7 +418,7 @@ class SketchWidget(QWidget): self.main_buffer = [None, None] if event.button() == Qt.LeftButton and self.mouse_mode == "pb_con_mid": - print("ptline") + #print("ptline") line_selected = None if self.hovered_point and not self.main_buffer[1]: @@ -490,7 +490,7 @@ class SketchWidget(QWidget): e2 = None if self.hovered_point: - print("buf point") + # print("buf point") # Get the point as UI point as buffer self.main_buffer[0] = self.hovered_point @@ -562,7 +562,7 @@ class SketchWidget(QWidget): if closest_point != self.hovered_point: self.hovered_point = closest_point - print(self.hovered_point) + #print(self.hovered_point) for line in self.sketch.lines: p1 = line.crd1.ui_point @@ -700,6 +700,10 @@ class SketchWidget(QWidget): pen_normal = QPen(Qt.gray) pen_normal.setWidthF(2 / self.zoom) + pen_planned = QPen(Qt.gray) + pen_planned.setStyle(Qt.PenStyle.DotLine) + pen_planned.setWidthF(2 / self.zoom) + pen_construct = QPen(Qt.cyan) pen_construct.setStyle(Qt.PenStyle.DotLine) pen_construct.setWidthF(1 / self.zoom) @@ -726,16 +730,76 @@ class SketchWidget(QWidget): if self.mouse_mode == "line" and self.line_draw_buffer[0] and self.dynamic_line_end is not None: start_point = self.line_draw_buffer[0].ui_point end_point = self.dynamic_line_end - painter.setPen(Qt.red) # Use a different color for the dynamic line + painter.setPen(pen_planned) # Use a different color for the dynamic line painter.drawLine(start_point, end_point) + # Calculate the direction of the line + dx = end_point.x() - start_point.x() + dy = end_point.y() - start_point.y() + + # Swap and negate to get a perpendicular vector + perp_dx = -dy + perp_dy = dx + + # Normalize the perpendicular vector + length = (perp_dx ** 2 + perp_dy ** 2) ** 0.5 + if length == 0: # Prevent division by zero + return + perp_dx /= length + perp_dy /= length + + # Fixed length for the perpendicular lines + fixed_length = 40 # Adjust as needed + half_length = fixed_length #fixed_length / 2 + + # Calculate endpoints for the perpendicular line at the start + start_perp_start_x = start_point.x() + perp_dx + start_perp_start_y = start_point.y() + perp_dy + + start_perp_end_x = start_point.x() + perp_dx * half_length * (1 / self.zoom) + start_perp_end_y = start_point.y() + perp_dy * half_length * (1 / self.zoom) + + start_perp_end_x_conn_line = start_point.x() + perp_dx * half_length * 0.75 * (1 / self.zoom) + start_perp_end_y_conn_line = start_point.y() + perp_dy * half_length * 0.75 * (1 / self.zoom) + + # Draw the perpendicular line at the start + painter.setPen(pen_construct) # Different color for the perpendicular line + painter.drawLine( + QPointF(start_perp_start_x, start_perp_start_y), + QPointF(start_perp_end_x, start_perp_end_y) + ) + + # Calculate endpoints for the perpendicular line at the end + end_perp_start_x = end_point.x() + perp_dx + end_perp_start_y = end_point.y() + perp_dy + + end_perp_end_x = end_point.x() + perp_dx * half_length * (1 / self.zoom) + end_perp_end_y = end_point.y() + perp_dy * half_length * (1 / self.zoom) + + end_perp_end_x_conn_line = end_point.x() + perp_dx * half_length * .75 * (1 / self.zoom) + end_perp_end_y_conn_line = end_point.y() + perp_dy * half_length * .75 * (1 / self.zoom) + + + # Draw the perpendicular line at the end + painter.drawLine( + QPointF(end_perp_start_x, end_perp_start_y), + QPointF(end_perp_end_x, end_perp_end_y) + ) + + painter.drawLine( + QPointF(end_perp_end_x_conn_line, end_perp_end_y_conn_line), + QPointF(start_perp_end_x_conn_line, start_perp_end_y_conn_line) + ) + # Save painter state painter.save() painter.setPen(pen_text) # Calculate the distance and midpoint dis = self.distance(start_point, end_point) - mid = self.calculate_midpoint(start_point, end_point) + mid = self.calculate_midpoint(QPointF(start_perp_end_x_conn_line, start_perp_end_y_conn_line), QPointF(end_perp_end_x_conn_line, end_perp_end_y_conn_line)) + + #mid = self.calculate_midpoint(start_point, end_point) # Transform for text painter.translate(mid.x(), mid.y()) # Move to the midpoint diff --git a/gui.ui b/gui.ui index 4cfc2c0..2d34b13 100644 --- a/gui.ui +++ b/gui.ui @@ -836,7 +836,7 @@ QTabWidget::South - 1 + 0