mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-07 06:57:28 -06:00
Cleanup code in GcodeStartEndFormatter
CURA-11155
This commit is contained in:
parent
14afd73c19
commit
e98240fb2c
1 changed files with 28 additions and 11 deletions
|
@ -62,11 +62,13 @@ class GcodeStartEndFormatter(Formatter):
|
||||||
|
|
||||||
_extruder_regex = re.compile(r"^\s*(?P<expression>.*)\s*,\s*(?P<extruder_nr>\d+)\s*$")
|
_extruder_regex = re.compile(r"^\s*(?P<expression>.*)\s*,\s*(?P<extruder_nr>\d+)\s*$")
|
||||||
|
|
||||||
def __init__(self, default_extruder_nr: int = -1) -> None:
|
def __init__(self, default_extruder_nr: int = -1, *,
|
||||||
|
additional_per_extruder_settings: Optional[Dict[str, Dict[str, any]]] = None) -> None:
|
||||||
super().__init__()
|
super().__init__()
|
||||||
self._default_extruder_nr = default_extruder_nr
|
self._default_extruder_nr: int = default_extruder_nr
|
||||||
|
self._additional_per_extruder_settings: Optional[Dict[str, Dict[str, any]]] = additional_per_extruder_settings
|
||||||
|
|
||||||
def get_value(self, expression: str, args: str, kwargs: dict) -> str:
|
def get_value(self, expression: str, args: [str], kwargs: dict) -> str:
|
||||||
extruder_nr = self._default_extruder_nr
|
extruder_nr = self._default_extruder_nr
|
||||||
|
|
||||||
# The settings may specify a specific extruder to use. This is done by
|
# The settings may specify a specific extruder to use. This is done by
|
||||||
|
@ -78,13 +80,27 @@ class GcodeStartEndFormatter(Formatter):
|
||||||
expression = match.group("expression")
|
expression = match.group("expression")
|
||||||
extruder_nr = int(match.group("extruder_nr"))
|
extruder_nr = int(match.group("extruder_nr"))
|
||||||
|
|
||||||
|
if self._additional_per_extruder_settings is not None and str(
|
||||||
|
extruder_nr) in self._additional_per_extruder_settings:
|
||||||
|
additional_variables = self._additional_per_extruder_settings[str(extruder_nr)]
|
||||||
|
else:
|
||||||
|
additional_variables = dict()
|
||||||
|
|
||||||
|
# Add the arguments and keyword arguments to the additional settings. These
|
||||||
|
# are currently _not_ used, but they are added for consistency with the
|
||||||
|
# base Formatter class.
|
||||||
|
for key, value in enumerate(args):
|
||||||
|
additional_variables[key] = value
|
||||||
|
for key, value in kwargs.items():
|
||||||
|
additional_variables[key] = value
|
||||||
|
|
||||||
if extruder_nr == -1:
|
if extruder_nr == -1:
|
||||||
container_stack = CuraApplication.getInstance().getGlobalContainerStack()
|
container_stack = CuraApplication.getInstance().getGlobalContainerStack()
|
||||||
else:
|
else:
|
||||||
container_stack = ExtruderManager.getInstance().getExtruderStack(extruder_nr)
|
container_stack = ExtruderManager.getInstance().getExtruderStack(extruder_nr)
|
||||||
|
|
||||||
setting_function = SettingFunction(expression)
|
setting_function = SettingFunction(expression)
|
||||||
value = setting_function(container_stack, additional_variables=kwargs[str(extruder_nr)])
|
value = setting_function(container_stack, additional_variables=additional_variables)
|
||||||
|
|
||||||
return value
|
return value
|
||||||
|
|
||||||
|
@ -427,13 +443,14 @@ class StartSliceJob(Job):
|
||||||
self._cacheAllExtruderSettings()
|
self._cacheAllExtruderSettings()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# any setting can be used as a token
|
# Get "replacement-keys" for the extruders. In the formatter the settings stack is used to get the
|
||||||
fmt = GcodeStartEndFormatter(default_extruder_nr = default_extruder_nr)
|
# replacement values for the setting-keys. However, the values for `material_id`, `material_type`,
|
||||||
if self._all_extruders_settings is None:
|
# etc are not in the settings stack.
|
||||||
return ""
|
additional_per_extruder_settings = self._all_extruders_settings.copy()
|
||||||
settings = self._all_extruders_settings.copy()
|
additional_per_extruder_settings["default_extruder_nr"] = default_extruder_nr
|
||||||
settings["default_extruder_nr"] = default_extruder_nr
|
fmt = GcodeStartEndFormatter(default_extruder_nr=default_extruder_nr,
|
||||||
return str(fmt.format(value, **settings))
|
additional_per_extruder_settings=additional_per_extruder_settings)
|
||||||
|
return str(fmt.format(value))
|
||||||
except:
|
except:
|
||||||
Logger.logException("w", "Unable to do token replacement on start/end g-code")
|
Logger.logException("w", "Unable to do token replacement on start/end g-code")
|
||||||
return str(value)
|
return str(value)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue