diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index 53d509b71c..79233022c6 100644 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -28,6 +28,7 @@ from cura.SetParentOperation import SetParentOperation from UM.Settings.SettingDefinition import SettingDefinition, DefinitionPropertyType from UM.Settings.ContainerRegistry import ContainerRegistry +from UM.Settings.SettingFunction import SettingFunction from UM.i18n import i18nCatalog @@ -71,7 +72,6 @@ except ImportError: CuraVersion = "master" # [CodeStyle: Reflecting imported value] CuraBuildType = "" - class CuraApplication(QtApplication): class ResourceTypes: QmlFiles = Resources.UserType + 1 @@ -100,6 +100,7 @@ class CuraApplication(QtApplication): SettingDefinition.addSupportedProperty("global_inherits_stack", DefinitionPropertyType.Function, default = "-1") SettingDefinition.addSettingType("extruder", None, str, Validator) + SettingFunction.registerOperator("extruderValues", cura.Settings.ExtruderManager.getExtruderValues) ## Add the 4 types of profiles to storage. Resources.addStorageType(self.ResourceTypes.QualityInstanceContainer, "quality") Resources.addStorageType(self.ResourceTypes.VariantInstanceContainer, "variants") diff --git a/cura/Settings/ExtruderManager.py b/cura/Settings/ExtruderManager.py index 47359a5e97..3925f67295 100644 --- a/cura/Settings/ExtruderManager.py +++ b/cura/Settings/ExtruderManager.py @@ -273,3 +273,25 @@ class ExtruderManager(QObject): global_stack = UM.Application.getInstance().getGlobalContainerStack() if global_stack and global_stack.getBottom(): self.addMachineExtruders(global_stack.getBottom(), global_stack.getId()) + + @staticmethod + def getExtruderValues(name): + global_stack = UM.Application.getInstance().getGlobalContainerStack() + + result = [] + for extruder in ExtruderManager.getInstance().getMachineExtruders(global_stack.getId()): + value = extruder.getRawProperty(name, "value", use_next = False) + + if not value: + continue + + if isinstance(value, UM.Settings.SettingFunction): + value = value(extruder) + + result.append(value) + + if not result: + result.append(global_stack.getProperty(name, "value")) + + return result +