aboutsummaryrefslogtreecommitdiffstats
path: root/klippy/kinematics/extruder.py
diff options
context:
space:
mode:
Diffstat (limited to 'klippy/kinematics/extruder.py')
-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"