From 9200d30884e23cf348eabac5fcfcc6d9b2e6c4f9 Mon Sep 17 00:00:00 2001 From: jacques franc Date: Wed, 10 Dec 2025 09:32:13 +0100 Subject: [PATCH 1/6] adding z-scale modifier --- .../src/geos/trame/app/ui/viewer/viewer.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/geos-trame/src/geos/trame/app/ui/viewer/viewer.py b/geos-trame/src/geos/trame/app/ui/viewer/viewer.py index 252e793e2..03c8585ad 100644 --- a/geos-trame/src/geos/trame/app/ui/viewer/viewer.py +++ b/geos-trame/src/geos/trame/app/ui/viewer/viewer.py @@ -196,6 +196,18 @@ def _setup_slider( self ) -> None: title_height=0.02, value=perforation_radius, ) + + self.plotter.add_slider_widget( + self._on_change_zscale, + [ 1, 50 ], + title="Z exaggeration", + title_opacity=0.5, + pointa=( 0.02, 0.37 ), + pointb=( 0.30, 0.37 ), + title_color="black", + title_height=0.02, + value=1., + ) def _remove_slider( self ) -> None: """Create slider to control in the gui well parameters.""" @@ -211,6 +223,12 @@ def _on_change_perforation_size( self, value: float ) -> None: for _, perforation in self._perforations.items(): perforation.update_perforation_radius( value ) + def _on_change_zscale( self, value: float ) -> None: + if self._mesh_actor is not None: + self._mesh_actor.SetScale( 1.0, 1.0, value ) + self.plotter.renderer.Modified() + return + def _get_perforation_size( self ) -> float | None: if len( self._perforations ) <= 0: return 5.0 From 8558d41f96641ad1ceb511614eab62e49e025f87 Mon Sep 17 00:00:00 2001 From: jacques franc Date: Wed, 10 Dec 2025 10:11:52 +0100 Subject: [PATCH 2/6] adding boxes --- geos-trame/src/geos/trame/app/ui/viewer/viewer.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/geos-trame/src/geos/trame/app/ui/viewer/viewer.py b/geos-trame/src/geos/trame/app/ui/viewer/viewer.py index 03c8585ad..a5603f4df 100644 --- a/geos-trame/src/geos/trame/app/ui/viewer/viewer.py +++ b/geos-trame/src/geos/trame/app/ui/viewer/viewer.py @@ -196,7 +196,7 @@ def _setup_slider( self ) -> None: title_height=0.02, value=perforation_radius, ) - + self.plotter.add_slider_widget( self._on_change_zscale, [ 1, 50 ], @@ -226,6 +226,10 @@ def _on_change_perforation_size( self, value: float ) -> None: def _on_change_zscale( self, value: float ) -> None: if self._mesh_actor is not None: self._mesh_actor.SetScale( 1.0, 1.0, value ) + if self.box_engine._box_polydata_actor is not None and self.box_engine._extracted_cells_actor is not None: + self.box_engine._box_polydata_actor.SetScale( 1.0, 1.0, value ) + self.box_engine._extracted_cells_actor.SetScale( 1.0, 1.0, value ) + self.plotter.renderer.Modified() return From da97dfa2c85cf9e321d166c4e9a12c5994d7eb5b Mon Sep 17 00:00:00 2001 From: jacques franc Date: Wed, 10 Dec 2025 11:33:15 +0100 Subject: [PATCH 3/6] ok for boxes --- geos-trame/src/geos/trame/app/ui/viewer/viewer.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/geos-trame/src/geos/trame/app/ui/viewer/viewer.py b/geos-trame/src/geos/trame/app/ui/viewer/viewer.py index a5603f4df..cd4df5dfa 100644 --- a/geos-trame/src/geos/trame/app/ui/viewer/viewer.py +++ b/geos-trame/src/geos/trame/app/ui/viewer/viewer.py @@ -224,11 +224,16 @@ def _on_change_perforation_size( self, value: float ) -> None: perforation.update_perforation_radius( value ) def _on_change_zscale( self, value: float ) -> None: + self.state[ self.ZAMPLIFICATION ] = value if self._mesh_actor is not None: - self._mesh_actor.SetScale( 1.0, 1.0, value ) - if self.box_engine._box_polydata_actor is not None and self.box_engine._extracted_cells_actor is not None: - self.box_engine._box_polydata_actor.SetScale( 1.0, 1.0, value ) - self.box_engine._extracted_cells_actor.SetScale( 1.0, 1.0, value ) + self._mesh_actor.SetScale( 1.0, 1.0, self.state[ self.ZAMPLIFICATION ] ) + if hasattr( self.box_engine,"_box_polydata_actor" ) and hasattr( self.box_engine,"_extracted_cells_actor" ): + self.box_engine._box_polydata_actor.SetScale( 1.0, 1.0, self.state[ self.ZAMPLIFICATION ] ) + self.box_engine._extracted_cells_actor.SetScale( 1.0, 1.0, self.state[ self.ZAMPLIFICATION ] ) + + if self.plotter.plane_widgets: + self.plotter.plane_widgets[0].PlaceWidget(list(self._mesh_actor.GetBounds())) + self.plotter.plane_widgets[0].SetPlaceFactor(1.) self.plotter.renderer.Modified() return @@ -393,6 +398,8 @@ def _update_box( self, active_block: Box, show_obj: bool ) -> None: if box_polydata is not None and extracted_cell is not None: _box_polydata_actor = self.plotter.add_mesh( box_polydata, opacity=0.2 ) + _box_polydata_actor.SetScale( 1.0, 1.0, self.state[ self.ZAMPLIFICATION ]) _extracted_cells_actor = self.plotter.add_mesh( extracted_cell, show_edges=True ) + _extracted_cells_actor.SetScale( 1.0, 1.0, self.state[ self.ZAMPLIFICATION ]) self.box_engine.set_box_polydata_actor( _box_polydata_actor ) self.box_engine.set_extracted_cells_actor( _extracted_cells_actor ) From f7f49f85c25e11bbdd70f1539f034aea2c6fb9fd Mon Sep 17 00:00:00 2001 From: jacques franc Date: Wed, 10 Dec 2025 12:01:57 +0100 Subject: [PATCH 4/6] and wells --- .../src/geos/trame/app/ui/viewer/viewer.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/geos-trame/src/geos/trame/app/ui/viewer/viewer.py b/geos-trame/src/geos/trame/app/ui/viewer/viewer.py index cd4df5dfa..9e9e60e89 100644 --- a/geos-trame/src/geos/trame/app/ui/viewer/viewer.py +++ b/geos-trame/src/geos/trame/app/ui/viewer/viewer.py @@ -227,13 +227,18 @@ def _on_change_zscale( self, value: float ) -> None: self.state[ self.ZAMPLIFICATION ] = value if self._mesh_actor is not None: self._mesh_actor.SetScale( 1.0, 1.0, self.state[ self.ZAMPLIFICATION ] ) - if hasattr( self.box_engine,"_box_polydata_actor" ) and hasattr( self.box_engine,"_extracted_cells_actor" ): + if hasattr( self.box_engine, "_box_polydata_actor" ) and hasattr( self.box_engine, + "_extracted_cells_actor" ): self.box_engine._box_polydata_actor.SetScale( 1.0, 1.0, self.state[ self.ZAMPLIFICATION ] ) self.box_engine._extracted_cells_actor.SetScale( 1.0, 1.0, self.state[ self.ZAMPLIFICATION ] ) if self.plotter.plane_widgets: - self.plotter.plane_widgets[0].PlaceWidget(list(self._mesh_actor.GetBounds())) - self.plotter.plane_widgets[0].SetPlaceFactor(1.) + self.plotter.plane_widgets[ 0 ].PlaceWidget( list( self._mesh_actor.GetBounds() ) ) + self.plotter.plane_widgets[ 0 ].SetPlaceFactor( 1. ) + + if self.well_engine._wells_actors: + for wa in self.well_engine._wells_actors: + wa.actor.SetScale( 1.0, 1.0, self.state[ self.ZAMPLIFICATION ] ) self.plotter.renderer.Modified() return @@ -257,6 +262,7 @@ def _update_internalwell( self, path: str, show: bool ) -> None: return tube_actor = self.plotter.add_mesh( self.well_engine.get_tube( self.well_engine.get_last_mesh_idx() ) ) + tube_actor.SetScale( 1.0, 1.0, self.state[ self.ZAMPLIFICATION ] ) self.well_engine.append_actor( path, tube_actor ) self.ctrl.view_update() @@ -272,6 +278,7 @@ def _update_vtkwell( self, path: str, show: bool ) -> None: return tube_actor = self.plotter.add_mesh( self.well_engine.get_tube( self.well_engine.get_last_mesh_idx() ) ) + tube_actor.SetScale( 1.0, 1.0, self.state[ self.ZAMPLIFICATION ] ) self.well_engine.append_actor( path, tube_actor ) self.ctrl.view_update() @@ -398,8 +405,8 @@ def _update_box( self, active_block: Box, show_obj: bool ) -> None: if box_polydata is not None and extracted_cell is not None: _box_polydata_actor = self.plotter.add_mesh( box_polydata, opacity=0.2 ) - _box_polydata_actor.SetScale( 1.0, 1.0, self.state[ self.ZAMPLIFICATION ]) + _box_polydata_actor.SetScale( 1.0, 1.0, self.state[ self.ZAMPLIFICATION ] ) _extracted_cells_actor = self.plotter.add_mesh( extracted_cell, show_edges=True ) - _extracted_cells_actor.SetScale( 1.0, 1.0, self.state[ self.ZAMPLIFICATION ]) + _extracted_cells_actor.SetScale( 1.0, 1.0, self.state[ self.ZAMPLIFICATION ] ) self.box_engine.set_box_polydata_actor( _box_polydata_actor ) self.box_engine.set_extracted_cells_actor( _extracted_cells_actor ) From 14ff7f64a4453adae567e4529736542fe229e80d Mon Sep 17 00:00:00 2001 From: jacques franc Date: Wed, 10 Dec 2025 13:49:10 +0100 Subject: [PATCH 5/6] revert wells / not supported yet --- geos-trame/src/geos/trame/app/ui/viewer/viewer.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/geos-trame/src/geos/trame/app/ui/viewer/viewer.py b/geos-trame/src/geos/trame/app/ui/viewer/viewer.py index 9e9e60e89..00149ade1 100644 --- a/geos-trame/src/geos/trame/app/ui/viewer/viewer.py +++ b/geos-trame/src/geos/trame/app/ui/viewer/viewer.py @@ -199,7 +199,7 @@ def _setup_slider( self ) -> None: self.plotter.add_slider_widget( self._on_change_zscale, - [ 1, 50 ], + [ 1, 10 ], title="Z exaggeration", title_opacity=0.5, pointa=( 0.02, 0.37 ), @@ -234,11 +234,11 @@ def _on_change_zscale( self, value: float ) -> None: if self.plotter.plane_widgets: self.plotter.plane_widgets[ 0 ].PlaceWidget( list( self._mesh_actor.GetBounds() ) ) - self.plotter.plane_widgets[ 0 ].SetPlaceFactor( 1. ) + self.plotter.plane_widgets[ 0 ].SetPlaceFactor( self.state[ self.ZAMPLIFICATION ] ) - if self.well_engine._wells_actors: - for wa in self.well_engine._wells_actors: - wa.actor.SetScale( 1.0, 1.0, self.state[ self.ZAMPLIFICATION ] ) + # if self.well_engine._wells_actors: + # for wa in self.well_engine._wells_actors: + # wa.actor.SetScale( 1.0, 1.0, self.state[ self.ZAMPLIFICATION ] ) self.plotter.renderer.Modified() return From 747e645139cfbd98b47086345a3f4b25edf0d1ba Mon Sep 17 00:00:00 2001 From: jacques franc Date: Fri, 19 Dec 2025 11:34:47 +0100 Subject: [PATCH 6/6] fix _on_change_zscale --- geos-trame/src/geos/trame/app/ui/viewer/viewer.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/geos-trame/src/geos/trame/app/ui/viewer/viewer.py b/geos-trame/src/geos/trame/app/ui/viewer/viewer.py index f18e5b5a9..b01c61d2b 100644 --- a/geos-trame/src/geos/trame/app/ui/viewer/viewer.py +++ b/geos-trame/src/geos/trame/app/ui/viewer/viewer.py @@ -227,10 +227,11 @@ def _on_change_zscale( self, value: float ) -> None: self.state[ self.ZAMPLIFICATION ] = value if self._mesh_actor is not None: self._mesh_actor.SetScale( 1.0, 1.0, self.state[ self.ZAMPLIFICATION ] ) - if hasattr( self.box_engine, "_box_polydata_actor" ) and hasattr( self.box_engine, - "_extracted_cells_actor" ): - self.box_engine._box_polydata_actor.SetScale( 1.0, 1.0, self.state[ self.ZAMPLIFICATION ] ) - self.box_engine._extracted_cells_actor.SetScale( 1.0, 1.0, self.state[ self.ZAMPLIFICATION ] ) + for k, _ in self.box_engine.items(): + if hasattr( self.box_engine[ k ], "_box_polydata_actor" ) and hasattr( + self.box_engine[ k ], "_extracted_cells_actor" ): + self.box_engine[ k ]._box_polydata_actor.SetScale( 1.0, 1.0, self.state[ self.ZAMPLIFICATION ] ) + self.box_engine[ k ]._extracted_cells_actor.SetScale( 1.0, 1.0, self.state[ self.ZAMPLIFICATION ] ) if self.plotter.plane_widgets: self.plotter.plane_widgets[ 0 ].PlaceWidget( list( self._mesh_actor.GetBounds() ) )