diff --git a/cura/Settings/ExtruderStack.py b/cura/Settings/ExtruderStack.py index 18a9969828..5fca888e4d 100644 --- a/cura/Settings/ExtruderStack.py +++ b/cura/Settings/ExtruderStack.py @@ -59,6 +59,12 @@ class ExtruderStack(CuraContainerStack): if not super().getProperty(key, "settable_per_extruder"): return self.getNextStack().getProperty(key, property_name) + limit_to_extruder = super().getProperty(key, "limit_to_extruder") + if (limit_to_extruder is not None and limit_to_extruder != "-1") and self.getMetaDataEntry("position") != str(limit_to_extruder): + result = self.getNextStack().extruders[int(limit_to_extruder)].getProperty(key, property_name) + if result is not None: + return result + return super().getProperty(key, property_name) @override(CuraContainerStack) diff --git a/cura/Settings/GlobalStack.py b/cura/Settings/GlobalStack.py index cee141cf93..2f5cb48743 100755 --- a/cura/Settings/GlobalStack.py +++ b/cura/Settings/GlobalStack.py @@ -71,6 +71,7 @@ class GlobalStack(CuraContainerStack): if not self.definition.findDefinitions(key = key): return None + # Handle the "resolve" property. if self._shouldResolve(key, property_name): self._resolving_settings.add(key) resolve = super().getProperty(key, "resolve") @@ -78,6 +79,13 @@ class GlobalStack(CuraContainerStack): if resolve is not None: return resolve + # Handle the "limit_to_extruder" property. + limit_to_extruder = super().getProperty(key, "limit_to_extruder") + if limit_to_extruder is not None and limit_to_extruder != "-1": + result = self._extruders[int(limit_to_extruder)].getProperty(key, property_name) + if result is not None: + return result + return super().getProperty(key, property_name) ## Overridden from ContainerStack