@@ -27,6 +27,7 @@ def __init__(
2727
2828 self ._domain_data = {}
2929 self ._color_maps = {}
30+ self ._visibility_maps = {}
3031 self ._setDomainData (material_domains , cell_domains )
3132
3233 mode_value = self ._resolveModeValue (initial_color_mode )
@@ -302,6 +303,18 @@ def _setDomainData(self, material_domains, cell_domains):
302303 self ._cell_mode : self ._normalizeDomainMap (cell_domains ),
303304 }
304305
306+ previous_visibility = self ._visibility_maps
307+ self ._visibility_maps = {
308+ self ._material_mode : {
309+ domain_id : previous_visibility .get (self ._material_mode , {}).get (domain_id , True )
310+ for domain_id in self ._domain_data [self ._material_mode ]
311+ },
312+ self ._cell_mode : {
313+ domain_id : previous_visibility .get (self ._cell_mode , {}).get (domain_id , True )
314+ for domain_id in self ._domain_data [self ._cell_mode ]
315+ },
316+ }
317+
305318 self ._color_maps = {
306319 self ._material_mode : {
307320 domain_id : entry ["color" ]
@@ -402,7 +415,8 @@ def _populateVisibilityList(self, items):
402415 label .setTextInteractionFlags (QtCore .Qt .TextSelectableByMouse )
403416
404417 checkbox = QCheckBox (row )
405- checkbox .setChecked (True )
418+ visible = self ._visibility_maps .setdefault (mode , {}).setdefault (domain_id , True )
419+ checkbox .setChecked (visible )
406420
407421 checkbox .toggled .connect (
408422 lambda checked , did = domain_id : self ._onVisibilityToggle (did , checked )
@@ -442,6 +456,8 @@ def _setColorButtonStyle(self, button, rgb):
442456 )
443457
444458 def _onVisibilityToggle (self , domain_id , checked ):
459+ mode = self .modeCombo .currentData ()
460+ self ._visibility_maps .setdefault (mode , {})[int (domain_id )] = bool (checked )
445461 self .plotter .set_visibility (domain_id , checked )
446462 self .gl_widget .request_final_render ()
447463
@@ -474,9 +490,17 @@ def _applyMappedColors(self, mode):
474490 except Exception :
475491 continue
476492
493+ def _applyMappedVisibility (self , mode ):
494+ for domain_id , visible in self ._visibility_maps .get (mode , {}).items ():
495+ try :
496+ self .plotter .set_visibility (domain_id , visible )
497+ except Exception :
498+ continue
499+
477500 def _refreshCurrentMode (self , mode , request_render ):
478501 self .plotter .set_color_by (mode )
479502 self ._applyMappedColors (mode )
503+ self ._applyMappedVisibility (mode )
480504 self ._populateVisibilityList (self ._domainItemsForMode (mode ))
481505 if request_render :
482506 self .gl_widget .request_final_render ()
0 commit comments