From 1a679028582d7ae503d80a4bbc8ca233451633be Mon Sep 17 00:00:00 2001 From: Kevin O'Connor Date: Tue, 16 Jan 2018 18:58:41 -0500 Subject: homing_override: Allow moves prior to homing an axis Add support for disabling homing checks via the homing_override mechanism. This may be useful to move an axis prior to homing it. Signed-off-by: Kevin O'Connor --- klippy/extras/homing_override.py | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) (limited to 'klippy/extras/homing_override.py') diff --git a/klippy/extras/homing_override.py b/klippy/extras/homing_override.py index 1e23fb80..c773f444 100644 --- a/klippy/extras/homing_override.py +++ b/klippy/extras/homing_override.py @@ -6,16 +6,29 @@ class HomingOverride: def __init__(self, config): - printer = config.get_printer() + self.printer = config.get_printer() + self.start_pos = [config.getfloat('set_position_' + a, None) + for a in 'xyz'] self.script = config.get('gcode') self.in_script = False - self.gcode = printer.lookup_object('gcode') + self.gcode = self.printer.lookup_object('gcode') self.gcode.register_command("G28", self.cmd_G28) def cmd_G28(self, params): if self.in_script: # Was called recursively - invoke the real G28 command self.gcode.cmd_G28(params) return + # Calculate forced position (if configured) + toolhead = self.printer.lookup_object('toolhead') + pos = toolhead.get_position() + homing_axes = [] + for axis, loc in enumerate(self.start_pos): + if loc is not None: + pos[axis] = loc + homing_axes.append(axis) + toolhead.set_position(pos, homing_axes=homing_axes) + self.gcode.reset_last_position() + # Perform homing try: self.in_script = True self.gcode.run_script(self.script) -- cgit v1.2.3-70-g09d2