diff --git a/cura/QualityManager.py b/cura/QualityManager.py index 22dd71f7de..529cc5bc41 100644 --- a/cura/QualityManager.py +++ b/cura/QualityManager.py @@ -141,12 +141,6 @@ class QualityManager: for material_instance in material_containers: material_ids.add(material_instance.getId()) - - if machine_definition.getMetaDataEntry("type") == "extruder": - extruder_id = machine_definition.getId() - else: - extruder_id = None - containers = UM.Settings.ContainerRegistry.getInstance().findInstanceContainers(**criteria) result = [] @@ -154,8 +148,6 @@ class QualityManager: # If the machine specifies we should filter by material, exclude containers that do not match any active material. if filter_by_material and container.getMetaDataEntry("material") not in material_ids: continue - if extruder_id != container.getMetaDataEntry("extruder"): - continue result.append(container) return result diff --git a/cura/Settings/ContainerManager.py b/cura/Settings/ContainerManager.py index 24f452c592..9fdf037acb 100644 --- a/cura/Settings/ContainerManager.py +++ b/cura/Settings/ContainerManager.py @@ -476,7 +476,7 @@ class ContainerManager(QObject): UM.Logger.log("w", "No quality or quality changes container found in stack %s, ignoring it", stack.getId()) continue - extruder_id = None if stack is global_stack else stack.getBottom().getId() + extruder_id = None if stack is global_stack else QualityManager.getInstance().getParentMachineDefinition(stack.getBottom()).getId() new_changes = self._createQualityChanges(quality_container, unique_name, UM.Application.getInstance().getGlobalContainerStack().getBottom(), extruder_id) diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py index d325455d6a..d4fafa5a6f 100644 --- a/cura/Settings/MachineManager.py +++ b/cura/Settings/MachineManager.py @@ -687,7 +687,11 @@ class MachineManager(QObject): global_container_stack = self._global_container_stack global_machine_definition = quality_manager.getParentMachineDefinition(global_container_stack.getBottom()) - global_quality_changes = quality_manager.findQualityChangesByName(quality_changes_name, global_machine_definition)[0] + + quality_changes_profiles = quality_manager.findQualityChangesByName(quality_changes_name, + global_machine_definition) + + global_quality_changes = [qcp for qcp in quality_changes_profiles if qcp.getMetaDataEntry("extruder") is None][0] material = global_container_stack.findContainer(type="material") # For the global stack, find a quality which matches the quality_type in @@ -697,11 +701,14 @@ class MachineManager(QObject): # Find the values for each extruder. extruder_stacks = ExtruderManager.getInstance().getActiveExtruderStacks() + for stack in extruder_stacks: - machine_definition = quality_manager.getParentMachineDefinition(stack.getBottom()) - quality_changes_profiles = quality_manager.findQualityChangesByName(quality_changes_name, machine_definition) - if quality_changes_profiles: - quality_changes = quality_changes_profiles[0] + extruder_definition = quality_manager.getParentMachineDefinition(stack.getBottom()) + + quality_changes_list = [qcp for qcp in quality_changes_profiles + if qcp.getMetaDataEntry("extruder") == extruder_definition.getId()] + if quality_changes_list: + quality_changes = quality_changes_list[0] else: quality_changes = global_quality_changes