diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py index f8e609af77..ece3e1ce92 100755 --- a/cura/Settings/MachineManager.py +++ b/cura/Settings/MachineManager.py @@ -1257,8 +1257,19 @@ class MachineManager(QObject): new_machine.setMetaDataEntry("hidden", False) self._global_container_stack.setMetaDataEntry("hidden", True) + # The new_machine only has the global user changes and not the per-extruder user changes (since it has an empty + # extruderList before it becomes active). Keep a temporary copy of the per-extruder user changes and transfer + # it to the user changes of the new machine after the new_machine becomes active. + per_extruder_user_changes = {} + for extruder_name, extruder_stack in self._global_container_stack.extruders.items(): + per_extruder_user_changes[extruder_name] = extruder_stack.userChanges + self.setActiveMachine(new_machine.getId()) + # Apply the per-extruder userChanges to the new_machine (which is of different type than the previous one). + for extruder_name in self._global_container_stack.extruders.keys(): + self._global_container_stack.extruders[extruder_name].setUserChanges(per_extruder_user_changes[extruder_name]) + @pyqtSlot(QObject) def applyRemoteConfiguration(self, configuration: PrinterConfigurationModel) -> None: if self._global_container_stack is None: