Basic pt_pt constrain with ui

This commit is contained in:
bklronin 2024-06-19 22:17:30 +02:00
parent edbd5ed0d3
commit b197e52cf3

View File

@ -13,7 +13,6 @@ class SketchWidget(QWidget):
self.line_buffer = None
self.pt_pt_buffer = None
self.points = []
self.selected_line = None
self.snapping_range = 20 # Range in pixels for snapping
@ -22,10 +21,7 @@ class SketchWidget(QWidget):
self.wp = None
self.solv = SolverSystem()
self.solventies = {}
self.solventies = []
def create_worplane(self):
self.wp = self.solv.create_2d_base()
@ -70,9 +66,7 @@ class SketchWidget(QWidget):
}
if event.button() == Qt.LeftButton and self.mouse_mode == "line":
clicked_pos = event.pos()
# Paintline
"""self.points.append(clicked_pos)
self.update()"""
@ -80,10 +74,8 @@ class SketchWidget(QWidget):
u = clicked_pos.x()
v = clicked_pos.y()
point = self.solv.add_point_2d(u, v, self.wp)
#print(point)
self.solv.dragged(point, self.wp)
#self.solv.dragged(point, self.wp)
# Solverline
if self.line_buffer:
@ -96,20 +88,31 @@ class SketchWidget(QWidget):
handle_nr = self.get_handle_nr(str(point))
relation['handle_nr'] = handle_nr
relation['solv_handle'] = point
relation['ui_point'] = clicked_pos
self.solventies[clicked_pos] = relation
self.solventies.append(relation)
self.points = list(self.solventies)
#print(self.points)
self.points.append(clicked_pos)
print(self.points)
if event.button() == Qt.LeftButton and self.mouse_mode == "pt_pt":
#point_solve_now = self.solventies[self.hovered_point]['solv_handle']
point_solve_now = self.solventies[self.hovered_point]['solv_handle']
for new_id, entry in enumerate(self.solventies):
if self.hovered_point == entry['ui_point']:
point_solve_now = entry['solv_handle']
print(point_solve_now)
target_id = new_id
if self.pt_pt_buffer:
point_solve_old = self.solventies[self.pt_pt_buffer]['solv_handle']
print(point_solve_old)
print(point_solve_now)
for old_id, entry in enumerate(self.solventies):
if self.pt_pt_buffer == entry['ui_point']:
point_solve_old = entry['solv_handle']
move_id = old_id
#point_solve_old = self.solventies[self.pt_pt_buffer]['solv_handle']
#self.solv.dragged(point_solve_now, self.wp)
self.solv.coincident(point_solve_now, point_solve_old, self.wp)
if self.solv.solve() == ResultFlag.OKAY:
@ -117,14 +120,13 @@ class SketchWidget(QWidget):
# x and y are actually float type
dof = self.solv.dof()
print(dof)
print(self.solventies[move_id]['ui_point'])
print(self.solventies[target_id]['ui_point'])
x, y = self.solv.params(self.solventies[move_id]['solv_handle'].params)
self.solventies[move_id]['ui_point'] = QPoint(x, y)
if self.pt_pt_buffer:
# Get the entry form the old point and copy it into new point with the new key and postion (key = postiion
move_point = self.solventies[self.pt_pt_buffer]
print(move_point)
del self.solventies[self.pt_pt_buffer]
self.solventies[self.hovered_point] = move_point
#print(f"Coordinates: {x1}, {y1}; {x2}, {y2}")
print(f"{x}, {y}")
print(self.solventies) #after adding the result
elif self.solv.solve() == ResultFlag.DIDNT_CONVERGE:
print("Solve_failed - Converge" )
@ -136,13 +138,12 @@ class SketchWidget(QWidget):
print("Solve_failed - Incons" )
self.points = []
self.points = list(self.solventies)
for points_ui in self.solventies:
self.points.append(points_ui['ui_point'])
print(self.points)
self.pt_pt_buffer = self.hovered_point
self.update()
def mouseMoveEvent(self, event):
closest_point = None
@ -186,13 +187,14 @@ class SketchWidget(QWidget):
pen.setWidth(2)
painter.setPen(pen)
for i in range(len(self.points) - 1):
painter.drawLine(self.points[i], self.points[i + 1])
# Draw points
for point in self.points:
painter.drawEllipse(point, 3, 3)
if len (self.points) > 0:
for i in range(len(self.points)-1):
painter.drawLine(self.points[i], self.points[i + 1])
#Highlight point hovered
if self.hovered_point:
highlight_pen = QPen(QColor(255, 0, 0))