From 79c1aa106fefbac05228e7b599a9301dc9a4d4a5 Mon Sep 17 00:00:00 2001 From: bklronin Date: Sat, 26 Oct 2024 14:40:58 +0200 Subject: [PATCH] -Changed multi layer render - added ignore - prepraed sketchwidget --- .gitignore | 2 ++ drawing_modules/draw_widget2d.py | 31 +++++++++++++++++++++++++++++-- drawing_modules/vtk_widget.py | 16 ++++++++++++++-- 3 files changed, 45 insertions(+), 4 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..cb46844 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*.xml +*.iml \ No newline at end of file diff --git a/drawing_modules/draw_widget2d.py b/drawing_modules/draw_widget2d.py index 25b5e8a..b42072f 100644 --- a/drawing_modules/draw_widget2d.py +++ b/drawing_modules/draw_widget2d.py @@ -383,6 +383,8 @@ class SketchWidget(QWidget): # Track Relationship # Points + # CONSTRAINTS + if event.button() == Qt.LeftButton and self.mouse_mode == "pt_pt": if self.hovered_point and not self.main_buffer[0]: self.main_buffer[0] = self.get_handle_from_ui_point(self.hovered_point) @@ -771,7 +773,7 @@ class SketchWidget(QWidget): return self.width() / self.height() * (1.0 / abs(self.zoom)) -class Point2D: +class Point2D_ALT: """Improved oop aaproach?""" def __init__(self): self.ui_point = None @@ -899,8 +901,33 @@ class Point2D: return QPoint(self.to_quadrant_coords(qt_pos)) + +class Point2D: + ui_x: int = None + ui_y: int = None + handle = None + class Line2D: - pass + crd1: Point2D = None + crd2: Point2D = None + handle = None + +class Sketch2d(SolverSystem): + def __init__(self): + self.wp = self.create_2d_base() + self.points = [] + self.lines = [] + + def add_point(self, point: Point2D): + point.handle = self.add_point_2d(point.ui_x, point.ui_y, self.wo) + self.points.append(point) + + def add_line(self, line: Line2D): + line.handle = self.add_line_2d(line.crd1, line.crd2, self.wp) + self.lines.append(line) + + + diff --git a/drawing_modules/vtk_widget.py b/drawing_modules/vtk_widget.py index 2f33bb5..5d4cc86 100644 --- a/drawing_modules/vtk_widget.py +++ b/drawing_modules/vtk_widget.py @@ -52,6 +52,12 @@ class VTKWidget(QtWidgets.QWidget): self.renderer_projections.SetLayer(1) self.renderer_indicators.SetLayer(2) # This will be on top + # Preserve color and depth buffers for non-zero layers + self.renderer_projections.SetPreserveColorBuffer(True) + self.renderer_projections.SetPreserveDepthBuffer(True) + self.renderer_indicators.SetPreserveColorBuffer(True) + self.renderer_indicators.SetPreserveDepthBuffer(True) + # Add renderers to the render window render_window = self.vtk_widget.GetRenderWindow() render_window.SetNumberOfLayers(3) @@ -59,11 +65,11 @@ class VTKWidget(QtWidgets.QWidget): render_window.AddRenderer(self.renderer_projections) render_window.AddRenderer(self.renderer_indicators) - # Set up shared camera self.camera = vtk.vtkCamera() self.camera.SetPosition(5, 5, 1000) self.camera.SetFocalPoint(0, 0, 0) - self.camera.SetClippingRange(0.1, 100000) + self.camera.SetClippingRange(1, 10000) # Adjusted clipping range + self.renderer.SetActiveCamera(self.camera) self.renderer_projections.SetActiveCamera(self.camera) self.renderer_indicators.SetActiveCamera(self.camera) @@ -140,10 +146,16 @@ class VTKWidget(QtWidgets.QWidget): self.renderer.AddActor(actor) + def reset_camera(self): + self.renderer.ResetCamera() + self.camera.SetClippingRange(1, 100000) # Set your desired range + self.vtk_widget.GetRenderWindow().Render() + def update_render(self): self.renderer.ResetCameraClippingRange() self.renderer_projections.ResetCameraClippingRange() self.renderer_indicators.ResetCameraClippingRange() + self.camera.SetClippingRange(1, 100000) self.vtk_widget.GetRenderWindow().Render() def create_grid(self, size=100, spacing=10):