Browse Source

Fixed choosing a quality that is compatible with multiple extruders as fallback. CURA-3510

Jack Ha 8 years ago
parent
commit
32d5fbe557
2 changed files with 15 additions and 6 deletions
  1. 7 0
      cura/Settings/ExtruderManager.py
  2. 8 6
      cura/Settings/MachineManager.py

+ 7 - 0
cura/Settings/ExtruderManager.py

@@ -135,6 +135,13 @@ class ExtruderManager(QObject):
                     return self._extruder_trains[global_container_stack.getId()][str(index)]
         return None
 
+    ##  Get all extruder stacks
+    def getExtruderStacks(self):
+        result = []
+        for i in range(self.extruderCount):
+            result.append(self.getExtruderStack(i))
+        return result
+
     ##  Adds all extruders of a specific machine definition to the extruder
     #   manager.
     #

+ 8 - 6
cura/Settings/MachineManager.py

@@ -749,12 +749,14 @@ class MachineManager(QObject):
                                         quality_manager.getWholeMachineDefinition(machine_definition),
                                         [material_container])
             if not candidate_quality or candidate_quality.getId() == "empty_quality":
-                # Fall back to a quality
-                new_quality = quality_manager.findQualityByQualityType(None,
-                                    quality_manager.getWholeMachineDefinition(machine_definition),
-                                    [material_container])
-                if new_quality:
-                    new_quality_id = new_quality.getId()
+                # Fall back to a quality (which must be compatible with all other extruders)
+                new_qualities = quality_manager.findAllUsableQualitiesForMachineAndExtruders(
+                    self._global_container_stack, ExtruderManager.getInstance().getExtruderStacks())
+
+                if new_qualities:
+                    new_quality_id = new_qualities[0].getId()  # Just pick the first available one
+                else:
+                    Logger.log("w", "No quality profile found that matches the current machine and extruders.")
             else:
                 if not old_quality_changes:
                     new_quality_id = candidate_quality.getId()