Просмотр исходного кода

CURA-4400 corrected getProperty in correctExtruderSettings

Jack Ha 7 лет назад
Родитель
Сommit
ba7b18a88b
2 измененных файлов с 9 добавлено и 3 удалено
  1. 3 1
      cura/Settings/ContainerManager.py
  2. 6 2
      cura/Settings/MachineManager.py

+ 3 - 1
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()
 

+ 6 - 2
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):