From d6205d5d858bfb3f7806520d7aac942c332656cd Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Tue, 27 Mar 2018 14:38:15 +0200 Subject: [PATCH] Show configuration error when extruder positions don't match When any extruder position doesn't match when adding a container, don't add any of the extruders. Don't add faulty half-data to the registry! Contributes to issue CURA-5045. --- cura/Settings/CuraStackBuilder.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/cura/Settings/CuraStackBuilder.py b/cura/Settings/CuraStackBuilder.py index b646abd669..640489adb3 100644 --- a/cura/Settings/CuraStackBuilder.py +++ b/cura/Settings/CuraStackBuilder.py @@ -88,8 +88,8 @@ class CuraStackBuilder: extruder_definition = registry.findDefinitionContainers(id = extruder_definition_id)[0] position_in_extruder_def = extruder_definition.getMetaDataEntry("position") if position_in_extruder_def != position: - raise RuntimeError("Extruder position [%s] defined in extruder definition [%s] is not the same as in machine definition [%s] position [%s]" % - (position_in_extruder_def, extruder_definition_id, definition_id, position)) + ConfigurationErrorMessage.getInstance().addFaultyContainers(extruder_definition_id) + return None #Don't return any container stack then, not the rest of the extruders either. new_extruder_id = registry.uniqueName(extruder_definition_id) new_extruder = cls.createExtruderStack( @@ -104,6 +104,8 @@ class CuraStackBuilder: ) new_extruder.setNextStack(new_global_stack) new_global_stack.addExtruder(new_extruder) + + for new_extruder in new_global_stack.extruders.values(): #Only register the extruders if we're sure that all of them are correct. registry.addContainer(new_extruder) preferred_quality_type = machine_definition.getMetaDataEntry("preferred_quality_type")