mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-08 15:37:27 -06:00
Machine_id instead of definition_id is now used to link extruders
Contributes to CURA-1898
This commit is contained in:
parent
936617f2aa
commit
726eb97d9f
5 changed files with 21 additions and 22 deletions
|
@ -37,7 +37,7 @@ class ExtruderManager(QObject):
|
||||||
if not UM.Application.getInstance().getGlobalContainerStack():
|
if not UM.Application.getInstance().getGlobalContainerStack():
|
||||||
return None #No active machine, so no active extruder.
|
return None #No active machine, so no active extruder.
|
||||||
try:
|
try:
|
||||||
return self._extruder_trains[UM.Application.getInstance().getGlobalContainerStack().getBottom().getId()][str(self._active_extruder_index)].getId()
|
return self._extruder_trains[UM.Application.getInstance().getGlobalContainerStack().getId()][str(self._active_extruder_index)].getId()
|
||||||
except KeyError: #Extruder index could be -1 if the global tab is selected, or the entry doesn't exist if the machine definition is wrong.
|
except KeyError: #Extruder index could be -1 if the global tab is selected, or the entry doesn't exist if the machine definition is wrong.
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
@ -84,37 +84,35 @@ class ExtruderManager(QObject):
|
||||||
## Adds all extruders of a specific machine definition to the extruder
|
## Adds all extruders of a specific machine definition to the extruder
|
||||||
# manager.
|
# manager.
|
||||||
#
|
#
|
||||||
# \param machine_definition The machine to add the extruders for.
|
# \param machine_definition The machine definition to add the extruders for.
|
||||||
def addMachineExtruders(self, machine_definition):
|
# \param machine_id The machine_id to add the extruders for.
|
||||||
|
def addMachineExtruders(self, machine_definition, machine_id):
|
||||||
changed = False
|
changed = False
|
||||||
machine_id = machine_definition.getId()
|
machine_definition_id = machine_definition.getId()
|
||||||
if machine_id not in self._extruder_trains:
|
if machine_id not in self._extruder_trains:
|
||||||
self._extruder_trains[machine_id] = { }
|
self._extruder_trains[machine_id] = { }
|
||||||
changed = True
|
changed = True
|
||||||
|
|
||||||
container_registry = UM.Settings.ContainerRegistry.getInstance()
|
container_registry = UM.Settings.ContainerRegistry.getInstance()
|
||||||
if container_registry:
|
if container_registry:
|
||||||
|
|
||||||
# Add the extruder trains that don't exist yet.
|
# Add the extruder trains that don't exist yet.
|
||||||
for extruder_definition in container_registry.findDefinitionContainers(machine = machine_definition.getId()):
|
for extruder_definition in container_registry.findDefinitionContainers(machine = machine_definition_id):
|
||||||
position = extruder_definition.getMetaDataEntry("position", None)
|
position = extruder_definition.getMetaDataEntry("position", None)
|
||||||
if not position:
|
if not position:
|
||||||
UM.Logger.log("w", "Extruder definition %s specifies no position metadata entry.", extruder_definition.getId())
|
UM.Logger.log("w", "Extruder definition %s specifies no position metadata entry.", extruder_definition.getId())
|
||||||
if not container_registry.findContainerStacks(machine = machine_id, position = position): # Doesn't exist yet.
|
if not container_registry.findContainerStacks(machine = machine_id, position = position): # Doesn't exist yet.
|
||||||
self.createExtruderTrain(extruder_definition, machine_definition, position)
|
self.createExtruderTrain(extruder_definition, machine_definition, position, machine_id)
|
||||||
changed = True
|
changed = True
|
||||||
|
|
||||||
# Gets the extruder trains that we just created as well as any that still existed.
|
# Gets the extruder trains that we just created as well as any that still existed.
|
||||||
extruder_trains = container_registry.findContainerStacks(type = "extruder_train", machine = machine_definition.getId())
|
extruder_trains = container_registry.findContainerStacks(type = "extruder_train", machine = machine_id)
|
||||||
for extruder_train in extruder_trains:
|
for extruder_train in extruder_trains:
|
||||||
self._extruder_trains[machine_id][extruder_train.getMetaDataEntry("position")] = extruder_train
|
self._extruder_trains[machine_id][extruder_train.getMetaDataEntry("position")] = extruder_train
|
||||||
|
|
||||||
# Ensure that the extruder train stacks are linked to global stack.
|
# Ensure that the extruder train stacks are linked to global stack.
|
||||||
extruder_train.setNextStack(UM.Application.getInstance().getGlobalContainerStack())
|
extruder_train.setNextStack(UM.Application.getInstance().getGlobalContainerStack())
|
||||||
changed = True
|
changed = True
|
||||||
|
|
||||||
if changed:
|
if changed:
|
||||||
self.extrudersChanged.emit(machine_definition)
|
self.extrudersChanged.emit(machine_id)
|
||||||
|
|
||||||
## Creates a container stack for an extruder train.
|
## Creates a container stack for an extruder train.
|
||||||
#
|
#
|
||||||
|
@ -127,17 +125,18 @@ class ExtruderManager(QObject):
|
||||||
# \param extruder_definition The extruder to create the extruder train for.
|
# \param extruder_definition The extruder to create the extruder train for.
|
||||||
# \param machine_definition The machine that the extruder train belongs to.
|
# \param machine_definition The machine that the extruder train belongs to.
|
||||||
# \param position The position of this extruder train in the extruder slots of the machine.
|
# \param position The position of this extruder train in the extruder slots of the machine.
|
||||||
def createExtruderTrain(self, extruder_definition, machine_definition, position):
|
# \param machine_id The id of the "global" stack this extruder is linked to.
|
||||||
|
def createExtruderTrain(self, extruder_definition, machine_definition, position, machine_id):
|
||||||
# Cache some things.
|
# Cache some things.
|
||||||
container_registry = UM.Settings.ContainerRegistry.getInstance()
|
container_registry = UM.Settings.ContainerRegistry.getInstance()
|
||||||
machine_id = machine_definition.getId()
|
machine_definition_id = machine_definition.getId()
|
||||||
|
|
||||||
# Create a container stack for this extruder.
|
# Create a container stack for this extruder.
|
||||||
extruder_stack_id = container_registry.uniqueName(extruder_definition.getId())
|
extruder_stack_id = container_registry.uniqueName(extruder_definition.getId())
|
||||||
container_stack = UM.Settings.ContainerStack(extruder_stack_id)
|
container_stack = UM.Settings.ContainerStack(extruder_stack_id)
|
||||||
container_stack.setName(extruder_definition.getName()) # Take over the display name to display the stack with.
|
container_stack.setName(extruder_definition.getName()) # Take over the display name to display the stack with.
|
||||||
container_stack.addMetaDataEntry("type", "extruder_train")
|
container_stack.addMetaDataEntry("type", "extruder_train")
|
||||||
container_stack.addMetaDataEntry("machine", machine_definition.getId())
|
container_stack.addMetaDataEntry("machine", machine_id)
|
||||||
container_stack.addMetaDataEntry("position", position)
|
container_stack.addMetaDataEntry("position", position)
|
||||||
container_stack.addContainer(extruder_definition)
|
container_stack.addContainer(extruder_definition)
|
||||||
|
|
||||||
|
@ -145,7 +144,7 @@ class ExtruderManager(QObject):
|
||||||
variant = container_registry.findInstanceContainers(id = "empty_variant")[0]
|
variant = container_registry.findInstanceContainers(id = "empty_variant")[0]
|
||||||
if machine_definition.getMetaDataEntry("has_variants"):
|
if machine_definition.getMetaDataEntry("has_variants"):
|
||||||
# First add any variant. Later, overwrite with preference if the preference is valid.
|
# First add any variant. Later, overwrite with preference if the preference is valid.
|
||||||
variants = container_registry.findInstanceContainers(definition = machine_id, type = "variant")
|
variants = container_registry.findInstanceContainers(definition = machine_definition_id, type = "variant")
|
||||||
if len(variants) >= 1:
|
if len(variants) >= 1:
|
||||||
variant = variants[0]
|
variant = variants[0]
|
||||||
preferred_variant_id = machine_definition.getMetaDataEntry("preferred_variant")
|
preferred_variant_id = machine_definition.getMetaDataEntry("preferred_variant")
|
||||||
|
@ -163,9 +162,9 @@ class ExtruderManager(QObject):
|
||||||
if machine_definition.getMetaDataEntry("has_materials"):
|
if machine_definition.getMetaDataEntry("has_materials"):
|
||||||
# First add any material. Later, overwrite with preference if the preference is valid.
|
# First add any material. Later, overwrite with preference if the preference is valid.
|
||||||
if machine_definition.getMetaDataEntry("has_variant_materials", default = "False") == "True":
|
if machine_definition.getMetaDataEntry("has_variant_materials", default = "False") == "True":
|
||||||
materials = container_registry.findInstanceContainers(type = "material", definition = machine_id, variant = variant.getId())
|
materials = container_registry.findInstanceContainers(type = "material", definition = machine_definition_id, variant = variant.getId())
|
||||||
else:
|
else:
|
||||||
materials = container_registry.findInstanceContainers(type = "material", definition = machine_id)
|
materials = container_registry.findInstanceContainers(type = "material", definition = machine_definition_id)
|
||||||
if len(materials) >= 1:
|
if len(materials) >= 1:
|
||||||
material = materials[0]
|
material = materials[0]
|
||||||
preferred_material_id = machine_definition.getMetaDataEntry("preferred_material")
|
preferred_material_id = machine_definition.getMetaDataEntry("preferred_material")
|
||||||
|
@ -247,4 +246,4 @@ class ExtruderManager(QObject):
|
||||||
def _addCurrentMachineExtruders(self):
|
def _addCurrentMachineExtruders(self):
|
||||||
global_stack = UM.Application.getInstance().getGlobalContainerStack()
|
global_stack = UM.Application.getInstance().getGlobalContainerStack()
|
||||||
if global_stack and global_stack.getBottom():
|
if global_stack and global_stack.getBottom():
|
||||||
self.addMachineExtruders(global_stack.getBottom())
|
self.addMachineExtruders(global_stack.getBottom(), global_stack.getId())
|
||||||
|
|
|
@ -115,7 +115,7 @@ class ExtrudersModel(UM.Qt.ListModel.ListModel):
|
||||||
changed = True
|
changed = True
|
||||||
|
|
||||||
manager = ExtruderManager.getInstance()
|
manager = ExtruderManager.getInstance()
|
||||||
for extruder in manager.getMachineExtruders(global_container_stack.getBottom().getId()):
|
for extruder in manager.getMachineExtruders(global_container_stack.getId()):
|
||||||
extruder_name = extruder.getName()
|
extruder_name = extruder.getName()
|
||||||
material = extruder.findContainer({ "type": "material" })
|
material = extruder.findContainer({ "type": "material" })
|
||||||
if material:
|
if material:
|
||||||
|
|
|
@ -292,7 +292,7 @@ class MachineManager(QObject):
|
||||||
new_global_stack.addContainer(quality_instance_container)
|
new_global_stack.addContainer(quality_instance_container)
|
||||||
new_global_stack.addContainer(current_settings_instance_container)
|
new_global_stack.addContainer(current_settings_instance_container)
|
||||||
|
|
||||||
ExtruderManager.getInstance().addMachineExtruders(definition)
|
ExtruderManager.getInstance().addMachineExtruders(definition, new_global_stack.getId())
|
||||||
|
|
||||||
Application.getInstance().setGlobalContainerStack(new_global_stack)
|
Application.getInstance().setGlobalContainerStack(new_global_stack)
|
||||||
|
|
||||||
|
|
|
@ -129,7 +129,7 @@ class StartSliceJob(Job):
|
||||||
|
|
||||||
self._buildGlobalSettingsMessage(stack)
|
self._buildGlobalSettingsMessage(stack)
|
||||||
|
|
||||||
for extruder_stack in cura.Settings.ExtruderManager.getInstance().getMachineExtruders(stack.getBottom().getId()):
|
for extruder_stack in cura.Settings.ExtruderManager.getInstance().getMachineExtruders(stack.getId()):
|
||||||
self._buildExtruderMessage(extruder_stack)
|
self._buildExtruderMessage(extruder_stack)
|
||||||
|
|
||||||
for group in object_groups:
|
for group in object_groups:
|
||||||
|
|
|
@ -88,7 +88,7 @@ class GCodeWriter(MeshWriter):
|
||||||
data = {"global_quality": serialized}
|
data = {"global_quality": serialized}
|
||||||
|
|
||||||
manager = ExtruderManager.getInstance()
|
manager = ExtruderManager.getInstance()
|
||||||
for extruder in manager.getMachineExtruders(stack.getBottom().getId()):
|
for extruder in manager.getMachineExtruders(stack.getId()):
|
||||||
extruder_quality = extruder.findContainer({"type": "quality"})
|
extruder_quality = extruder.findContainer({"type": "quality"})
|
||||||
|
|
||||||
flat_extruder_quality_id = machine_manager.duplicateContainer(extruder_quality.getId())
|
flat_extruder_quality_id = machine_manager.duplicateContainer(extruder_quality.getId())
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue