From 32d5fbe557b235e81a3991070be36133b151666c Mon Sep 17 00:00:00 2001 From: Jack Ha Date: Mon, 13 Mar 2017 17:17:56 +0100 Subject: [PATCH] Fixed choosing a quality that is compatible with multiple extruders as fallback. CURA-3510 --- cura/Settings/ExtruderManager.py | 7 +++++++ cura/Settings/MachineManager.py | 14 ++++++++------ 2 files changed, 15 insertions(+), 6 deletions(-) mode change 100644 => 100755 cura/Settings/ExtruderManager.py mode change 100644 => 100755 cura/Settings/MachineManager.py 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()