Fix cases where there is no "normal" quality

CURA-2494
This commit is contained in:
fieldOfView 2016-09-29 13:48:23 +02:00
parent 2742a4ef65
commit 040f49e474
2 changed files with 14 additions and 3 deletions

View file

@ -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):

View file

@ -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()