- UI workflow improvements

- Remove specific item
-
This commit is contained in:
bklronin
2024-06-15 23:03:27 +02:00
parent 055a90b62e
commit 92a870e834
5 changed files with 472 additions and 343 deletions

View File

@@ -9,10 +9,14 @@ class SnapLineWidget(QWidget):
self.points = []
self.selected_line = None
self.snapping_range = 20 # Range in pixels for snapping
self.line_mode = False
def set_points(self, points: list):
self.points = points
#self.update()
def mousePressEvent(self, event):
if event.button() == Qt.LeftButton :
if event.button() == Qt.LeftButton and self.line_mode:
self.points.append(event.pos())
self.update()

View File

@@ -15,12 +15,12 @@ class OpenGLWidget(QOpenGLWidget):
self.lastPos = QPoint()
self.startPos = None
self.endPos = None
self.xRot = 0
self.xRot = 180
self.yRot = 0
self.zoom = -2
self.sketch = []
self.gl_width = self.width() / 1000
self.gl_height = self.height() / 1000
self.gl_width = self.width() / 100
self.gl_height = self.height() / 100
def map_value_to_range(self, value, value_min=0, value_max=1920, range_min=-1, range_max=1):
value = max(value_min, min(value_max, value))
@@ -55,7 +55,8 @@ class OpenGLWidget(QOpenGLWidget):
return None, (0, 0, 0)
def load_mesh_direct(self, mesh) -> object:
def load_mesh_direct(self, mesh):
try:
stl_mesh = mesh
@@ -68,9 +69,11 @@ class OpenGLWidget(QOpenGLWidget):
self.mesh_loaded = vertices
self.centroid = tuple(centroid)
print(f"Centroid: {self.centroid}")
self.update()
except Exception as e:
print(e)
def initializeGL(self):
glClearColor(0, 0, 0, 1)
glEnable(GL_DEPTH_TEST)
@@ -85,7 +88,7 @@ class OpenGLWidget(QOpenGLWidget):
self.gl_width = self.width() / 1000
self.gl_height = self.height() / 1000
gluPerspective(45.0, aspect, 1.0, 10000.0)
gluPerspective(45.0, aspect, 0.01, 10.0)
glMatrixMode(GL_MODELVIEW)
@@ -94,10 +97,10 @@ class OpenGLWidget(QOpenGLWidget):
glLoadIdentity()
glTranslatef(0, 0, self.zoom)
glRotatef(self.xRot, 0.0, 0.0, 0.0)
glRotatef(self.yRot, 0.0, 0.0, 0.0)
glRotatef(self.xRot, 1.0, 0.0, 0.0)
glRotatef(self.yRot, 0.0, 1.0, 0.0)
glColor3f(1.0, 1.0, 1.0)
glColor3f(0.9, 0.8, 0.8)
self.draw_area()
@@ -136,14 +139,32 @@ class OpenGLWidget(QOpenGLWidget):
glEnable(GL_COLOR_MATERIAL)
glColorMaterial(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE)
glLightfv(GL_LIGHT0, GL_POSITION, (0, 1, 1, 0))
glLightfv(GL_LIGHT0, GL_DIFFUSE, (0.6, 0.6, 0.6, 1.0))
glLightfv(GL_LIGHT0, GL_POSITION, (0, 0.6, 0.6, 0))
glLightfv(GL_LIGHT0, GL_DIFFUSE, (0.4, 0.4, 0.4, 0.6))
glDisable(GL_LIGHTING)
glBegin(GL_TRIANGLES)
for vertex in points:
glVertex3fv(vertex)
glEnd()
self.update()
# Draw the lines (edges of the triangles)
#glDisable(GL_LIGHTING) # Disable lighting to avoid affecting the line color
glColor3f(0.0, 0.0, 0.0) # Set line color to black (or any color you prefer)
glBegin(GL_LINES)
for i in range(0, len(points), 3):
glVertex3fv(points[i])
glVertex3fv(points[i + 1])
glVertex3fv(points[i + 1])
glVertex3fv(points[i + 2])
glVertex3fv(points[i + 2])
glVertex3fv(points[i])
glEnd()
glEnable(GL_LIGHTING) # Re-enable lighting if further drawing requires it
def draw_area(self):
@@ -174,7 +195,7 @@ class OpenGLWidget(QOpenGLWidget):
def wheelEvent(self, event):
delta = event.angleDelta().y()
self.zoom += delta / 120
self.zoom += delta / 200
self.update()
def aspect_ratio(self):