diff --git a/drawing_modules/draw_widget2d.py b/drawing_modules/draw_widget2d.py index 51efbe4..d073778 100644 --- a/drawing_modules/draw_widget2d.py +++ b/drawing_modules/draw_widget2d.py @@ -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))