aboutsummaryrefslogtreecommitdiffstats
path: root/klippy/kinematics
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2022-01-29 19:13:31 -0500
committerKevin O'Connor <kevin@koconnor.net>2022-02-10 13:24:21 -0500
commit9ec97424844c76bbc0c5604e15aa195282b6c955 (patch)
treeff05667b33edfff52b86768ed962e5c0f4e597df /klippy/kinematics
parent189188e3ca3e40d8272fb4ad48316e329f8ec453 (diff)
downloadkutter-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.py13
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"