mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-17 03:37:48 -06:00
We now properly fall back if no basic material is found
CURA-3911
This commit is contained in:
parent
82224c0ed0
commit
a306b4dada
2 changed files with 6 additions and 5 deletions
|
@ -101,12 +101,11 @@ class QualityManager:
|
||||||
if quality_type:
|
if quality_type:
|
||||||
criteria["quality_type"] = quality_type
|
criteria["quality_type"] = quality_type
|
||||||
result = 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.
|
# Fall back to using generic materials and qualities if nothing could be found.
|
||||||
if not result and material_containers and len(material_containers) == 1:
|
if not result and material_containers and len(material_containers) == 1:
|
||||||
basic_materials = self._getBasicMaterials(material_containers[0])
|
basic_materials = self._getBasicMaterials(material_containers[0])
|
||||||
result = self._getFilteredContainersForStack(machine_definition, basic_materials, **criteria)
|
if basic_materials:
|
||||||
|
result = self._getFilteredContainersForStack(machine_definition, basic_materials, **criteria)
|
||||||
return result[0] if result else None
|
return result[0] if result else None
|
||||||
|
|
||||||
## Find all suitable qualities for a combination of machine and material.
|
## Find all suitable qualities for a combination of machine and material.
|
||||||
|
@ -179,7 +178,6 @@ class QualityManager:
|
||||||
definition_id = material_container.getDefinition().getMetaDataEntry("quality_definition", material_container.getDefinition().getId())
|
definition_id = material_container.getDefinition().getMetaDataEntry("quality_definition", material_container.getDefinition().getId())
|
||||||
else:
|
else:
|
||||||
definition_id = "fdmprinter"
|
definition_id = "fdmprinter"
|
||||||
|
|
||||||
if base_material:
|
if base_material:
|
||||||
# There is a basic material specified
|
# There is a basic material specified
|
||||||
criteria = { "type": "material", "name": base_material, "definition": definition_id }
|
criteria = { "type": "material", "name": base_material, "definition": definition_id }
|
||||||
|
@ -226,13 +224,13 @@ class QualityManager:
|
||||||
|
|
||||||
# Stick the material IDs in a set
|
# Stick the material IDs in a set
|
||||||
material_ids = set()
|
material_ids = set()
|
||||||
|
|
||||||
for material_instance in material_containers:
|
for material_instance in material_containers:
|
||||||
if material_instance is not None:
|
if material_instance is not None:
|
||||||
# Add the parent material too.
|
# Add the parent material too.
|
||||||
for basic_material in self._getBasicMaterials(material_instance):
|
for basic_material in self._getBasicMaterials(material_instance):
|
||||||
material_ids.add(basic_material.getId())
|
material_ids.add(basic_material.getId())
|
||||||
material_ids.add(material_instance.getId())
|
material_ids.add(material_instance.getId())
|
||||||
|
|
||||||
containers = ContainerRegistry.getInstance().findInstanceContainers(**criteria)
|
containers = ContainerRegistry.getInstance().findInstanceContainers(**criteria)
|
||||||
|
|
||||||
result = []
|
result = []
|
||||||
|
@ -241,6 +239,7 @@ class QualityManager:
|
||||||
if filter_by_material and container.getMetaDataEntry("material") not in material_ids and "global_quality" not in kwargs:
|
if filter_by_material and container.getMetaDataEntry("material") not in material_ids and "global_quality" not in kwargs:
|
||||||
continue
|
continue
|
||||||
result.append(container)
|
result.append(container)
|
||||||
|
|
||||||
return result
|
return result
|
||||||
|
|
||||||
## Get the parent machine definition of a machine definition.
|
## Get the parent machine definition of a machine definition.
|
||||||
|
|
|
@ -753,7 +753,9 @@ class MachineManager(QObject):
|
||||||
candidate_quality = quality_manager.findQualityByQualityType(quality_type,
|
candidate_quality = quality_manager.findQualityByQualityType(quality_type,
|
||||||
quality_manager.getWholeMachineDefinition(machine_definition),
|
quality_manager.getWholeMachineDefinition(machine_definition),
|
||||||
[material_container])
|
[material_container])
|
||||||
|
|
||||||
if not candidate_quality or isinstance(candidate_quality, type(self._empty_quality_changes_container)):
|
if not candidate_quality or isinstance(candidate_quality, type(self._empty_quality_changes_container)):
|
||||||
|
Logger.log("d", "Attempting to find fallback quality")
|
||||||
# Fall back to a quality (which must be compatible with all other extruders)
|
# Fall back to a quality (which must be compatible with all other extruders)
|
||||||
new_qualities = quality_manager.findAllUsableQualitiesForMachineAndExtruders(
|
new_qualities = quality_manager.findAllUsableQualitiesForMachineAndExtruders(
|
||||||
self._global_container_stack, ExtruderManager.getInstance().getExtruderStacks())
|
self._global_container_stack, ExtruderManager.getInstance().getExtruderStacks())
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue