Use GlobalStack.extrudersList instead of GlobalStack.extruders to iterate

Otherwise the iteration can happen in any arbitrary order (due to the dict) and this can cause the result to not match to the desired combination of configurations per extruder.

Contributes to issue CURA-6600.
This commit is contained in:
Ghostkeeper 2019-09-06 17:20:03 +02:00
parent 4bdc819f12
commit 8bcd9b339a
No known key found for this signature in database
GPG key ID: 86BEF881AE2CF276
3 changed files with 12 additions and 12 deletions

View file

@ -69,9 +69,9 @@ class ContainerTree:
global_stack = cura.CuraApplication.CuraApplication.getInstance().getGlobalContainerStack() global_stack = cura.CuraApplication.CuraApplication.getInstance().getGlobalContainerStack()
if global_stack is None: if global_stack is None:
return [] return []
variant_names = [extruder.variant.getName() for extruder in global_stack.extruders.values()] variant_names = [extruder.variant.getName() for extruder in global_stack.extrudersList]
material_bases = [extruder.material.getMetaDataEntry("base_file") for extruder in global_stack.extruders.values()] material_bases = [extruder.material.getMetaDataEntry("base_file") for extruder in global_stack.extrudersList]
extruder_enabled = [extruder.isEnabled for extruder in global_stack.extruders.values()] extruder_enabled = [extruder.isEnabled for extruder in global_stack.extrudersList]
return self.machines[global_stack.definition.getId()].getQualityChangesGroups(variant_names, material_bases, extruder_enabled) return self.machines[global_stack.definition.getId()].getQualityChangesGroups(variant_names, material_bases, extruder_enabled)
## Builds the initial container tree. ## Builds the initial container tree.

View file

@ -77,9 +77,9 @@ class QualityManager(QObject):
# Returns a dict of "custom profile name" -> QualityChangesGroup # Returns a dict of "custom profile name" -> QualityChangesGroup
def getQualityChangesGroups(self, machine: "GlobalStack") -> List[QualityChangesGroup]: def getQualityChangesGroups(self, machine: "GlobalStack") -> List[QualityChangesGroup]:
variant_names = [extruder.variant.getName() for extruder in machine.extruders.values()] variant_names = [extruder.variant.getName() for extruder in machine.extrudersList]
material_bases = [extruder.material.getMetaDataEntry("base_file") for extruder in machine.extruders.values()] material_bases = [extruder.material.getMetaDataEntry("base_file") for extruder in machine.extrudersList]
extruder_enabled = [extruder.isEnabled for extruder in machine.extruders.values()] extruder_enabled = [extruder.isEnabled for extruder in machine.extrudersList]
machine_node = ContainerTree.getInstance().machines[machine.definition.getId()] machine_node = ContainerTree.getInstance().machines[machine.definition.getId()]
return machine_node.getQualityChangesGroups(variant_names, material_bases, extruder_enabled) return machine_node.getQualityChangesGroups(variant_names, material_bases, extruder_enabled)
@ -92,9 +92,9 @@ class QualityManager(QObject):
# for those types as values. # for those types as values.
def getQualityGroups(self, global_stack: "GlobalStack") -> Dict[str, QualityGroup]: def getQualityGroups(self, global_stack: "GlobalStack") -> Dict[str, QualityGroup]:
# Gather up the variant names and material base files for each extruder. # Gather up the variant names and material base files for each extruder.
variant_names = [extruder.variant.getName() for extruder in global_stack.extruders.values()] variant_names = [extruder.variant.getName() for extruder in global_stack.extrudersList]
material_bases = [extruder.material.getMetaDataEntry("base_file") for extruder in global_stack.extruders.values()] material_bases = [extruder.material.getMetaDataEntry("base_file") for extruder in global_stack.extrudersList]
extruder_enabled = [extruder.isEnabled for extruder in global_stack.extruders.values()] extruder_enabled = [extruder.isEnabled for extruder in global_stack.extrudersList]
definition_id = global_stack.definition.getId() definition_id = global_stack.definition.getId()
return ContainerTree.getInstance().machines[definition_id].getQualityGroups(variant_names, material_bases, extruder_enabled) return ContainerTree.getInstance().machines[definition_id].getQualityGroups(variant_names, material_bases, extruder_enabled)

View file

@ -368,9 +368,9 @@ class Toolbox(QObject, Extension):
default_material_node = material_manager.getDefaultMaterial(global_stack, extruder_nr, global_stack.extruders[extruder_nr].variant.getName()) default_material_node = material_manager.getDefaultMaterial(global_stack, extruder_nr, global_stack.extruders[extruder_nr].variant.getName())
machine_manager.setMaterial(extruder_nr, default_material_node, global_stack = global_stack) machine_manager.setMaterial(extruder_nr, default_material_node, global_stack = global_stack)
for global_stack, extruder_nr, container_id in self._package_used_qualities: for global_stack, extruder_nr, container_id in self._package_used_qualities:
variant_names = [extruder.variant.getName() for extruder in global_stack.extruders.values()] variant_names = [extruder.variant.getName() for extruder in global_stack.extrudersList]
material_bases = [extruder.material.getMetaDataEntry("base_file") for extruder in global_stack.extruders.values()] material_bases = [extruder.material.getMetaDataEntry("base_file") for extruder in global_stack.extrudersList]
extruder_enabled = [extruder.isEnabled for extruder in global_stack.extruders.values()] extruder_enabled = [extruder.isEnabled for extruder in global_stack.extrudersList]
definition_id = global_stack.definition.getId() definition_id = global_stack.definition.getId()
machine_node = container_tree.machines[definition_id] machine_node = container_tree.machines[definition_id]
default_quality_group = machine_node.getQualityGroups(variant_names, material_bases, extruder_enabled)[machine_node.preferred_quality_type] default_quality_group = machine_node.getQualityGroups(variant_names, material_bases, extruder_enabled)[machine_node.preferred_quality_type]