- Extrude and cut
This commit is contained in:
@@ -10,12 +10,13 @@ class SnapLineWidget(QWidget):
|
||||
self.selected_line = None
|
||||
self.snapping_range = 20 # Range in pixels for snapping
|
||||
|
||||
|
||||
def mousePressEvent(self, event):
|
||||
if event.button() == Qt.LeftButton:
|
||||
if event.button() == Qt.LeftButton :
|
||||
self.points.append(event.pos())
|
||||
self.update()
|
||||
|
||||
if event.button() == Qt.RightButton:
|
||||
elif event.button() == Qt.RightButton:
|
||||
for i in range(len(self.points) - 1):
|
||||
if self.is_point_on_line(event.pos(), self.points[i], self.points[i + 1]):
|
||||
self.selected_line = i
|
||||
@@ -24,7 +25,7 @@ class SnapLineWidget(QWidget):
|
||||
self.selected_line = None
|
||||
|
||||
def mouseMoveEvent(self, event):
|
||||
if event.buttons() & Qt.LeftButton:
|
||||
if event.buttons() & Qt.RightButton:
|
||||
if self.selected_line is not None:
|
||||
self.points[self.selected_line] = event.pos()
|
||||
else:
|
||||
@@ -41,7 +42,8 @@ class SnapLineWidget(QWidget):
|
||||
distance1 = self.distance(p, p1)
|
||||
distance2 = self.distance(p, p2)
|
||||
total_distance = self.distance(p1, p2)
|
||||
return abs(distance1 + distance2 - total_distance) < 0.1
|
||||
|
||||
return abs(distance1 + distance2 - total_distance) < 1
|
||||
|
||||
def paintEvent(self, event):
|
||||
painter = QPainter(self)
|
||||
@@ -65,6 +67,11 @@ class SnapLineWidget(QWidget):
|
||||
p2 = self.points[self.selected_line + 1]
|
||||
painter.setPen(QPen(Qt.red, 2))
|
||||
painter.drawLine(p1, p2)
|
||||
painter.end()
|
||||
|
||||
def clear_sketch(self):
|
||||
self.points = []
|
||||
self.update()
|
||||
|
||||
|
||||
# Example usage
|
||||
|
||||
Reference in New Issue
Block a user