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..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: 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 ) diff --git a/geos-trame/tests/test_box_intersection.py b/geos-trame/tests/test_box_intersection.py index 06db5df41..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 - 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 }'