- Added enabling of midpsnap and prepared others
- Show dimesnion on hover
This commit is contained in:
		@@ -33,6 +33,15 @@ class SketchWidget(QWidget):
 | 
			
		||||
        self.mouse_mode = False
 | 
			
		||||
        self.is_construct = False
 | 
			
		||||
 | 
			
		||||
        self.snap_mode = {
 | 
			
		||||
            "point": False,
 | 
			
		||||
            "mpoint": False,
 | 
			
		||||
            "horiz": False,
 | 
			
		||||
            "vert":False,
 | 
			
		||||
            "grid": False,
 | 
			
		||||
            "angle": False
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        # Solver
 | 
			
		||||
        self.solv = SolverSystem()
 | 
			
		||||
 | 
			
		||||
@@ -61,7 +70,10 @@ class SketchWidget(QWidget):
 | 
			
		||||
        self.mouse_mode = 'distance'
 | 
			
		||||
 | 
			
		||||
    def act_constrain_mid_point_mode(self):
 | 
			
		||||
       self.sketchWidget.mouse_mode = 'pb_con_mid'
 | 
			
		||||
       self.mouse_mode = 'pb_con_mid'
 | 
			
		||||
 | 
			
		||||
    def on_snap_mode_change(self, helper_type: str, value: bool):
 | 
			
		||||
        self.snap_mode[helper_type] = value
 | 
			
		||||
 | 
			
		||||
    def on_construct_change(self, checked):
 | 
			
		||||
        self.is_construct = checked
 | 
			
		||||
@@ -292,7 +304,7 @@ class SketchWidget(QWidget):
 | 
			
		||||
 | 
			
		||||
        for (old_index, old_point), new_point in zip(old_points_ui, new_points_ui):
 | 
			
		||||
            if old_point != new_point:
 | 
			
		||||
                print(old_point)
 | 
			
		||||
                #print(old_point)
 | 
			
		||||
                differences.append((old_index, old_point, new_point))
 | 
			
		||||
 | 
			
		||||
        return differences
 | 
			
		||||
@@ -314,8 +326,8 @@ class SketchWidget(QWidget):
 | 
			
		||||
                # Update the point in slv_points_main
 | 
			
		||||
                self.sketch.points[index].ui_point = new_point
 | 
			
		||||
 | 
			
		||||
        for points in self.sketch.points:
 | 
			
		||||
            print(points.ui_point)
 | 
			
		||||
        """for points in self.sketch.points:
 | 
			
		||||
            print(points.ui_point)"""
 | 
			
		||||
            # Print updated state
 | 
			
		||||
            # print("Updated slv_points_main:", self.slv_points_main)
 | 
			
		||||
 | 
			
		||||
@@ -523,10 +535,10 @@ class SketchWidget(QWidget):
 | 
			
		||||
 | 
			
		||||
                # Add succesful constraint to constrain draw list so it gets drawn in paint function
 | 
			
		||||
                for idx, line in enumerate(self.sketch.lines):
 | 
			
		||||
                    print(line.crd1.ui_point)
 | 
			
		||||
                    #print(line.crd1.ui_point)
 | 
			
		||||
                    if self.is_point_on_line(local_event_pos, line.crd1.ui_point, line.crd2.ui_point):
 | 
			
		||||
                        self.sketch.lines[idx].constraints.append("hrz")
 | 
			
		||||
                        print(self.sketch.lines[idx].constraints)
 | 
			
		||||
                        #print(self.sketch.lines[idx].constraints)
 | 
			
		||||
 | 
			
		||||
            elif self.sketch.solve() == ResultFlag.DIDNT_CONVERGE:
 | 
			
		||||
                print("Solve_failed - Converge")
 | 
			
		||||
@@ -540,8 +552,6 @@ class SketchWidget(QWidget):
 | 
			
		||||
        if event.button() == Qt.LeftButton and self.mouse_mode == "vert":
 | 
			
		||||
            line_selected = self.get_line_handle_from_ui_point(local_event_pos)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            if line_selected:
 | 
			
		||||
                self.sketch.vertical(line_selected, self.sketch.wp)
 | 
			
		||||
 | 
			
		||||
@@ -568,8 +578,6 @@ class SketchWidget(QWidget):
 | 
			
		||||
            e1 = None
 | 
			
		||||
            e2 = None
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            if self.hovered_point:
 | 
			
		||||
               # print("buf point")
 | 
			
		||||
                # Get the point as UI point as buffer
 | 
			
		||||
@@ -628,7 +636,7 @@ class SketchWidget(QWidget):
 | 
			
		||||
 | 
			
		||||
        closest_point = None
 | 
			
		||||
        min_distance = float('inf')
 | 
			
		||||
        threshold = 10  # Distance threshold for highlighting
 | 
			
		||||
        threshold = 15  # Distance threshold for highlighting
 | 
			
		||||
 | 
			
		||||
        if self.mouse_mode == "line" and self.line_draw_buffer[0]:
 | 
			
		||||
            # Update the current cursor position as the second point
 | 
			
		||||
@@ -659,11 +667,14 @@ class SketchWidget(QWidget):
 | 
			
		||||
                if self.is_point_on_line(local_event_pos, p1, p2):
 | 
			
		||||
                    self.selected_line = p1, p2
 | 
			
		||||
 | 
			
		||||
                    # Midpointsnap only in drawer not solver
 | 
			
		||||
                    mid = self.calculate_midpoint(p1, p2)
 | 
			
		||||
                    distance = (local_event_pos - mid).manhattanLength()
 | 
			
		||||
                    if distance < threshold and distance < min_distance:
 | 
			
		||||
                        self.hovered_point = mid
 | 
			
		||||
                    if self.snap_mode.get("mpoint"):
 | 
			
		||||
                        # Midpointsnap only in drawer not solver
 | 
			
		||||
                        mid = self.calculate_midpoint(p1, p2)
 | 
			
		||||
                        distance = (local_event_pos - mid).manhattanLength()
 | 
			
		||||
                        if distance < threshold and distance < min_distance:
 | 
			
		||||
                            self.hovered_point = mid
 | 
			
		||||
                        break
 | 
			
		||||
 | 
			
		||||
                    break
 | 
			
		||||
                else:
 | 
			
		||||
                    self.selected_line = None
 | 
			
		||||
@@ -932,15 +943,16 @@ class SketchWidget(QWidget):
 | 
			
		||||
                    p2 = line.crd2.ui_point
 | 
			
		||||
                    painter.drawLine(p1, p2)
 | 
			
		||||
 | 
			
		||||
                    self.draw_measurement(painter, p1, p2)
 | 
			
		||||
                    painter.save()
 | 
			
		||||
                    midp = self.calculate_midpoint(p1, p2)
 | 
			
		||||
                    painter.translate(midp)
 | 
			
		||||
                    painter.scale(1, -1)
 | 
			
		||||
                    if not self.selected_line:
 | 
			
		||||
 | 
			
		||||
                    for i, text in enumerate(line.constraints):
 | 
			
		||||
                        painter.drawText(0, i * 15, f"> {text} <")
 | 
			
		||||
                    painter.restore()
 | 
			
		||||
                        painter.save()
 | 
			
		||||
                        midp = self.calculate_midpoint(p1, p2)
 | 
			
		||||
                        painter.translate(midp)
 | 
			
		||||
                        painter.scale(1, -1)
 | 
			
		||||
 | 
			
		||||
                        for i, text in enumerate(line.constraints):
 | 
			
		||||
                            painter.drawText(0, i * 15, f"> {text} <")
 | 
			
		||||
                        painter.restore()
 | 
			
		||||
 | 
			
		||||
            # Draw all solver points
 | 
			
		||||
            if self.sketch.entity_len():
 | 
			
		||||
@@ -965,6 +977,9 @@ class SketchWidget(QWidget):
 | 
			
		||||
                painter.setPen(QPen(Qt.red, 2 / self.zoom))
 | 
			
		||||
                painter.drawLine(p1, p2)
 | 
			
		||||
 | 
			
		||||
                self.draw_measurement(painter, p1, p2)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            """for cross in self.sketch.proj_points:
 | 
			
		||||
                self.draw_cross(painter, cross, 10 / self.zoom)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										7
									
								
								main.py
									
									
									
									
									
								
							
							
						
						
									
										7
									
								
								main.py
									
									
									
									
									
								
							@@ -142,6 +142,13 @@ class MainWindow(QMainWindow):
 | 
			
		||||
        self.project = Project()
 | 
			
		||||
        self.new_project()
 | 
			
		||||
 | 
			
		||||
        ### SNAPS
 | 
			
		||||
 | 
			
		||||
        self.ui.pb_snap_midp.toggled.connect(lambda checked: self.sketchWidget.on_snap_mode_change("mpoint", checked))
 | 
			
		||||
        self.ui.pb_snap_horiz.toggled.connect(lambda checked: self.sketchWidget.on_snap_mode_change("horiz", checked))
 | 
			
		||||
        self.ui.pb_snap_vert.toggled.connect(lambda checked: self.sketchWidget.on_snap_mode_change("vert", checked))
 | 
			
		||||
        self.ui.pb_snap_angle.toggled.connect(lambda checked: self.sketchWidget.on_snap_mode_change("angle", checked))
 | 
			
		||||
        self.ui.pb_enable_snap.toggled.connect(lambda checked: self.sketchWidget.on_snap_mode_change("point", checked))
 | 
			
		||||
        ### COMPOS
 | 
			
		||||
        ### COMPOS
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user