From 41ed9661f602d001f48e4a330c12e2a44c03e977 Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Mon, 31 Oct 2016 15:43:53 +0100 Subject: [PATCH] FindQUalityByName now also uses fallback generic materials if no result was found CURA-2852 --- cura/QualityManager.py | 9 ++++++++- cura/Settings/ContainerManager.py | 9 ++++----- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/cura/QualityManager.py b/cura/QualityManager.py index 52c052ad28..8918b818f1 100644 --- a/cura/QualityManager.py +++ b/cura/QualityManager.py @@ -30,7 +30,14 @@ class QualityManager: # \return the matching quality containers \type{List[ContainerInstance]} def findQualityByName(self, quality_name, machine_definition=None, material_containers=None): criteria = {"type": "quality", "name": quality_name} - return self._getFilteredContainersForStack(machine_definition, material_containers, **criteria) + result = self._getFilteredContainersForStack(machine_definition, material_containers, **criteria) + + # Fall back to using generic materials and qualities if nothing could be found. + if not result and material_containers and len(material_containers) == 1: + basic_materials = self._getBasicMaterials(material_containers[0]) + result = self._getFilteredContainersForStack(machine_definition, basic_materials, **criteria) + + return result[0] if result else None ## Find a quality changes container by name. # diff --git a/cura/Settings/ContainerManager.py b/cura/Settings/ContainerManager.py index f94f628686..54ef997ce2 100644 --- a/cura/Settings/ContainerManager.py +++ b/cura/Settings/ContainerManager.py @@ -611,13 +611,12 @@ class ContainerManager(QObject): if base_name is None: base_name = quality_name - # Try to find a Quality with the name. - containers = QualityManager.getInstance().findQualityByName(quality_name, machine_definition, material_instances) - if containers: - container = containers[0] + container = QualityManager.getInstance().findQualityByName(quality_name, machine_definition, material_instances) + if container: + UM.Logger.log("d", "We found a quality to duplicate.") return self._duplicateQualityForMachineType(container, base_name, machine_definition) - + UM.Logger.log("d", "We found a quality_changes to duplicate.") # Assume it is a quality changes. return self._duplicateQualityChangesForMachineType(quality_name, base_name, machine_definition)