From ccf9a47f085ac66bf57ec04e99a04bd984770641 Mon Sep 17 00:00:00 2001 From: "c.lamboo" Date: Thu, 6 Oct 2022 15:49:51 +0200 Subject: [PATCH] Flatten equation in UFP settings export --- 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..6510a52a41 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(property_value, SettingFunction): + property_value = property_value(value) + 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(property_value, SettingFunction): + property_value = property_value(value) + 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(property_value, SettingFunction): + property_value = property_value(value) + 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(property_value, SettingFunction): + property_value = property_value(value) + settings[f"extruder_{i}"]["all_settings"][setting] = value return settings