From d1be5b6c029d5764436226b53461b1ef600cda46 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Mon, 6 Jun 2016 14:17:00 +0200 Subject: [PATCH] Create extruder train for each train in a machine We had the functionality, but this function was not yet called! Contributes to issues CURA-1278 and CURA-340. --- cura/ExtruderManager.py | 5 +++-- cura/MachineManagerModel.py | 12 ++++++++++-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/cura/ExtruderManager.py b/cura/ExtruderManager.py index 4f23a01808..ccf8a3ad40 100644 --- a/cura/ExtruderManager.py +++ b/cura/ExtruderManager.py @@ -79,14 +79,14 @@ class ExtruderManager(QObject): self._extruder_trains[machine_id][extruder_train.getMetaDataEntry("position")] = extruder_train.getId() self.extrudersChanged.emit() - def createExtruderTrain(self, definition, extruder_id): + def createExtruderTrain(self, extruder_definition, machine_definition, extruder_id): container_registry = UM.Settings.ContainerRegistry.getInstance() #Create a container stack for this extruder. name = self._uniqueName(extruder_id) container_stack = UM.Settings.ContainerStack(name) container_stack.addMetaDataEntry("type", "extruder_train") - container_stack.addContainer(definition) + container_stack.addContainer(extruder_definition) """ Yes, I'm committing this code which needs to be transformed to work later. @@ -136,6 +136,7 @@ class ExtruderManager(QObject): #Add an empty user profile. user_profile = UM.Settings.InstanceContainer(name + "_current_settings") user_profile.addMetaDataEntry("type", "user") + user_profile.setDefinition(machine_definition) container_stack.addContainer(user_profile) container_registry.addContainer(user_profile) diff --git a/cura/MachineManagerModel.py b/cura/MachineManagerModel.py index 3515d613bd..5e811e603d 100644 --- a/cura/MachineManagerModel.py +++ b/cura/MachineManagerModel.py @@ -9,7 +9,7 @@ from UM.Logger import Logger import UM.Settings from UM.Settings.Validator import ValidatorState from UM.Settings.InstanceContainer import InstanceContainer - +from . import ExtruderManager class MachineManagerModel(QObject): def __init__(self, parent = None): @@ -133,7 +133,15 @@ class MachineManagerModel(QObject): new_global_stack.addContainer(quality_instance_container) new_global_stack.addContainer(current_settings_instance_container) - ## Check if the machine has extruder trains + for position, extruder_train_id in definitions.getMetaDataEntry("machine_extruder_trains", default = {}).items(): + extruder_definition = UM.Settings.ContainerRegistry.getInstance().findDefinitionContainers(id = extruder_train_id) + if extruder_definition: + extruder_definition = extruder_definition[0] + else: + Logger.log("w", "Machine %s references an extruder with ID %s, which doesn't exist.", definition.getName(), extruder_train_id) + continue + ExtruderManager.getInstance().createExtruderTrain(extruder_definition, definition, extruder_train_id) + Application.getInstance().setGlobalContainerStack(new_global_stack) # Create a name that is not empty and unique