diff options
author | theophile <chmeredith@gmail.com> | 2020-06-06 13:30:58 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-06-06 14:30:58 -0400 |
commit | 518fe023b424e8e9284dea00d5ab1e4d0124db6c (patch) | |
tree | 1cd6d385d408e2e84cf02fde348dd69ae2db9acd /klippy/extras/extruder_stepper.py | |
parent | 967fe1c01c759724c52ec4fefbb95fb8a58840a6 (diff) | |
download | kutter-518fe023b424e8e9284dea00d5ab1e4d0124db6c.tar.gz kutter-518fe023b424e8e9284dea00d5ab1e4d0124db6c.tar.xz kutter-518fe023b424e8e9284dea00d5ab1e4d0124db6c.zip |
extruder_stepper: Support changing synced extruder on the fly (#2824)
Signed-off-by: Christopher Meredith <chmeredith@gmail.com>
Diffstat (limited to 'klippy/extras/extruder_stepper.py')
-rw-r--r-- | klippy/extras/extruder_stepper.py | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/klippy/extras/extruder_stepper.py b/klippy/extras/extruder_stepper.py index f6d0e9ea..58f16375 100644 --- a/klippy/extras/extruder_stepper.py +++ b/klippy/extras/extruder_stepper.py @@ -9,17 +9,37 @@ import stepper class ExtruderStepper: def __init__(self, config): self.printer = config.get_printer() + stepper_name = config.get_name().split()[1] self.extruder_name = config.get('extruder', 'extruder') self.stepper = stepper.PrinterStepper(config) self.stepper.set_max_jerk(9999999.9, 9999999.9) self.stepper.setup_itersolve('extruder_stepper_alloc') self.printer.register_event_handler("klippy:connect", self.handle_connect) + gcode = self.printer.lookup_object('gcode') + gcode.register_mux_command("SYNC_STEPPER_TO_EXTRUDER", "STEPPER", + stepper_name, + self.cmd_SYNC_STEPPER_TO_EXTRUDER, + desc=self.cmd_SYNC_STEPPER_TO_EXTRUDER_help) def handle_connect(self): extruder = self.printer.lookup_object(self.extruder_name) self.stepper.set_trapq(extruder.get_trapq()) toolhead = self.printer.lookup_object('toolhead') toolhead.register_step_generator(self.stepper.generate_steps) + cmd_SYNC_STEPPER_TO_EXTRUDER_help = "Set extruder stepper" + def cmd_SYNC_STEPPER_TO_EXTRUDER(self, gcmd): + gcode = self.printer.lookup_object('gcode') + self.extruder_name = gcmd.get('EXTRUDER', None) + extruder = self.printer.lookup_object(self.extruder_name, None) + if extruder is not None: + epos = extruder.stepper.get_commanded_position() + self.stepper.set_position([epos, 0., 0.]) + self.stepper.set_trapq(extruder.get_trapq()) + gcode.respond_info("Extruder stepper now syncing with '%s'" + % (self.extruder_name)) + else: + raise gcmd.error("'%s' is not a valid extruder." + % (self.extruder_name)) def load_config_prefix(config): return ExtruderStepper(config) |