- Added new buttons and settings

This commit is contained in:
bklronin 2025-01-02 19:28:43 +01:00
parent 3e88e41e4b
commit 878b6093b7
2 changed files with 75 additions and 11 deletions

View File

@ -264,7 +264,7 @@ class SketchWidget(QWidget):
def update_ui_points(self, point_list: list): def update_ui_points(self, point_list: list):
# Print initial state of slv_points_main # Print initial state of slv_points_main
# print("Initial slv_points_main:", self.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: if len(point_list) > 0:
for tbu_points_idx in point_list: for tbu_points_idx in point_list:
@ -291,7 +291,7 @@ class SketchWidget(QWidget):
if event.button() == Qt.LeftButton and not self.mouse_mode: if event.button() == Qt.LeftButton and not self.mouse_mode:
self.drag_buffer[1] = local_event_pos 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: if not None in self.main_buffer and len(self.main_buffer) == 2:
entry = self.drag_buffer[0] entry = self.drag_buffer[0]
@ -343,7 +343,7 @@ class SketchWidget(QWidget):
self.line_draw_buffer[1] = point 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]: 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) self.main_buffer[1] = self.get_handle_from_ui_point(self.hovered_point)
if self.main_buffer[0] and self.main_buffer[1]: 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) 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] self.main_buffer = [None, None]
if event.button() == Qt.LeftButton and self.mouse_mode == "pt_line": if event.button() == Qt.LeftButton and self.mouse_mode == "pt_line":
print("ptline") #print("ptline")
line_selected = None line_selected = None
if self.hovered_point and not self.main_buffer[1]: if self.hovered_point and not self.main_buffer[1]:
@ -418,7 +418,7 @@ class SketchWidget(QWidget):
self.main_buffer = [None, None] self.main_buffer = [None, None]
if event.button() == Qt.LeftButton and self.mouse_mode == "pb_con_mid": if event.button() == Qt.LeftButton and self.mouse_mode == "pb_con_mid":
print("ptline") #print("ptline")
line_selected = None line_selected = None
if self.hovered_point and not self.main_buffer[1]: if self.hovered_point and not self.main_buffer[1]:
@ -490,7 +490,7 @@ class SketchWidget(QWidget):
e2 = None e2 = None
if self.hovered_point: if self.hovered_point:
print("buf point") # print("buf point")
# Get the point as UI point as buffer # Get the point as UI point as buffer
self.main_buffer[0] = self.hovered_point self.main_buffer[0] = self.hovered_point
@ -562,7 +562,7 @@ class SketchWidget(QWidget):
if closest_point != self.hovered_point: if closest_point != self.hovered_point:
self.hovered_point = closest_point self.hovered_point = closest_point
print(self.hovered_point) #print(self.hovered_point)
for line in self.sketch.lines: for line in self.sketch.lines:
p1 = line.crd1.ui_point p1 = line.crd1.ui_point
@ -700,6 +700,10 @@ class SketchWidget(QWidget):
pen_normal = QPen(Qt.gray) pen_normal = QPen(Qt.gray)
pen_normal.setWidthF(2 / self.zoom) 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 = QPen(Qt.cyan)
pen_construct.setStyle(Qt.PenStyle.DotLine) pen_construct.setStyle(Qt.PenStyle.DotLine)
pen_construct.setWidthF(1 / self.zoom) 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: 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 start_point = self.line_draw_buffer[0].ui_point
end_point = self.dynamic_line_end 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) 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 # Save painter state
painter.save() painter.save()
painter.setPen(pen_text) painter.setPen(pen_text)
# Calculate the distance and midpoint # Calculate the distance and midpoint
dis = self.distance(start_point, end_point) 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 # Transform for text
painter.translate(mid.x(), mid.y()) # Move to the midpoint painter.translate(mid.x(), mid.y()) # Move to the midpoint

2
gui.ui
View File

@ -836,7 +836,7 @@
<enum>QTabWidget::South</enum> <enum>QTabWidget::South</enum>
</property> </property>
<property name="currentIndex"> <property name="currentIndex">
<number>1</number> <number>0</number>
</property> </property>
<widget class="QWidget" name=""> <widget class="QWidget" name="">
<attribute name="title"> <attribute name="title">