diff --git a/plugins/UFPWriter/UFPWriter.py b/plugins/UFPWriter/UFPWriter.py index 9c323964ed..d7671d02c8 100644 --- a/plugins/UFPWriter/UFPWriter.py +++ b/plugins/UFPWriter/UFPWriter.py @@ -12,6 +12,7 @@ from PyQt6.QtCore import QBuffer from UM.Application import Application from UM.Logger import Logger +from UM.Settings.SettingFunction import SettingFunction from UM.Mesh.MeshWriter import MeshWriter # The writer we need to implement. from UM.MimeTypeDatabase import MimeTypeDatabase, MimeType from UM.PluginRegistry import PluginRegistry # To get the g-code writer. @@ -233,11 +234,17 @@ class UFPWriter(MeshWriter): # Add global user or quality changes global_flattened_changes = InstanceContainer.createMergedInstanceContainer(global_stack.userChanges, global_stack.qualityChanges) for setting in global_flattened_changes.getAllKeys(): - settings["global"]["changes"][setting] = str(global_flattened_changes.getProperty(setting, "value")) + value = global_flattened_changes.getProperty(setting, "value") + if isinstance(value, SettingFunction): + value = value(global_flattened_changes) + settings["global"]["changes"][setting] = value # Get global all settings values without user or quality changes for setting in global_stack.getAllKeys(): - settings["global"]["all_settings"][setting] = str(global_stack.getProperty(setting, "value")) + value = global_stack.getProperty(setting, "value") + if isinstance(value, SettingFunction): + value = value(global_stack) + settings["global"]["all_settings"][setting] = value for i, extruder in enumerate(global_stack.extruderList): # Add extruder fields to settings dictionary @@ -249,10 +256,16 @@ class UFPWriter(MeshWriter): # Add extruder user or quality changes extruder_flattened_changes = InstanceContainer.createMergedInstanceContainer(extruder.userChanges, extruder.qualityChanges) for setting in extruder_flattened_changes.getAllKeys(): - settings[f"extruder_{i}"]["changes"][setting] = str(extruder_flattened_changes.getProperty(setting, "value")) + value = extruder_flattened_changes.getProperty(setting, "value") + if isinstance(value, SettingFunction): + value = value(extruder_flattened_changes) + settings[f"extruder_{i}"]["changes"][setting] = value # Get extruder all settings values without user or quality changes for setting in extruder.getAllKeys(): - settings[f"extruder_{i}"]["all_settings"][setting] = str(extruder.getProperty(setting, "value")) + value = extruder.getProperty(setting, "value") + if isinstance(value, SettingFunction): + value = value(extruder) + settings[f"extruder_{i}"]["all_settings"][setting] = value return settings