diff options
author | Jaime van Kessel <nallath@gmail.com> | 2016-10-31 17:43:53 +0300 |
---|---|---|
committer | Jaime van Kessel <nallath@gmail.com> | 2016-10-31 17:43:53 +0300 |
commit | 41ed9661f602d001f48e4a330c12e2a44c03e977 (patch) | |
tree | 2e33aac25aed892be6949311293134bb30840edf /cura | |
parent | e74953c8bccee32210427bed3327e7faedc2388c (diff) |
FindQUalityByName now also uses fallback generic materials if no result was found
CURA-2852
Diffstat (limited to 'cura')
-rw-r--r-- | cura/QualityManager.py | 9 | ||||
-rw-r--r-- | 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) |