diff --git a/plugins/CuraEngineBackend/StartSliceJob.py b/plugins/CuraEngineBackend/StartSliceJob.py index 000cf8fa4a..b6da2104a6 100644 --- a/plugins/CuraEngineBackend/StartSliceJob.py +++ b/plugins/CuraEngineBackend/StartSliceJob.py @@ -325,14 +325,19 @@ class StartSliceJob(Job): for key in changed_setting_keys: setting = message.addRepeatedMessage("settings") setting.name = key - setting.value = str(stack.getProperty(key, "value")).encode("utf-8") + extruder = int(round(float(stack.getProperty(key, "limit_to_extruder")))) + if extruder >= 0 and key not in top_of_stack.getAllKeys(): #Limited to a specific extruder, but not overridden by per-object settings. + limited_stack = ExtruderManager.getInstance().getActiveExtruderStacks()[extruder] + else: + limited_stack = stack #Just take from the per-object settings itself. + setting.value = str(limited_stack.getProperty(key, "value")).encode("utf-8") Job.yieldThread() ## Recursive function to put all settings that require eachother for value changes in a list # \param relations_set \type{set} Set of keys (strings) of settings that are influenced # \param relations list of relation objects that need to be checked. def _addRelations(self, relations_set, relations): - for relation in filter(lambda r: r.role == "value", relations): + for relation in filter(lambda r: r.role == "value" or r.role == "limit_to_extruder", relations): if relation.type == RelationType.RequiresTarget: continue