- Added construction lines switching

- Moved callbacks into sketchwidget from main.
- Changed reset on right click
This commit is contained in:
bklronin
2025-02-16 22:00:59 +01:00
parent 878b6093b7
commit 2a7f718b3e
4 changed files with 106 additions and 68 deletions

View File

@@ -24,15 +24,48 @@ class SketchWidget(QWidget):
self.hovered_point = None
self.selected_line = None
### Display Settings
self.snapping_range = 20 # Range in pixels for snapping
self.zoom = 1
# Mouse Input
self.setMouseTracking(True)
self.mouse_mode = False
self.is_construct = False
# Solver
self.solv = SolverSystem()
self.sketch = Sketch2d()
def act_line_mode(self, checked):
if checked:
self.mouse_mode = 'line'
print(self.mouse_mode)
else:
self.mouse_mode = None
def act_constrain_pt_pt_mode(self):
self.mouse_mode = 'pt_pt'
def act_constrain_pt_line_mode(self):
self.mouse_mode = 'pt_line'
def act_constrain_horiz_line_mode(self):
self.mouse_mode = 'horiz'
def act_constrain_vert_line_mode(self):
self.mouse_mode = 'vert'
def act_constrain_distance_mode(self):
self.mouse_mode = 'distance'
def act_constrain_mid_point_mode(self):
self.sketchWidget.mouse_mode = 'pb_con_mid'
def on_construct_change(self, checked):
self.is_construct = checked
def create_sketch(self, sketch_in ):
self.sketch = Sketch2d()
self.sketch.id = sketch_in.id
@@ -46,6 +79,7 @@ class SketchWidget(QWidget):
return self.sketch
def reset_buffers(self):
self.mouse_mode = None
self.line_draw_buffer = [None, None]
self.drag_buffer = [None, None]
self.main_buffer = [None, None]
@@ -315,6 +349,7 @@ class SketchWidget(QWidget):
self.drag_buffer[0] = self.get_handle_from_ui_point(self.hovered_point)
if event.button() == Qt.RightButton and self.mouse_mode:
self.constrain_done.emit()
self.reset_buffers()
if event.button() == Qt.LeftButton and self.mouse_mode == "line":
@@ -329,6 +364,10 @@ class SketchWidget(QWidget):
v = clicked_pos.y()
point = Point2D(u,v)
print("construct", self.is_construct )
# Construction mode
point.is_helper = self.is_construct
self.sketch.add_point(point)
self.line_draw_buffer[0] = point
@@ -337,8 +376,12 @@ class SketchWidget(QWidget):
u = clicked_pos.x()
v = clicked_pos.y()
print("construct", self.is_construct)
point = Point2D(u, v)
# Construction mode
point.is_helper = self.is_construct
self.sketch.add_point(point)
self.line_draw_buffer[1] = point
@@ -348,6 +391,10 @@ class SketchWidget(QWidget):
if self.line_draw_buffer[0] and self.line_draw_buffer[1]:
line = Line2D(self.line_draw_buffer[0], self.line_draw_buffer[1])
# Construction mode
line.is_helper = self.is_construct
self.sketch.add_line(line)
# Reset the buffer for the next line segment