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