Merge branch '2.6' of github.com:Ultimaker/Cura

This commit is contained in:
Jaime van Kessel 2017-06-12 15:25:35 +02:00
commit df67ae18f1
3 changed files with 13 additions and 7 deletions

View File

@ -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])
if basic_materials:
result = self._getFilteredContainersForStack(machine_definition, basic_materials, **criteria) 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.
@ -119,6 +118,7 @@ class QualityManager:
result = self._getFilteredContainersForStack(machine_definition, [material_container], **criteria) result = self._getFilteredContainersForStack(machine_definition, [material_container], **criteria)
if not result: if not result:
basic_materials = self._getBasicMaterials(material_container) basic_materials = self._getBasicMaterials(material_container)
if basic_materials:
result = self._getFilteredContainersForStack(machine_definition, basic_materials, **criteria) result = self._getFilteredContainersForStack(machine_definition, basic_materials, **criteria)
return result return result
@ -179,7 +179,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 +225,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 +240,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.

View File

@ -929,6 +929,11 @@ class ContainerManager(QObject):
quality_changes.setDefinition(self._container_registry.findContainers(id = "fdmprinter")[0]) quality_changes.setDefinition(self._container_registry.findContainers(id = "fdmprinter")[0])
else: else:
quality_changes.setDefinition(QualityManager.getInstance().getParentMachineDefinition(machine_definition)) quality_changes.setDefinition(QualityManager.getInstance().getParentMachineDefinition(machine_definition))
whole_machine_definition = QualityManager.getInstance().getWholeMachineDefinition(machine_definition)
if whole_machine_definition.getMetaDataEntry("has_materials"):
quality_changes.addMetaDataEntry("material", quality_container.getMetaDataEntry("material"))
from cura.CuraApplication import CuraApplication from cura.CuraApplication import CuraApplication
quality_changes.addMetaDataEntry("setting_version", CuraApplication.SettingVersion) quality_changes.addMetaDataEntry("setting_version", CuraApplication.SettingVersion)
return quality_changes return quality_changes

View File

@ -753,11 +753,12 @@ 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())
if new_qualities: if new_qualities:
new_quality_id = new_qualities[0].getId() # Just pick the first available one new_quality_id = new_qualities[0].getId() # Just pick the first available one
else: else: