From df1ca39c7b4295f2afa561c94af69c165211cc49 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Fri, 10 Jun 2016 12:48:41 +0200 Subject: [PATCH 1/2] Fix getting proper container stack in decorator Using the filter function now but the resulting list wasn't properly accounted for. Contributes to issue CURA-340. --- cura/SettingOverrideDecorator.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cura/SettingOverrideDecorator.py b/cura/SettingOverrideDecorator.py index 7417e47bf2..806c0c008e 100644 --- a/cura/SettingOverrideDecorator.py +++ b/cura/SettingOverrideDecorator.py @@ -61,7 +61,7 @@ class SettingOverrideDecorator(SceneNodeDecorator): if self._extruder_stack: extruder_stack = ContainerRegistry.getInstance().findContainerStacks(id = self._extruder_stack) if extruder_stack: - self._stack.setNextStack(extruder_stack) + self._stack.setNextStack(extruder_stack[0]) else: UM.Logger.log("e", "Extruder stack %s below per-object settings does not exist.", self._extruder_stack) else: From f302e06654528925067806c45b396d5e8791778d Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Fri, 10 Jun 2016 13:37:07 +0200 Subject: [PATCH 2/2] Reslice when per-object extruder changes Not when you activate the dropdown but it doesn't change though. Contributes to issue CURA-340. --- cura/SettingOverrideDecorator.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/cura/SettingOverrideDecorator.py b/cura/SettingOverrideDecorator.py index 806c0c008e..e3e3555016 100644 --- a/cura/SettingOverrideDecorator.py +++ b/cura/SettingOverrideDecorator.py @@ -61,7 +61,10 @@ class SettingOverrideDecorator(SceneNodeDecorator): if self._extruder_stack: extruder_stack = ContainerRegistry.getInstance().findContainerStacks(id = self._extruder_stack) if extruder_stack: + old_extruder_stack_id = self._stack.getNextStack().getId() self._stack.setNextStack(extruder_stack[0]) + if self._stack.getNextStack().getId() != old_extruder_stack_id: #Only reslice if the extruder changed. + Application.getInstance().getBackend().forceSlice() else: UM.Logger.log("e", "Extruder stack %s below per-object settings does not exist.", self._extruder_stack) else: