From 040f49e474a79464676259b7cb68829dc707258d Mon Sep 17 00:00:00 2001 From: fieldOfView Date: Thu, 29 Sep 2016 13:48:23 +0200 Subject: [PATCH] Fix cases where there is no "normal" quality CURA-2494 --- cura/QualityManager.py | 4 +++- cura/Settings/MachineManager.py | 13 +++++++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) 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()