diff --git a/cura/Settings/ExtruderManager.py b/cura/Settings/ExtruderManager.py old mode 100644 new mode 100755 index 14106d5804..f6c1759078 --- a/cura/Settings/ExtruderManager.py +++ b/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. # diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py old mode 100644 new mode 100755 index d4e246ab63..e690fcec1d --- a/cura/Settings/MachineManager.py +++ b/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()