diff options
author | Kevin O'Connor <kevin@koconnor.net> | 2022-01-29 19:13:31 -0500 |
---|---|---|
committer | Kevin O'Connor <kevin@koconnor.net> | 2022-02-10 13:24:21 -0500 |
commit | 9ec97424844c76bbc0c5604e15aa195282b6c955 (patch) | |
tree | ff05667b33edfff52b86768ed962e5c0f4e597df /klippy/kinematics | |
parent | 189188e3ca3e40d8272fb4ad48316e329f8ec453 (diff) | |
download | kutter-9ec97424844c76bbc0c5604e15aa195282b6c955.tar.gz kutter-9ec97424844c76bbc0c5604e15aa195282b6c955.tar.xz kutter-9ec97424844c76bbc0c5604e15aa195282b6c955.zip |
extruder: Add support for reversing the direction of extruder stepper movement
Extend SET_EXTRUDER_ROTATION_DISTANCE to support reversing the
direction of extruder movement.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'klippy/kinematics')
-rw-r--r-- | klippy/kinematics/extruder.py | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/klippy/kinematics/extruder.py b/klippy/kinematics/extruder.py index 52c2e187..2749f63c 100644 --- a/klippy/kinematics/extruder.py +++ b/klippy/kinematics/extruder.py @@ -91,13 +91,24 @@ class ExtruderStepper: gcmd.respond_info(msg, log=False) cmd_SET_E_ROTATION_DISTANCE_help = "Set extruder rotation distance" def cmd_SET_E_ROTATION_DISTANCE(self, gcmd): - rotation_dist = gcmd.get_float('DISTANCE', None, above=0.) + rotation_dist = gcmd.get_float('DISTANCE', None) if rotation_dist is not None: + if not rotation_dist: + raise gcmd.error("Rotation distance can not be zero") + invert_dir, orig_invert_dir = self.stepper.get_dir_inverted() + next_invert_dir = orig_invert_dir + if rotation_dist < 0.: + next_invert_dir = not orig_invert_dir + rotation_dist = -rotation_dist toolhead = self.printer.lookup_object('toolhead') toolhead.flush_step_generation() self.stepper.set_rotation_distance(rotation_dist) + self.stepper.set_dir_inverted(next_invert_dir) else: rotation_dist, spr = self.stepper.get_rotation_distance() + invert_dir, orig_invert_dir = self.stepper.get_dir_inverted() + if invert_dir != orig_invert_dir: + rotation_dist = -rotation_dist gcmd.respond_info("Extruder '%s' rotation distance set to %0.6f" % (self.name, rotation_dist)) cmd_SET_E_STEP_DISTANCE_help = "Set extruder step distance" |