diff --git a/cura/Settings/ExtruderManager.py b/cura/Settings/ExtruderManager.py index 18744cd13f..8221203b78 100755 --- a/cura/Settings/ExtruderManager.py +++ b/cura/Settings/ExtruderManager.py @@ -357,8 +357,19 @@ class ExtruderManager(QObject): # After 3.4, all single-extrusion machines have their own extruder definition files instead of reusing # "fdmextruder". We need to check a machine here so its extruder definition is correct according to this. def _fixSingleExtrusionMachineExtruderDefinition(self, global_stack: "GlobalStack") -> None: + container_registry = ContainerRegistry.getInstance() expected_extruder_definition_0_id = global_stack.getMetaDataEntry("machine_extruder_trains")["0"] extruder_stack_0 = global_stack.extruders.get("0") + # At this point, extruder stacks for this machine may not have been loaded yet. In this case, need to look in + # the container registry as well. + if not global_stack.extruders: + extruder_trains = container_registry.findContainerStacks(type = "extruder_train", + machine = global_stack.getId()) + if extruder_trains: + for extruder in extruder_trains: + if extruder.getMetaDataEntry("position") == "0": + extruder_stack_0 = extruder + break if extruder_stack_0 is None: Logger.log("i", "No extruder stack for global stack [%s], create one", global_stack.getId()) @@ -369,7 +380,6 @@ class ExtruderManager(QObject): elif extruder_stack_0.definition.getId() != expected_extruder_definition_0_id: Logger.log("e", "Single extruder printer [{printer}] expected extruder [{expected}], but got [{got}]. I'm making it [{expected}].".format( printer = global_stack.getId(), expected = expected_extruder_definition_0_id, got = extruder_stack_0.definition.getId())) - container_registry = ContainerRegistry.getInstance() extruder_definition = container_registry.findDefinitionContainers(id = expected_extruder_definition_0_id)[0] extruder_stack_0.definition = extruder_definition