Reset extruder numbers whose values are no longer valid

CURA-4176

After the user changes the number of extruders for a machine, some
extruder number settings may not have valid values any more. These
settings need to be reset.`
This commit is contained in:
Lipu Fei 2017-10-27 10:56:46 +02:00
parent e8bd404904
commit fe70e19089

View file

@ -147,6 +147,7 @@ class MachineSettingsAction(MachineAction):
for setting_instance in extruder_user_container.findInstances(): for setting_instance in extruder_user_container.findInstances():
setting_key = setting_instance.definition.key setting_key = setting_instance.definition.key
settable_per_extruder = self._global_container_stack.getProperty(setting_key, "settable_per_extruder") settable_per_extruder = self._global_container_stack.getProperty(setting_key, "settable_per_extruder")
if settable_per_extruder: if settable_per_extruder:
limit_to_extruder = self._global_container_stack.getProperty(setting_key, "limit_to_extruder") limit_to_extruder = self._global_container_stack.getProperty(setting_key, "limit_to_extruder")
@ -154,11 +155,16 @@ class MachineSettingsAction(MachineAction):
global_user_container.setProperty(setting_key, "value", extruder_user_container.getProperty(setting_key, "value")) global_user_container.setProperty(setting_key, "value", extruder_user_container.getProperty(setting_key, "value"))
extruder_user_container.removeInstance(setting_key) extruder_user_container.removeInstance(setting_key)
# Check to see if any features are set to print with an extruder that will no longer exist # reset all extruder number settings whose value is no longer valid
for setting_key in ["adhesion_extruder_nr", "support_extruder_nr", "support_extruder_nr_layer_0", "support_infill_extruder_nr", "support_interface_extruder_nr"]: for setting_instance in self._global_container_stack.userChanges.findInstances():
if int(self._global_container_stack.getProperty(setting_key, "value")) > extruder_count - 1: setting_key = setting_instance.definition.key
Logger.log("i", "Lowering %s setting to match number of extruders", setting_key) if not self._global_container_stack.getProperty(setting_key, "type") in ("extruder", "optional_extruder"):
self._global_container_stack.getTop().setProperty(setting_key, "value", extruder_count - 1) continue
old_value = int(self._global_container_stack.userChanges.getProperty(setting_key, "value"))
if old_value >= extruder_count:
self._global_container_stack.userChanges.removeInstance(setting_key)
Logger.log("d", "Reset [%s] because its old value [%s] is no longer valid ", setting_key, old_value)
# Check to see if any objects are set to print with an extruder that will no longer exist # Check to see if any objects are set to print with an extruder that will no longer exist
root_node = Application.getInstance().getController().getScene().getRoot() root_node = Application.getInstance().getController().getScene().getRoot()