Просмотр исходного кода

Let getDefaultQualityType use the container tree structure

Contributes to issue CURA-6600.
Ghostkeeper 5 лет назад
Родитель
Сommit
370d7adcd5
2 измененных файлов с 15 добавлено и 5 удалено
  1. 1 0
      cura/Machines/MachineNode.py
  2. 14 5
      cura/Machines/QualityManager.py

+ 1 - 0
cura/Machines/MachineNode.py

@@ -37,6 +37,7 @@ class MachineNode(ContainerNode):
         self.quality_definition = my_metadata.get("quality_definition", container_id)
         self.exclude_materials = my_metadata.get("exclude_materials", [])
         self.preferred_variant_name = my_metadata.get("preferred_variant_name", "")
+        self.preferred_quality_type = my_metadata.get("preferred_quality_type", "")
 
         container_registry.containerAdded.connect(self._variantAdded)
         self._loadAll()

+ 14 - 5
cura/Machines/QualityManager.py

@@ -140,11 +140,20 @@ class QualityManager(QObject):
 
         return quality_group_dict
 
-    def getDefaultQualityType(self, machine: "GlobalStack") -> Optional[QualityGroup]:
-        preferred_quality_type = machine.definition.getMetaDataEntry("preferred_quality_type")
-        quality_group_dict = self.getQualityGroups(machine)
-        quality_group = quality_group_dict.get(preferred_quality_type)
-        return quality_group
+    def getDefaultQualityType(self, machine: "GlobalStack") -> QualityGroup:
+        machine_node = ContainerTree.getInstance().machines[machine.definition.getId()]
+        variant_names = []
+        material_bases = []
+        extruder_enabled = []
+        for extruder in machine.extruders.values():
+            variant_names.append(extruder.variant.getName())
+            material_bases.append(extruder.material.getMetaDataEntry("base_file"))
+            extruder_enabled.append(extruder.isEnabled)
+        quality_groups = machine_node.getQualityGroups(variant_names, material_bases, extruder_enabled)
+        result = quality_groups.get(machine_node.preferred_quality_type)
+        if result is not None:
+            return result
+        return next(iter(quality_groups.values()))  # If preferred quality type is not available, pick any quality type.
 
 
     #