mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-05-21 20:19:32 +08:00
Only create new extruder stack for single extrusion machine if it does not exist yet - CURA-4482
This commit is contained in:
parent
e7f1900f71
commit
f20ba4a118
@ -406,45 +406,48 @@ class CuraContainerRegistry(ContainerRegistry):
|
|||||||
|
|
||||||
def _addExtruderStackForSingleExtrusionMachine(self, machine, extruder_id):
|
def _addExtruderStackForSingleExtrusionMachine(self, machine, extruder_id):
|
||||||
new_extruder_id = extruder_id
|
new_extruder_id = extruder_id
|
||||||
|
extruder_stack = None
|
||||||
|
|
||||||
# if extruders are defined in the machine definition use those instead
|
# if extruders are defined in the machine definition use those instead
|
||||||
if machine.extruders and len(machine.extruders) > 0:
|
if machine.extruders and len(machine.extruders) > 0:
|
||||||
new_extruder_id = machine.extruders["0"].getId()
|
new_extruder_id = machine.extruders["0"].getId()
|
||||||
|
extruder_stack = machine.extruders["0"]
|
||||||
|
|
||||||
extruder_definitions = self.findDefinitionContainers(id = new_extruder_id)
|
# if the extruder stack doesn't exist yet we create and add it
|
||||||
|
if not extruder_stack:
|
||||||
|
extruder_definitions = self.findDefinitionContainers(id = new_extruder_id)
|
||||||
|
if not extruder_definitions:
|
||||||
|
Logger.log("w", "Could not find definition containers for extruder %s", new_extruder_id)
|
||||||
|
return
|
||||||
|
|
||||||
if not extruder_definitions:
|
extruder_definition = extruder_definitions[0]
|
||||||
Logger.log("w", "Could not find definition containers for extruder %s", new_extruder_id)
|
unique_name = self.uniqueName(machine.getName() + " " + new_extruder_id)
|
||||||
return
|
|
||||||
|
|
||||||
extruder_definition = extruder_definitions[0]
|
extruder_stack = ExtruderStack.ExtruderStack(unique_name)
|
||||||
unique_name = self.uniqueName(machine.getName() + " " + new_extruder_id)
|
extruder_stack.setName(extruder_definition.getName())
|
||||||
|
extruder_stack.setDefinition(extruder_definition)
|
||||||
|
extruder_stack.addMetaDataEntry("position", extruder_definition.getMetaDataEntry("position"))
|
||||||
|
extruder_stack.setNextStack(machine)
|
||||||
|
|
||||||
extruder_stack = ExtruderStack.ExtruderStack(unique_name)
|
if machine.userChanges:
|
||||||
extruder_stack.setName(extruder_definition.getName())
|
# set existing user changes if found
|
||||||
extruder_stack.setDefinition(extruder_definition)
|
extruder_stack.setUserChanges(machine.userChanges)
|
||||||
extruder_stack.addMetaDataEntry("position", extruder_definition.getMetaDataEntry("position"))
|
else:
|
||||||
extruder_stack.setNextStack(machine)
|
# create empty user changes container otherwise
|
||||||
|
user_container = InstanceContainer(extruder_stack.id + "_user")
|
||||||
|
user_container.addMetaDataEntry("type", "user")
|
||||||
|
user_container.addMetaDataEntry("machine", extruder_stack.getId())
|
||||||
|
from cura.CuraApplication import CuraApplication
|
||||||
|
user_container.addMetaDataEntry("setting_version", CuraApplication.SettingVersion)
|
||||||
|
user_container.setDefinition(extruder_definition)
|
||||||
|
extruder_stack.setUserChanges(user_container)
|
||||||
|
self.addContainer(user_container)
|
||||||
|
|
||||||
if machine.userChanges:
|
extruder_stack.setVariantById("default")
|
||||||
# set existing user changes if found
|
extruder_stack.setMaterialById("default")
|
||||||
extruder_stack.setUserChanges(machine.userChanges)
|
extruder_stack.setQualityById("default")
|
||||||
else:
|
|
||||||
# create empty user changes container otherwise
|
|
||||||
user_container = InstanceContainer(extruder_stack.id + "_user")
|
|
||||||
user_container.addMetaDataEntry("type", "user")
|
|
||||||
user_container.addMetaDataEntry("machine", extruder_stack.getId())
|
|
||||||
from cura.CuraApplication import CuraApplication
|
|
||||||
user_container.addMetaDataEntry("setting_version", CuraApplication.SettingVersion)
|
|
||||||
user_container.setDefinition(extruder_definition)
|
|
||||||
extruder_stack.setUserChanges(user_container)
|
|
||||||
self.addContainer(user_container)
|
|
||||||
|
|
||||||
extruder_stack.setVariantById("default")
|
self.addContainer(extruder_stack)
|
||||||
extruder_stack.setMaterialById("default")
|
|
||||||
extruder_stack.setQualityById("default")
|
|
||||||
|
|
||||||
self.addContainer(extruder_stack)
|
|
||||||
|
|
||||||
# Fix the extruders that were upgraded to ExtruderStack instances during addContainer.
|
# Fix the extruders that were upgraded to ExtruderStack instances during addContainer.
|
||||||
# The stacks are now responsible for setting the next stack on deserialize. However,
|
# The stacks are now responsible for setting the next stack on deserialize. However,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user