From bb187d6a485711cd06887551defdb67e8ec9a655 Mon Sep 17 00:00:00 2001 From: jacques franc Date: Tue, 9 Dec 2025 13:27:09 +0100 Subject: [PATCH 1/4] multi box view --- .../src/geos/trame/app/ui/viewer/viewer.py | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 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 252e793e2..1372b0fe4 100644 --- a/geos-trame/src/geos/trame/app/ui/viewer/viewer.py +++ b/geos-trame/src/geos/trame/app/ui/viewer/viewer.py @@ -62,7 +62,7 @@ def __init__( self.SELECTED_DATA_ARRAY = "viewer_selected_data_array" self.state.change( self.SELECTED_DATA_ARRAY )( self._update_actor_array ) - self.box_engine: BoxViewer | None = None + self.box_engine: dict[str, BoxViewer] = {} self.region_engine = region_viewer self.well_engine = well_viewer self._perforations: dict[ str, PerforationViewer ] = {} @@ -354,23 +354,24 @@ def _update_box( self, active_block: Box, show_obj: bool ) -> None: ) return - if self.box_engine is not None: - box_polydata_actor: pv.Actor = self.box_engine.get_box_polydata_actor() - extracted_cell_actor: pv.Actor = self.box_engine.get_extracted_cells_actor() + if self.box_engine is not None and active_block.name in self.box_engine: + box_polydata_actor: pv.Actor = self.box_engine[active_block.name].get_box_polydata_actor() + extracted_cell_actor: pv.Actor = self.box_engine[active_block.name].get_extracted_cells_actor() self.plotter.remove_actor( box_polydata_actor ) self.plotter.remove_actor( extracted_cell_actor ) + del self.box_engine[active_block.name] if not show_obj: return box: Box = active_block - self.box_engine = BoxViewer( self.region_engine.input, box ) + self.box_engine[active_block.name] = BoxViewer( self.region_engine.input, box ) - box_polydata: pv.PolyData = self.box_engine.get_box_polydata() - extracted_cell: pv.UnstructuredGrid = self.box_engine.get_extracted_cells() + box_polydata: pv.PolyData = self.box_engine[active_block.name].get_box_polydata() + extracted_cell: pv.UnstructuredGrid = self.box_engine[active_block.name].get_extracted_cells() if box_polydata is not None and extracted_cell is not None: _box_polydata_actor = self.plotter.add_mesh( box_polydata, opacity=0.2 ) _extracted_cells_actor = self.plotter.add_mesh( extracted_cell, show_edges=True ) - self.box_engine.set_box_polydata_actor( _box_polydata_actor ) - self.box_engine.set_extracted_cells_actor( _extracted_cells_actor ) + self.box_engine[active_block.name].set_box_polydata_actor( _box_polydata_actor ) + self.box_engine[active_block.name].set_extracted_cells_actor( _extracted_cells_actor ) From ce2da8f7ad5adad5a92eab71ec73ba6191c62571 Mon Sep 17 00:00:00 2001 From: jacques franc Date: Tue, 9 Dec 2025 16:57:15 +0100 Subject: [PATCH 2/4] yapf fixes --- .../src/geos/trame/app/ui/viewer/viewer.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 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 1372b0fe4..9a4c68564 100644 --- a/geos-trame/src/geos/trame/app/ui/viewer/viewer.py +++ b/geos-trame/src/geos/trame/app/ui/viewer/viewer.py @@ -62,7 +62,7 @@ def __init__( self.SELECTED_DATA_ARRAY = "viewer_selected_data_array" self.state.change( self.SELECTED_DATA_ARRAY )( self._update_actor_array ) - self.box_engine: dict[str, BoxViewer] = {} + self.box_engine: dict[ str, BoxViewer ] = {} self.region_engine = region_viewer self.well_engine = well_viewer self._perforations: dict[ str, PerforationViewer ] = {} @@ -355,23 +355,23 @@ def _update_box( self, active_block: Box, show_obj: bool ) -> None: return if self.box_engine is not None and active_block.name in self.box_engine: - box_polydata_actor: pv.Actor = self.box_engine[active_block.name].get_box_polydata_actor() - extracted_cell_actor: pv.Actor = self.box_engine[active_block.name].get_extracted_cells_actor() + box_polydata_actor: pv.Actor = self.box_engine[ active_block.name ].get_box_polydata_actor() + extracted_cell_actor: pv.Actor = self.box_engine[ active_block.name ].get_extracted_cells_actor() self.plotter.remove_actor( box_polydata_actor ) self.plotter.remove_actor( extracted_cell_actor ) - del self.box_engine[active_block.name] + del self.box_engine[ active_block.name ] if not show_obj: return box: Box = active_block - self.box_engine[active_block.name] = BoxViewer( self.region_engine.input, box ) + self.box_engine[ active_block.name ] = BoxViewer( self.region_engine.input, box ) - box_polydata: pv.PolyData = self.box_engine[active_block.name].get_box_polydata() - extracted_cell: pv.UnstructuredGrid = self.box_engine[active_block.name].get_extracted_cells() + box_polydata: pv.PolyData = self.box_engine[ active_block.name ].get_box_polydata() + extracted_cell: pv.UnstructuredGrid = self.box_engine[ active_block.name ].get_extracted_cells() if box_polydata is not None and extracted_cell is not None: _box_polydata_actor = self.plotter.add_mesh( box_polydata, opacity=0.2 ) _extracted_cells_actor = self.plotter.add_mesh( extracted_cell, show_edges=True ) - self.box_engine[active_block.name].set_box_polydata_actor( _box_polydata_actor ) - self.box_engine[active_block.name].set_extracted_cells_actor( _extracted_cells_actor ) + self.box_engine[ active_block.name ].set_box_polydata_actor( _box_polydata_actor ) + self.box_engine[ active_block.name ].set_extracted_cells_actor( _extracted_cells_actor ) From 28969c9ae0a7ad160219ce213054fe808ab6ef06 Mon Sep 17 00:00:00 2001 From: jacques franc Date: Tue, 9 Dec 2025 17:22:02 +0100 Subject: [PATCH 3/4] fix test --- geos-trame/tests/test_box_intersection.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/geos-trame/tests/test_box_intersection.py b/geos-trame/tests/test_box_intersection.py index 06db5df41..602a33118 100644 --- a/geos-trame/tests/test_box_intersection.py +++ b/geos-trame/tests/test_box_intersection.py @@ -26,8 +26,8 @@ def test_box_intersection( trame_server_layout: tuple[ Server, VAppLayout ] ) -> app.deckInspector.state.object_state = [ "Problem/Geometry/0/Box/0", True ] app.deckInspector.state.flush() - box = app.deckViewer.box_engine._box - cells = app.deckViewer.box_engine._extracted_cells + box = app.deckViewer.box_engine["box_1"]._box + cells = app.deckViewer.box_engine["box_1"]._extracted_cells assert box is not None assert box.x_min == '{ 3509, 4117, -596 }' From 620eb0d27aaec2d9dca80ae8878f2351849af001 Mon Sep 17 00:00:00 2001 From: jacques franc Date: Tue, 9 Dec 2025 17:34:42 +0100 Subject: [PATCH 4/4] yapf again --- geos-trame/tests/test_box_intersection.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/geos-trame/tests/test_box_intersection.py b/geos-trame/tests/test_box_intersection.py index 602a33118..72efb76fb 100644 --- a/geos-trame/tests/test_box_intersection.py +++ b/geos-trame/tests/test_box_intersection.py @@ -26,8 +26,8 @@ def test_box_intersection( trame_server_layout: tuple[ Server, VAppLayout ] ) -> app.deckInspector.state.object_state = [ "Problem/Geometry/0/Box/0", True ] app.deckInspector.state.flush() - box = app.deckViewer.box_engine["box_1"]._box - cells = app.deckViewer.box_engine["box_1"]._extracted_cells + box = app.deckViewer.box_engine[ "box_1" ]._box + cells = app.deckViewer.box_engine[ "box_1" ]._extracted_cells assert box is not None assert box.x_min == '{ 3509, 4117, -596 }'