diff --git a/plugins/CuraEngineBackend/StartSliceJob.py b/plugins/CuraEngineBackend/StartSliceJob.py index 06859aef55..4d9afd31bc 100644 --- a/plugins/CuraEngineBackend/StartSliceJob.py +++ b/plugins/CuraEngineBackend/StartSliceJob.py @@ -84,7 +84,7 @@ class GcodeStartEndFormatter(Formatter): container_stack = ExtruderManager.getInstance().getExtruderStack(extruder_nr) setting_function = SettingFunction(expression) - value = setting_function(container_stack) + value = setting_function(container_stack, additional_variables=kwargs[str(extruder_nr)]) return value @@ -423,10 +423,17 @@ class StartSliceJob(Job): :param value: A piece of g-code to replace tokens in. :param default_extruder_nr: Stack nr to use when no stack nr is specified, defaults to the global stack """ + if not self._all_extruders_settings: + self._cacheAllExtruderSettings() + try: # any setting can be used as a token fmt = GcodeStartEndFormatter(default_extruder_nr = default_extruder_nr) - return str(fmt.format(value)) + if self._all_extruders_settings is None: + return "" + settings = self._all_extruders_settings.copy() + settings["default_extruder_nr"] = default_extruder_nr + return str(fmt.format(value, **settings)) except: Logger.logException("w", "Unable to do token replacement on start/end g-code") return str(value)