mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-07 06:57:28 -06:00
Move creatFlattenedContainerInstnance into CuraStackBuilder so it can be reused.
CURA-9224
This commit is contained in:
parent
42c3eb0c64
commit
ee7c8d1f02
2 changed files with 29 additions and 25 deletions
|
@ -1,6 +1,8 @@
|
||||||
# Copyright (c) 2019 Ultimaker B.V.
|
# Copyright (c) 2022 Ultimaker B.V.
|
||||||
# Cura is released under the terms of the LGPLv3 or higher.
|
# Cura is released under the terms of the LGPLv3 or higher.
|
||||||
|
|
||||||
|
import copy
|
||||||
|
|
||||||
from typing import Optional, cast
|
from typing import Optional, cast
|
||||||
|
|
||||||
from UM.ConfigurationErrorMessage import ConfigurationErrorMessage
|
from UM.ConfigurationErrorMessage import ConfigurationErrorMessage
|
||||||
|
@ -298,3 +300,23 @@ 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
|
||||||
|
|
|
@ -1,9 +1,8 @@
|
||||||
# Copyright (c) 2019 Ultimaker B.V.
|
# Copyright (c) 2022 Ultimaker B.V.
|
||||||
# Cura is released under the terms of the LGPLv3 or higher.
|
# Cura is released under the terms of the LGPLv3 or higher.
|
||||||
|
|
||||||
import re # For escaping characters in the settings.
|
import re # For escaping characters in the settings.
|
||||||
import json
|
import json
|
||||||
import copy
|
|
||||||
|
|
||||||
from UM.Mesh.MeshWriter import MeshWriter
|
from UM.Mesh.MeshWriter import MeshWriter
|
||||||
from UM.Logger import Logger
|
from UM.Logger import Logger
|
||||||
|
@ -12,6 +11,8 @@ from UM.Settings.InstanceContainer import InstanceContainer
|
||||||
from cura.Machines.ContainerTree import ContainerTree
|
from cura.Machines.ContainerTree import ContainerTree
|
||||||
|
|
||||||
from UM.i18n import i18nCatalog
|
from UM.i18n import i18nCatalog
|
||||||
|
from cura.Settings.CuraStackBuilder import CuraStackBuilder
|
||||||
|
|
||||||
catalog = i18nCatalog("cura")
|
catalog = i18nCatalog("cura")
|
||||||
|
|
||||||
|
|
||||||
|
@ -96,25 +97,6 @@ class GCodeWriter(MeshWriter):
|
||||||
self.setInformation(catalog.i18nc("@warning:status", "Please prepare G-code before exporting."))
|
self.setInformation(catalog.i18nc("@warning:status", "Please prepare G-code before exporting."))
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def _createFlattenedContainerInstance(self, 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
|
|
||||||
|
|
||||||
def _serialiseSettings(self, stack):
|
def _serialiseSettings(self, stack):
|
||||||
"""Serialises a container stack to prepare it for writing at the end of the g-code.
|
"""Serialises a container stack to prepare it for writing at the end of the g-code.
|
||||||
|
|
||||||
|
@ -145,7 +127,7 @@ 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 = self._createFlattenedContainerInstance(stack.userChanges, container_with_profile)
|
flat_global_container = CuraStackBuilder.createFlattenedContainerInstance(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 flat_global_container.getMetaDataEntry("type", None) is None:
|
||||||
flat_global_container.setMetaDataEntry("type", "quality_changes")
|
flat_global_container.setMetaDataEntry("type", "quality_changes")
|
||||||
|
@ -174,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 = self._createFlattenedContainerInstance(extruder.userChanges, extruder_quality)
|
flat_extruder_quality = CuraStackBuilder.createFlattenedContainerInstance(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")
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue