diff --git a/cura/Settings/CuraStackBuilder.py b/cura/Settings/CuraStackBuilder.py index 9fd51d4563..a25a487c6e 100644 --- a/cura/Settings/CuraStackBuilder.py +++ b/cura/Settings/CuraStackBuilder.py @@ -299,24 +299,4 @@ class CuraStackBuilder: stack.setMetaDataEntry("is_abstract_machine", True) stack.setMetaDataEntry("is_online", True) - return stack - - @classmethod - def createFlattenedContainerInstance(cls, instance_container1, instance_container2): - """Create a new container with container 2 as base and container 1 written over it.""" - - flat_container = InstanceContainer(instance_container2.getName()) - - # The metadata includes id, name and definition - flat_container.setMetaData(copy.deepcopy(instance_container2.getMetaData())) - - if instance_container1.getDefinition(): - flat_container.setDefinition(instance_container1.getDefinition().getId()) - - for key in instance_container2.getAllKeys(): - flat_container.setProperty(key, "value", instance_container2.getProperty(key, "value")) - - for key in instance_container1.getAllKeys(): - flat_container.setProperty(key, "value", instance_container1.getProperty(key, "value")) - - return flat_container + return stack \ No newline at end of file diff --git a/plugins/GCodeWriter/GCodeWriter.py b/plugins/GCodeWriter/GCodeWriter.py index d58690d3be..667e064d90 100644 --- a/plugins/GCodeWriter/GCodeWriter.py +++ b/plugins/GCodeWriter/GCodeWriter.py @@ -127,22 +127,22 @@ class GCodeWriter(MeshWriter): container_with_profile.setDefinition(machine_definition_id_for_quality) container_with_profile.setMetaDataEntry("setting_version", stack.quality.getMetaDataEntry("setting_version")) - flat_global_container = CuraStackBuilder.createFlattenedContainerInstance(stack.userChanges, container_with_profile) + merged_global_instance_container = InstanceContainer.createMergedInstanceContainer(stack.userChanges, container_with_profile) # If the quality changes is not set, we need to set type manually - if flat_global_container.getMetaDataEntry("type", None) is None: - flat_global_container.setMetaDataEntry("type", "quality_changes") + if merged_global_instance_container.getMetaDataEntry("type", None) is None: + merged_global_instance_container.setMetaDataEntry("type", "quality_changes") # Ensure that quality_type is set. (Can happen if we have empty quality changes). - if flat_global_container.getMetaDataEntry("quality_type", None) is None: - flat_global_container.setMetaDataEntry("quality_type", stack.quality.getMetaDataEntry("quality_type", "normal")) + if merged_global_instance_container.getMetaDataEntry("quality_type", None) is None: + merged_global_instance_container.setMetaDataEntry("quality_type", stack.quality.getMetaDataEntry("quality_type", "normal")) # Get the machine definition ID for quality profiles - flat_global_container.setMetaDataEntry("definition", machine_definition_id_for_quality) + merged_global_instance_container.setMetaDataEntry("definition", machine_definition_id_for_quality) - serialized = flat_global_container.serialize() + serialized = merged_global_instance_container.serialize() data = {"global_quality": serialized} - all_setting_keys = flat_global_container.getAllKeys() + all_setting_keys = merged_global_instance_container.getAllKeys() for extruder in stack.extruderList: extruder_quality = extruder.qualityChanges if extruder_quality.getId() == "empty_quality_changes": @@ -156,7 +156,7 @@ class GCodeWriter(MeshWriter): extruder_quality.setDefinition(machine_definition_id_for_quality) extruder_quality.setMetaDataEntry("setting_version", stack.quality.getMetaDataEntry("setting_version")) - flat_extruder_quality = CuraStackBuilder.createFlattenedContainerInstance(extruder.userChanges, extruder_quality) + flat_extruder_quality = InstanceContainer.createMergedInstanceContainer(extruder.userChanges, extruder_quality) # If the quality changes is not set, we need to set type manually if flat_extruder_quality.getMetaDataEntry("type", None) is None: flat_extruder_quality.setMetaDataEntry("type", "quality_changes") diff --git a/plugins/UFPWriter/UFPWriter.py b/plugins/UFPWriter/UFPWriter.py index 91229319f4..8cb8cc43d0 100644 --- a/plugins/UFPWriter/UFPWriter.py +++ b/plugins/UFPWriter/UFPWriter.py @@ -18,6 +18,7 @@ from UM.PluginRegistry import PluginRegistry # To get the g-code writer. from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator from UM.Scene.SceneNode import SceneNode +from UM.Settings.InstanceContainer import InstanceContainer from cura.CuraApplication import CuraApplication from cura.Settings.CuraStackBuilder import CuraStackBuilder from cura.Settings.GlobalStack import GlobalStack @@ -225,7 +226,7 @@ class UFPWriter(MeshWriter): global_stack = cast(GlobalStack, Application.getInstance().getGlobalContainerStack()) # Add global user or quality changes - global_flattened_changes = CuraStackBuilder.createFlattenedContainerInstance(global_stack.userChanges, global_stack.qualityChanges) + global_flattened_changes = InstanceContainer.createMergedInstanceContainer(global_stack.userChanges, global_stack.qualityChanges) for setting in global_flattened_changes.getAllKeys(): settings["global"]["changes"][setting] = global_flattened_changes.getProperty(setting, "value") @@ -240,7 +241,7 @@ class UFPWriter(MeshWriter): settings[f"extruder_{i}"]["all_settings"] = {} # Add extruder user or quality changes - extruder_flattened_changes = CuraStackBuilder.createFlattenedContainerInstance(extruder.userChanges, extruder.qualityChanges) + extruder_flattened_changes = InstanceContainer.createMergedInstanceContainer(extruder.userChanges, extruder.qualityChanges) for setting in extruder_flattened_changes.getAllKeys(): settings[f"extruder_{i}"]["changes"][setting] = extruder_flattened_changes.getProperty(setting, "value")