diff --git a/cura/QualityManager.py b/cura/QualityManager.py index e33398fc35..9568f15184 100644 --- a/cura/QualityManager.py +++ b/cura/QualityManager.py @@ -53,7 +53,9 @@ class QualityManager: # the current set of selected materials is used. # \return the matching quality containers \type{List[ContainerInstance]} def findQualityByQualityType(self, quality_type, machine_definition=None, material_containers=None): - criteria = {"type": "quality", "quality_type": quality_type} + criteria = {"type": "quality"} + if quality_type: + criteria["quality_type"] = quality_type return self._getFilteredContainersForStack(machine_definition, material_containers, **criteria) def _getFilteredContainers(self, **kwargs): diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py index 4569e51098..98125362c6 100644 --- a/cura/Settings/MachineManager.py +++ b/cura/Settings/MachineManager.py @@ -580,9 +580,18 @@ class MachineManager(QObject): [material_container]) if not candidate_qualities: # Fall back to normal quality - new_quality_id = quality_manager.findQualityByQualityType("normal", + quality_containers = quality_manager.findQualityByQualityType("normal", + quality_manager.getWholeMachineDefinition(machine_definition), + [material_container]) + if quality_containers: + new_quality_id = quality_containers[0].getId() + else: + # There is no normal quality for this machine/variant/material combination + quality_containers = quality_manager.findQualityByQualityType(None, quality_manager.getWholeMachineDefinition(machine_definition), - [material_container])[0].getId() + [material_container]) + new_quality_id = quality_containers[0].getId() + else: if not old_quality_changes: new_quality_id = candidate_qualities[0].getId()