From efe3014d5560089c7dce8a6a8d2cd60891a0c736 Mon Sep 17 00:00:00 2001 From: "c.lamboo" Date: Thu, 6 Oct 2022 16:05:59 +0200 Subject: [PATCH] Merge branch '5.2' of github.com:Ultimaker/Cura into 5.2 # Conflicts: # plugins/UFPWriter/UFPWriter.py --- plugins/UFPWriter/UFPWriter.py | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) 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