FindQUalityByName now also uses fallback generic materials if no result was found

CURA-2852
This commit is contained in:
Jaime van Kessel 2016-10-31 15:43:53 +01:00
parent e74953c8bc
commit 41ed9661f6
2 changed files with 12 additions and 6 deletions

View File

@ -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.
#

View File

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