From 6e2b6c2ca97be55c61523cddc455888e91d055d1 Mon Sep 17 00:00:00 2001 From: Viktor Mai Date: Tue, 21 Jul 2026 08:47:40 -0500 Subject: [PATCH 1/3] Undefined regions in plotter using ndimage --- openmc_plotter/main_window.py | 43 ++++++++++++++++++++++++- openmc_plotter/overlays.py | 1 + openmc_plotter/plotgui.py | 59 ++++++++++++++++++++++++++++++++++- openmc_plotter/plotmodel.py | 39 +++++++++++++++++++++++ 4 files changed, 140 insertions(+), 2 deletions(-) diff --git a/openmc_plotter/main_window.py b/openmc_plotter/main_window.py index 73a53f4..9dcfddd 100755 --- a/openmc_plotter/main_window.py +++ b/openmc_plotter/main_window.py @@ -378,6 +378,16 @@ def createMenuBar(self): self.overlapAct.toggled.connect(overlap_connector) self.editMenu.addAction(self.overlapAct) + self.undefinedAct = QAction('Enable Undefined Region Coloring', self) + self.undefinedAct.setShortcut('Ctrl+I') + self.undefinedAct.setCheckable(True) + self.undefinedAct.setToolTip('Toggle undefined regions') + self.undefinedAct.setStatusTip('Toggle display of undefined ' + '(not found) regions when enabled') + undefined_connector = partial(self.toggleUndefined, apply=True) + self.undefinedAct.toggled.connect(undefined_connector) + self.editMenu.addAction(self.undefinedAct) + self.outlineAct = QAction('Enable Domain Outlines', self) self.outlineAct.setShortcut('Ctrl+U') self.outlineAct.setCheckable(True) @@ -438,7 +448,7 @@ def updateEditMenu(self): self.restoreAction.setDisabled(not changed) toggle_actions = (self.maskingAction, self.highlightingAct, - self.outlineAct, self.overlapAct) + self.outlineAct, self.overlapAct, self.undefinedAct) # Temporarily block signals to avoid triggering plot update for action in toggle_actions: action.blockSignals(True) @@ -446,6 +456,7 @@ def updateEditMenu(self): self.highlightingAct.setChecked(self.model.currentView.highlighting) self.outlineAct.setChecked(self.model.currentView.outlinesCell) self.overlapAct.setChecked(self.model.currentView.color_overlaps) + self.undefinedAct.setChecked(self.model.currentView.color_undefined) for action in toggle_actions: action.blockSignals(False) @@ -742,6 +753,12 @@ def toggleOverlaps(self, state, apply=False): if apply: self.applyChanges() + def toggleUndefined(self, state, apply=False): + self.model.activeView.color_undefined = bool(state) + self.colorDialog.updateUndefined() + if apply: + self.applyChanges() + def editColorMap(self, colormap_name, property_type, apply=False): self.model.activeView.colormaps[property_type] = colormap_name self.plotIm.updateColorMap(colormap_name, property_type) @@ -935,6 +952,30 @@ def editOverlapColor(self, apply=False): if apply: self.applyChanges() + def editUndefinedInternalColor(self, apply=False): + current_color = self.model.activeView.undefined_internal_color + dlg = QColorDialog(self) + dlg.setCurrentColor(QtGui.QColor.fromRgb(*current_color)) + if dlg.exec(): + new_color = dlg.currentColor().getRgb()[:3] + self.model.activeView.undefined_internal_color = new_color + self.colorDialog.updateUndefinedColors() + + if apply: + self.applyChanges() + + def editUndefinedExternalColor(self, apply=False): + current_color = self.model.activeView.undefined_external_color + dlg = QColorDialog(self) + dlg.setCurrentColor(QtGui.QColor.fromRgb(*current_color)) + if dlg.exec(): + new_color = dlg.currentColor().getRgb()[:3] + self.model.activeView.undefined_external_color = new_color + self.colorDialog.updateUndefinedColors() + + if apply: + self.applyChanges() + def editBackgroundColor(self, apply=False): current_color = self.model.activeView.domainBackground dlg = QColorDialog(self) diff --git a/openmc_plotter/overlays.py b/openmc_plotter/overlays.py index a87b453..31b08f7 100644 --- a/openmc_plotter/overlays.py +++ b/openmc_plotter/overlays.py @@ -29,6 +29,7 @@ class ShortcutsOverlay(QWidget): ("Toggle Masking", c_key + "+M"), ("Toggle Highlighting", c_key + "+L"), ("Toggle Overlap Coloring", c_key + "+P"), + ("Toggle Undefined Coloring", c_key + "+I"), ("Toggle Domain Outlines", c_key + "+U"), ("Set XY Basis", "Alt+X"), ("Set YZ Basis", "Alt+Y"), diff --git a/openmc_plotter/plotgui.py b/openmc_plotter/plotgui.py index 1e080b2..dfc865d 100644 --- a/openmc_plotter/plotgui.py +++ b/openmc_plotter/plotgui.py @@ -361,6 +361,20 @@ def _overlapInfo(self, id): label2 = self._cellLabel(cell2) return f"OVERLAP: Universe {universe}, Cells {label1} and {label2}" + def _undefinedInfo(self, event): + """Status-bar text for an undefined (not-found) pixel, if classified.""" + if self.model.undefined_internal is None: + return "" + xPos, yPos = self.getDataIndices(event) + cv = self.model.currentView + if not (0 <= yPos < cv.v_res and 0 <= xPos < cv.h_res): + return "" + if self.model.undefined_internal[yPos, xPos]: + return "WARNING: undefined internal region" + if self.model.undefined_external[yPos, xPos]: + return "Safe external undefined region" + return "" + def mouseDoubleClickEvent(self, event): xCenter, yCenter = self.getPlotCoords(event.pos()) self.main_window.editPlotOrigin(xCenter, yCenter, apply=True) @@ -414,7 +428,7 @@ def mouseMoveEvent(self, event): density, temperature)) else: - domainInfo = "" + domainInfo = self._undefinedInfo(event) if self.model.tally_data is not None: tid, value = self.getTallyInfo(event) @@ -1125,6 +1139,27 @@ def createGeneralTab(self): self.overlapColorButton.setFixedHeight(self.font_metric.height() * 1.5) self.overlapColorButton.clicked.connect(main_window.editOverlapColor) + # Undefined (not-found) region plotting + self.undefinedCheck = QCheckBox('', self) + undefined_connector = partial(main_window.toggleUndefined) + self.undefinedCheck.stateChanged.connect(undefined_connector) + + self.undefinedInternalColorButton = QPushButton() + self.undefinedInternalColorButton.setCursor(QtCore.Qt.PointingHandCursor) + self.undefinedInternalColorButton.setFixedWidth(button_width) + self.undefinedInternalColorButton.setFixedHeight( + self.font_metric.height() * 1.5) + self.undefinedInternalColorButton.clicked.connect( + main_window.editUndefinedInternalColor) + + self.undefinedExternalColorButton = QPushButton() + self.undefinedExternalColorButton.setCursor(QtCore.Qt.PointingHandCursor) + self.undefinedExternalColorButton.setFixedWidth(button_width) + self.undefinedExternalColorButton.setFixedHeight( + self.font_metric.height() * 1.5) + self.undefinedExternalColorButton.clicked.connect( + main_window.editUndefinedExternalColor) + self.colorResetButton = QPushButton("&Reset Colors") self.colorResetButton.setCursor(QtCore.Qt.PointingHandCursor) self.colorResetButton.clicked.connect(main_window.resetColors) @@ -1147,6 +1182,12 @@ def createGeneralTab(self): formLayout.addRow('Show Overlaps:', self.overlapCheck) formLayout.addRow('Overlap Color:', self.overlapColorButton) formLayout.addRow(HorizontalLine()) + formLayout.addRow('Show Undefined:', self.undefinedCheck) + formLayout.addRow('Undefined Internal (warning):', + self.undefinedInternalColorButton) + formLayout.addRow('Undefined External (safe):', + self.undefinedExternalColorButton) + formLayout.addRow(HorizontalLine()) formLayout.addRow('Color Plot By:', self.colorbyBox) formLayout.addRow('Universe Level:', self.universeLevelBox) formLayout.addRow(self.colorResetButton, None) @@ -1314,6 +1355,8 @@ def updateDialogValues(self): self.updateDomainTabs() self.updateOverlap() self.updateOverlapColor() + self.updateUndefined() + self.updateUndefinedColors() def updateMasking(self): masking = self.model.activeView.masking @@ -1383,10 +1426,24 @@ def updateOverlap(self): if colorby in ('cell', 'material'): self.overlapCheck.setChecked(overlap_val) + def updateUndefinedColors(self): + internal = self.model.activeView.undefined_internal_color + external = self.model.activeView.undefined_external_color + style = "border-radius: 8px;background-color: rgb%s" + self.undefinedInternalColorButton.setStyleSheet(style % str(internal)) + self.undefinedExternalColorButton.setStyleSheet(style % str(external)) + + def updateUndefined(self): + colorby = self.model.activeView.colorby + undefined_val = self.model.activeView.color_undefined + if colorby in ('cell', 'material'): + self.undefinedCheck.setChecked(undefined_val) + def updateColorBy(self): colorby = self.model.activeView.colorby self.colorbyBox.setCurrentText(colorby) self.overlapCheck.setEnabled(colorby in ("cell", "material")) + self.undefinedCheck.setEnabled(colorby in ("cell", "material")) self.universeLevelBox.setEnabled(colorby == 'cell') def updateUniverseLevel(self): diff --git a/openmc_plotter/plotmodel.py b/openmc_plotter/plotmodel.py index 6faf2d8..5dfb014 100644 --- a/openmc_plotter/plotmodel.py +++ b/openmc_plotter/plotmodel.py @@ -327,6 +327,13 @@ def __init__(self, use_settings_pkl, model_path, default_res): # Map to be populated by overlap functions self.overlap_info = None + # Boolean masks of undefined (not-found) regions, populated by + # makePlot when undefined-region coloring is enabled. Internal regions + # are enclosed by defined geometry (potentially unsafe); external + # regions connect to the slice boundary. + self.undefined_internal = None + self.undefined_external = None + self.version = __version__ # default statepoint value @@ -585,6 +592,21 @@ def makePlot(self, view: Optional["PlotView"] = None, if dom.highlight: image[self.ids == int(id)] = cv.highlightBackground + # Classify and color undefined (not-found) regions. Internal regions + # are holes enclosed by defined geometry (flagged as a warning); + # external regions connect to the slice boundary and are considered + # safe. + self.undefined_internal = None + self.undefined_external = None + if cv.color_undefined: + _, external, internal = \ + openmc.Model._classify_undefined_regions(self.cell_ids) + if internal is not None: + self.undefined_internal = internal + self.undefined_external = external + image[external] = cv.undefined_external_color + image[internal] = cv.undefined_internal_color + # set model image self.image = image @@ -1228,6 +1250,12 @@ class PlotViewIndependent: RGB color to apply to plot background overlap_color : 3-tuple of int RGB color to apply for cell overlap regions + color_undefined : bool + Indicator of whether or not undefined (not-found) regions will be shown + undefined_internal_color : 3-tuple of int + RGB color to apply for internal (enclosed) undefined regions + undefined_external_color : 3-tuple of int + RGB color to apply for external (boundary-connected) undefined regions domainAlpha : float between 0 and 1 Alpha value of the geometry plot plotVisibile : bool @@ -1277,6 +1305,10 @@ def __init__(self): self.highlightSeed = 1 self.domainBackground = (50, 50, 50) self.overlap_color = (255, 0, 0) + # Undefined (not-found) region coloring + self.color_undefined = False + self.undefined_internal_color = (255, 0, 255) + self.undefined_external_color = (0, 170, 255) self.domainAlpha = 1.0 self.domainVisible = True self.outlinesCell = False @@ -1314,6 +1346,13 @@ def __setstate__(self, state): self.outlinesCell = False if not hasattr(self, 'outlinesMat'): self.outlinesMat = False + # Undefined region coloring (added in a later version) + if not hasattr(self, 'color_undefined'): + self.color_undefined = False + if not hasattr(self, 'undefined_internal_color'): + self.undefined_internal_color = (255, 0, 255) + if not hasattr(self, 'undefined_external_color'): + self.undefined_external_color = (0, 170, 255) # Migrate old boolean attributes to new tallyDataMinMaxType if not hasattr(self, 'tallyDataMinMaxType'): if getattr(self, 'tallyDataUserMinMax', False): From 16f8a17e144c05879863e7c4919d8f0ddb8e393b Mon Sep 17 00:00:00 2001 From: Viktor Mai Date: Wed, 22 Jul 2026 10:26:06 -0500 Subject: [PATCH 2/3] Implemented button for undefined region plotting --- openmc_plotter/main_window.py | 20 ++++-------------- openmc_plotter/plotgui.py | 37 ++++++++++------------------------ openmc_plotter/plotmodel.py | 38 ++++++++++++++--------------------- 3 files changed, 30 insertions(+), 65 deletions(-) diff --git a/openmc_plotter/main_window.py b/openmc_plotter/main_window.py index 9dcfddd..e0b47f1 100755 --- a/openmc_plotter/main_window.py +++ b/openmc_plotter/main_window.py @@ -952,26 +952,14 @@ def editOverlapColor(self, apply=False): if apply: self.applyChanges() - def editUndefinedInternalColor(self, apply=False): - current_color = self.model.activeView.undefined_internal_color + def editUndefinedColor(self, apply=False): + current_color = self.model.activeView.undefined_color dlg = QColorDialog(self) dlg.setCurrentColor(QtGui.QColor.fromRgb(*current_color)) if dlg.exec(): new_color = dlg.currentColor().getRgb()[:3] - self.model.activeView.undefined_internal_color = new_color - self.colorDialog.updateUndefinedColors() - - if apply: - self.applyChanges() - - def editUndefinedExternalColor(self, apply=False): - current_color = self.model.activeView.undefined_external_color - dlg = QColorDialog(self) - dlg.setCurrentColor(QtGui.QColor.fromRgb(*current_color)) - if dlg.exec(): - new_color = dlg.currentColor().getRgb()[:3] - self.model.activeView.undefined_external_color = new_color - self.colorDialog.updateUndefinedColors() + self.model.activeView.undefined_color = new_color + self.colorDialog.updateUndefinedColor() if apply: self.applyChanges() diff --git a/openmc_plotter/plotgui.py b/openmc_plotter/plotgui.py index dfc865d..0df292f 100644 --- a/openmc_plotter/plotgui.py +++ b/openmc_plotter/plotgui.py @@ -371,8 +371,6 @@ def _undefinedInfo(self, event): return "" if self.model.undefined_internal[yPos, xPos]: return "WARNING: undefined internal region" - if self.model.undefined_external[yPos, xPos]: - return "Safe external undefined region" return "" def mouseDoubleClickEvent(self, event): @@ -1144,21 +1142,13 @@ def createGeneralTab(self): undefined_connector = partial(main_window.toggleUndefined) self.undefinedCheck.stateChanged.connect(undefined_connector) - self.undefinedInternalColorButton = QPushButton() - self.undefinedInternalColorButton.setCursor(QtCore.Qt.PointingHandCursor) - self.undefinedInternalColorButton.setFixedWidth(button_width) - self.undefinedInternalColorButton.setFixedHeight( + self.undefinedColorButton = QPushButton() + self.undefinedColorButton.setCursor(QtCore.Qt.PointingHandCursor) + self.undefinedColorButton.setFixedWidth(button_width) + self.undefinedColorButton.setFixedHeight( self.font_metric.height() * 1.5) - self.undefinedInternalColorButton.clicked.connect( - main_window.editUndefinedInternalColor) - - self.undefinedExternalColorButton = QPushButton() - self.undefinedExternalColorButton.setCursor(QtCore.Qt.PointingHandCursor) - self.undefinedExternalColorButton.setFixedWidth(button_width) - self.undefinedExternalColorButton.setFixedHeight( - self.font_metric.height() * 1.5) - self.undefinedExternalColorButton.clicked.connect( - main_window.editUndefinedExternalColor) + self.undefinedColorButton.clicked.connect( + main_window.editUndefinedColor) self.colorResetButton = QPushButton("&Reset Colors") self.colorResetButton.setCursor(QtCore.Qt.PointingHandCursor) @@ -1183,10 +1173,7 @@ def createGeneralTab(self): formLayout.addRow('Overlap Color:', self.overlapColorButton) formLayout.addRow(HorizontalLine()) formLayout.addRow('Show Undefined:', self.undefinedCheck) - formLayout.addRow('Undefined Internal (warning):', - self.undefinedInternalColorButton) - formLayout.addRow('Undefined External (safe):', - self.undefinedExternalColorButton) + formLayout.addRow('Undefined Color:', self.undefinedColorButton) formLayout.addRow(HorizontalLine()) formLayout.addRow('Color Plot By:', self.colorbyBox) formLayout.addRow('Universe Level:', self.universeLevelBox) @@ -1356,7 +1343,7 @@ def updateDialogValues(self): self.updateOverlap() self.updateOverlapColor() self.updateUndefined() - self.updateUndefinedColors() + self.updateUndefinedColor() def updateMasking(self): masking = self.model.activeView.masking @@ -1426,12 +1413,10 @@ def updateOverlap(self): if colorby in ('cell', 'material'): self.overlapCheck.setChecked(overlap_val) - def updateUndefinedColors(self): - internal = self.model.activeView.undefined_internal_color - external = self.model.activeView.undefined_external_color + def updateUndefinedColor(self): + color = self.model.activeView.undefined_color style = "border-radius: 8px;background-color: rgb%s" - self.undefinedInternalColorButton.setStyleSheet(style % str(internal)) - self.undefinedExternalColorButton.setStyleSheet(style % str(external)) + self.undefinedColorButton.setStyleSheet(style % str(color)) def updateUndefined(self): colorby = self.model.activeView.colorby diff --git a/openmc_plotter/plotmodel.py b/openmc_plotter/plotmodel.py index 5dfb014..d41d3ce 100644 --- a/openmc_plotter/plotmodel.py +++ b/openmc_plotter/plotmodel.py @@ -327,12 +327,11 @@ def __init__(self, use_settings_pkl, model_path, default_res): # Map to be populated by overlap functions self.overlap_info = None - # Boolean masks of undefined (not-found) regions, populated by + # Boolean mask of internal undefined (not-found) regions, populated by # makePlot when undefined-region coloring is enabled. Internal regions # are enclosed by defined geometry (potentially unsafe); external - # regions connect to the slice boundary. + # (boundary-connected) undefined regions are intentionally ignored. self.undefined_internal = None - self.undefined_external = None self.version = __version__ @@ -592,20 +591,17 @@ def makePlot(self, view: Optional["PlotView"] = None, if dom.highlight: image[self.ids == int(id)] = cv.highlightBackground - # Classify and color undefined (not-found) regions. Internal regions - # are holes enclosed by defined geometry (flagged as a warning); - # external regions connect to the slice boundary and are considered - # safe. + # Classify and color undefined (not-found) regions. Only internal + # regions (holes enclosed by defined geometry) are flagged as a + # warning; external regions connect to the slice boundary and are + # left untouched. self.undefined_internal = None - self.undefined_external = None if cv.color_undefined: - _, external, internal = \ + _, _, internal = \ openmc.Model._classify_undefined_regions(self.cell_ids) if internal is not None: self.undefined_internal = internal - self.undefined_external = external - image[external] = cv.undefined_external_color - image[internal] = cv.undefined_internal_color + image[internal] = cv.undefined_color # set model image self.image = image @@ -1251,11 +1247,10 @@ class PlotViewIndependent: overlap_color : 3-tuple of int RGB color to apply for cell overlap regions color_undefined : bool - Indicator of whether or not undefined (not-found) regions will be shown - undefined_internal_color : 3-tuple of int + Indicator of whether or not internal undefined (not-found) regions + will be shown + undefined_color : 3-tuple of int RGB color to apply for internal (enclosed) undefined regions - undefined_external_color : 3-tuple of int - RGB color to apply for external (boundary-connected) undefined regions domainAlpha : float between 0 and 1 Alpha value of the geometry plot plotVisibile : bool @@ -1305,10 +1300,9 @@ def __init__(self): self.highlightSeed = 1 self.domainBackground = (50, 50, 50) self.overlap_color = (255, 0, 0) - # Undefined (not-found) region coloring + # Undefined (not-found) region coloring (internal regions only) self.color_undefined = False - self.undefined_internal_color = (255, 0, 255) - self.undefined_external_color = (0, 170, 255) + self.undefined_color = (255, 0, 255) self.domainAlpha = 1.0 self.domainVisible = True self.outlinesCell = False @@ -1349,10 +1343,8 @@ def __setstate__(self, state): # Undefined region coloring (added in a later version) if not hasattr(self, 'color_undefined'): self.color_undefined = False - if not hasattr(self, 'undefined_internal_color'): - self.undefined_internal_color = (255, 0, 255) - if not hasattr(self, 'undefined_external_color'): - self.undefined_external_color = (0, 170, 255) + if not hasattr(self, 'undefined_color'): + self.undefined_color = (255, 0, 255) # Migrate old boolean attributes to new tallyDataMinMaxType if not hasattr(self, 'tallyDataMinMaxType'): if getattr(self, 'tallyDataUserMinMax', False): From b14a92412daa88969aba4099ce2047c24888aa22 Mon Sep 17 00:00:00 2001 From: Viktor Mai Date: Wed, 22 Jul 2026 10:37:31 -0500 Subject: [PATCH 3/3] Improved undefined region workflow --- openmc_plotter/plotgui.py | 36 ++++++++++++++++++++++++------------ openmc_plotter/plotmodel.py | 4 ++-- 2 files changed, 26 insertions(+), 14 deletions(-) diff --git a/openmc_plotter/plotgui.py b/openmc_plotter/plotgui.py index 0df292f..6cb5a34 100644 --- a/openmc_plotter/plotgui.py +++ b/openmc_plotter/plotgui.py @@ -361,15 +361,19 @@ def _overlapInfo(self, id): label2 = self._cellLabel(cell2) return f"OVERLAP: Universe {universe}, Cells {label1} and {label2}" - def _undefinedInfo(self, event): - """Status-bar text for an undefined (not-found) pixel, if classified.""" + def _isUndefinedInternal(self, event): + """Whether the pixel under the event is an internal undefined region.""" if self.model.undefined_internal is None: - return "" + return False xPos, yPos = self.getDataIndices(event) cv = self.model.currentView if not (0 <= yPos < cv.v_res and 0 <= xPos < cv.h_res): - return "" - if self.model.undefined_internal[yPos, xPos]: + return False + return bool(self.model.undefined_internal[yPos, xPos]) + + def _undefinedInfo(self, event): + """Status-bar text for an undefined (not-found) pixel, if classified.""" + if self._isUndefinedInternal(event): return "WARNING: undefined internal region" return "" @@ -580,7 +584,16 @@ def contextMenuEvent(self, event): if cv.colorby not in _MODEL_PROPERTIES: self.menu.addSeparator() - if int(id) == _NOT_FOUND: + if int(id) == _NOT_FOUND and self._isUndefinedInternal(event): + undefColorAction = self.menu.addAction( + 'Edit Undefined Color...') + undefColorAction.setToolTip('Edit undefined color') + undefColorAction.setStatusTip( + 'Edit plot undefined region color') + connector = partial(self.main_window.editUndefinedColor, + apply=True) + undefColorAction.triggered.connect(connector) + elif int(id) == _NOT_FOUND: bgColorAction = self.menu.addAction( 'Edit Background Color...') bgColorAction.setToolTip('Edit background color') @@ -610,6 +623,7 @@ def contextMenuEvent(self, event): self.menu.addAction(self.main_window.maskingAction) self.menu.addAction(self.main_window.highlightingAct) self.menu.addAction(self.main_window.overlapAct) + self.menu.addAction(self.main_window.undefinedAct) self.menu.addSeparator() self.menu.addAction(self.main_window.dockAction) @@ -1145,10 +1159,8 @@ def createGeneralTab(self): self.undefinedColorButton = QPushButton() self.undefinedColorButton.setCursor(QtCore.Qt.PointingHandCursor) self.undefinedColorButton.setFixedWidth(button_width) - self.undefinedColorButton.setFixedHeight( - self.font_metric.height() * 1.5) - self.undefinedColorButton.clicked.connect( - main_window.editUndefinedColor) + self.undefinedColorButton.setFixedHeight(self.font_metric.height() * 1.5) + self.undefinedColorButton.clicked.connect(main_window.editUndefinedColor) self.colorResetButton = QPushButton("&Reset Colors") self.colorResetButton.setCursor(QtCore.Qt.PointingHandCursor) @@ -1415,8 +1427,8 @@ def updateOverlap(self): def updateUndefinedColor(self): color = self.model.activeView.undefined_color - style = "border-radius: 8px;background-color: rgb%s" - self.undefinedColorButton.setStyleSheet(style % str(color)) + self.undefinedColorButton.setStyleSheet("border-radius: 8px;" + "background-color: rgb%s" % (str(color))) def updateUndefined(self): colorby = self.model.activeView.colorby diff --git a/openmc_plotter/plotmodel.py b/openmc_plotter/plotmodel.py index d41d3ce..d77125f 100644 --- a/openmc_plotter/plotmodel.py +++ b/openmc_plotter/plotmodel.py @@ -1302,7 +1302,7 @@ def __init__(self): self.overlap_color = (255, 0, 0) # Undefined (not-found) region coloring (internal regions only) self.color_undefined = False - self.undefined_color = (255, 0, 255) + self.undefined_color = (255, 165, 0) self.domainAlpha = 1.0 self.domainVisible = True self.outlinesCell = False @@ -1344,7 +1344,7 @@ def __setstate__(self, state): if not hasattr(self, 'color_undefined'): self.color_undefined = False if not hasattr(self, 'undefined_color'): - self.undefined_color = (255, 0, 255) + self.undefined_color = (255, 165, 0) # Migrate old boolean attributes to new tallyDataMinMaxType if not hasattr(self, 'tallyDataMinMaxType'): if getattr(self, 'tallyDataUserMinMax', False):