Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/Ultimaker/Cura.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/cura
diff options
context:
space:
mode:
authorJaime van Kessel <nallath@gmail.com>2016-10-31 17:43:53 +0300
committerJaime van Kessel <nallath@gmail.com>2016-10-31 17:43:53 +0300
commit41ed9661f602d001f48e4a330c12e2a44c03e977 (patch)
tree2e33aac25aed892be6949311293134bb30840edf /cura
parente74953c8bccee32210427bed3327e7faedc2388c (diff)
FindQUalityByName now also uses fallback generic materials if no result was found
CURA-2852
Diffstat (limited to 'cura')
-rw-r--r--cura/QualityManager.py9
-rw-r--r--cura/Settings/ContainerManager.py9
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)