diff --git a/cura/Settings/ContainerManager.py b/cura/Settings/ContainerManager.py index 96fff61b0b..20ce9638c1 100644 --- a/cura/Settings/ContainerManager.py +++ b/cura/Settings/ContainerManager.py @@ -346,10 +346,12 @@ class ContainerManager(QObject): # Go through global and extruder stacks and clear their topmost container (the user settings). for stack in ExtruderManager.getInstance().getActiveGlobalAndExtruderStacks(): - container = stack.getTop() + container = stack.userChanges container.clear() send_emits_containers.append(container) + Application.getInstance().getMachineManager().correctExtruderSettings() + for container in send_emits_containers: container.sendPostponedEmits() diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py index a46fedd853..52058789c3 100755 --- a/cura/Settings/MachineManager.py +++ b/cura/Settings/MachineManager.py @@ -699,9 +699,9 @@ class MachineManager(QObject): return containers[0].definition.getId() ## Update extruder number to a valid value when the number of extruders are changed, or when an extruder is changed + # \return if any properties has been added def correctExtruderSettings(self): - definition_changes_container = self._global_container_stack.definitionChanges - extruder_count = definition_changes_container.getProperty("machine_extruder_count", "value") + extruder_count = self._global_container_stack.getProperty("machine_extruder_count", "value") # reset all extruder number settings whose value is no longer valid for setting_instance in self._global_container_stack.userChanges.findInstances(): @@ -717,6 +717,7 @@ class MachineManager(QObject): self._global_container_stack.userChanges.removeInstance(setting_key) Logger.log("d", "Reset [%s] because its old value [%s] is no longer valid (2)", setting_key, old_value) + added_properties = False for setting_key in self._global_container_stack.definition.getAllKeys(): if not self._global_container_stack.getProperty(setting_key, "type") in ("extruder", "optional_extruder"): continue @@ -727,8 +728,11 @@ class MachineManager(QObject): continue if not self._global_container_stack.extruders[str(current_value)].isEnabled: self._global_container_stack.userChanges.setProperty(setting_key, "value", str(self._default_extruder_position)) + added_properties = True Logger.log("d", "Change [%s] to [%s] because its value [%s] is not valid", setting_key, self._default_extruder_position, current_value) + return added_properties + ## Set the amount of extruders on the active machine (global stack) # \param extruder_count int the number of extruders to set def setActiveMachineExtruderCount(self, extruder_count):