gcode_macro: default parameter values
Signed-off-by: Janar Sööt <janar.soot@gmail.com> Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
parent
d9e35481be
commit
68dc28580f
|
@ -976,6 +976,14 @@
|
||||||
# a macro MY_DELAY with gcode "G4 P{DELAY}" then the command
|
# a macro MY_DELAY with gcode "G4 P{DELAY}" then the command
|
||||||
# "MY_DELAY DELAY=100" would evaluate to "G4 P100". This parameter
|
# "MY_DELAY DELAY=100" would evaluate to "G4 P100". This parameter
|
||||||
# must be provided.
|
# must be provided.
|
||||||
|
#default_parameter_<parameter>:
|
||||||
|
# One may define any number of options with a "default_parameter_"
|
||||||
|
# prefix. Use this to define default values for g-code parameters.
|
||||||
|
# For example, if one were to define the macro MY_DELAY with gcode
|
||||||
|
# "G4 P{DELAY}" along with "default_paramter_DELAY = 50" then the
|
||||||
|
# command "MY_DELAY" would evaluate to "G4 P50". The default is to
|
||||||
|
# require that all parameters used in the gcode script be present in
|
||||||
|
# the command invoking the macro.
|
||||||
|
|
||||||
|
|
||||||
# Replicape support - see the generic-replicape.cfg file for further
|
# Replicape support - see the generic-replicape.cfg file for further
|
||||||
|
|
|
@ -5,6 +5,8 @@
|
||||||
# This file may be distributed under the terms of the GNU GPLv3 license.
|
# This file may be distributed under the terms of the GNU GPLv3 license.
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
|
DEFAULT_PREFIX = 'default_parameter_'
|
||||||
|
|
||||||
class GCodeMacro:
|
class GCodeMacro:
|
||||||
def __init__(self, config):
|
def __init__(self, config):
|
||||||
self.alias = config.get_name().split()[1].upper()
|
self.alias = config.get_name().split()[1].upper()
|
||||||
|
@ -17,14 +19,18 @@ class GCodeMacro:
|
||||||
except self.gcode.error as e:
|
except self.gcode.error as e:
|
||||||
raise config.error(str(e))
|
raise config.error(str(e))
|
||||||
self.in_script = False
|
self.in_script = False
|
||||||
|
self.kwparams = { o[len(DEFAULT_PREFIX):].upper(): config.get(o)
|
||||||
|
for o in config.get_prefix_options(DEFAULT_PREFIX) }
|
||||||
cmd_desc = "G-Code macro"
|
cmd_desc = "G-Code macro"
|
||||||
def cmd(self, params):
|
def cmd(self, params):
|
||||||
if self.in_script:
|
if self.in_script:
|
||||||
raise self.gcode.error(
|
raise self.gcode.error(
|
||||||
"Macro %s called recursively" % (self.alias,))
|
"Macro %s called recursively" % (self.alias,))
|
||||||
script = ""
|
script = ""
|
||||||
|
kwparams = dict(self.kwparams)
|
||||||
|
kwparams.update(params)
|
||||||
try:
|
try:
|
||||||
script = self.script.format(**params)
|
script = self.script.format(**kwparams)
|
||||||
except Exception:
|
except Exception:
|
||||||
msg = "Macro %s script formatting failed" % (self.alias,)
|
msg = "Macro %s script formatting failed" % (self.alias,)
|
||||||
logging.exception(msg)
|
logging.exception(msg)
|
||||||
|
|
Loading…
Reference in New Issue