mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-07 06:57:28 -06:00
Move CreateFlattendContainerInstance to InstanceContainer
It didn't really belong in the stack builder, as it's not a containerstack CURA-9224
This commit is contained in:
parent
a27bf8f7ed
commit
8dc2eaf783
3 changed files with 13 additions and 32 deletions
|
@ -300,23 +300,3 @@ class CuraStackBuilder:
|
||||||
stack.setMetaDataEntry("is_online", True)
|
stack.setMetaDataEntry("is_online", True)
|
||||||
|
|
||||||
return stack
|
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
|
|
||||||
|
|
|
@ -127,22 +127,22 @@ class GCodeWriter(MeshWriter):
|
||||||
container_with_profile.setDefinition(machine_definition_id_for_quality)
|
container_with_profile.setDefinition(machine_definition_id_for_quality)
|
||||||
container_with_profile.setMetaDataEntry("setting_version", stack.quality.getMetaDataEntry("setting_version"))
|
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 the quality changes is not set, we need to set type manually
|
||||||
if flat_global_container.getMetaDataEntry("type", None) is None:
|
if merged_global_instance_container.getMetaDataEntry("type", None) is None:
|
||||||
flat_global_container.setMetaDataEntry("type", "quality_changes")
|
merged_global_instance_container.setMetaDataEntry("type", "quality_changes")
|
||||||
|
|
||||||
# Ensure that quality_type is set. (Can happen if we have empty 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:
|
if merged_global_instance_container.getMetaDataEntry("quality_type", None) is None:
|
||||||
flat_global_container.setMetaDataEntry("quality_type", stack.quality.getMetaDataEntry("quality_type", "normal"))
|
merged_global_instance_container.setMetaDataEntry("quality_type", stack.quality.getMetaDataEntry("quality_type", "normal"))
|
||||||
|
|
||||||
# Get the machine definition ID for quality profiles
|
# 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}
|
data = {"global_quality": serialized}
|
||||||
|
|
||||||
all_setting_keys = flat_global_container.getAllKeys()
|
all_setting_keys = merged_global_instance_container.getAllKeys()
|
||||||
for extruder in stack.extruderList:
|
for extruder in stack.extruderList:
|
||||||
extruder_quality = extruder.qualityChanges
|
extruder_quality = extruder.qualityChanges
|
||||||
if extruder_quality.getId() == "empty_quality_changes":
|
if extruder_quality.getId() == "empty_quality_changes":
|
||||||
|
@ -156,7 +156,7 @@ class GCodeWriter(MeshWriter):
|
||||||
extruder_quality.setDefinition(machine_definition_id_for_quality)
|
extruder_quality.setDefinition(machine_definition_id_for_quality)
|
||||||
extruder_quality.setMetaDataEntry("setting_version", stack.quality.getMetaDataEntry("setting_version"))
|
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 the quality changes is not set, we need to set type manually
|
||||||
if flat_extruder_quality.getMetaDataEntry("type", None) is None:
|
if flat_extruder_quality.getMetaDataEntry("type", None) is None:
|
||||||
flat_extruder_quality.setMetaDataEntry("type", "quality_changes")
|
flat_extruder_quality.setMetaDataEntry("type", "quality_changes")
|
||||||
|
|
|
@ -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.Iterator.DepthFirstIterator import DepthFirstIterator
|
||||||
from UM.Scene.SceneNode import SceneNode
|
from UM.Scene.SceneNode import SceneNode
|
||||||
|
from UM.Settings.InstanceContainer import InstanceContainer
|
||||||
from cura.CuraApplication import CuraApplication
|
from cura.CuraApplication import CuraApplication
|
||||||
from cura.Settings.CuraStackBuilder import CuraStackBuilder
|
from cura.Settings.CuraStackBuilder import CuraStackBuilder
|
||||||
from cura.Settings.GlobalStack import GlobalStack
|
from cura.Settings.GlobalStack import GlobalStack
|
||||||
|
@ -225,7 +226,7 @@ class UFPWriter(MeshWriter):
|
||||||
global_stack = cast(GlobalStack, Application.getInstance().getGlobalContainerStack())
|
global_stack = cast(GlobalStack, Application.getInstance().getGlobalContainerStack())
|
||||||
|
|
||||||
# Add global user or quality changes
|
# 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():
|
for setting in global_flattened_changes.getAllKeys():
|
||||||
settings["global"]["changes"][setting] = global_flattened_changes.getProperty(setting, "value")
|
settings["global"]["changes"][setting] = global_flattened_changes.getProperty(setting, "value")
|
||||||
|
|
||||||
|
@ -240,7 +241,7 @@ class UFPWriter(MeshWriter):
|
||||||
settings[f"extruder_{i}"]["all_settings"] = {}
|
settings[f"extruder_{i}"]["all_settings"] = {}
|
||||||
|
|
||||||
# Add extruder user or quality changes
|
# 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():
|
for setting in extruder_flattened_changes.getAllKeys():
|
||||||
settings[f"extruder_{i}"]["changes"][setting] = extruder_flattened_changes.getProperty(setting, "value")
|
settings[f"extruder_{i}"]["changes"][setting] = extruder_flattened_changes.getProperty(setting, "value")
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue