diff options
author | Kevin O'Connor <kevin@koconnor.net> | 2022-01-29 14:13:26 -0500 |
---|---|---|
committer | Kevin O'Connor <kevin@koconnor.net> | 2022-02-10 13:24:21 -0500 |
commit | 189188e3ca3e40d8272fb4ad48316e329f8ec453 (patch) | |
tree | 6cb261ae94676f18a0170d4442f81ac94f3e5831 /klippy/kinematics/extruder.py | |
parent | 6d7c03365ad13c4661675aaccd0a3dc5be544493 (diff) | |
download | kutter-189188e3ca3e40d8272fb4ad48316e329f8ec453.tar.gz kutter-189188e3ca3e40d8272fb4ad48316e329f8ec453.tar.xz kutter-189188e3ca3e40d8272fb4ad48316e329f8ec453.zip |
extruder: Add a SET_EXTRUDER_ROTATION_DISTANCE command
Support altering the extruder distance using the higher-level
rotation_distance. This is in preparation for removal of the
SET_EXTRUDER_STEP_DISTANCE command.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'klippy/kinematics/extruder.py')
-rw-r--r-- | klippy/kinematics/extruder.py | 31 |
1 files changed, 22 insertions, 9 deletions
diff --git a/klippy/kinematics/extruder.py b/klippy/kinematics/extruder.py index e3bc8916..52c2e187 100644 --- a/klippy/kinematics/extruder.py +++ b/klippy/kinematics/extruder.py @@ -28,6 +28,9 @@ class ExtruderStepper: gcode.register_mux_command("SET_PRESSURE_ADVANCE", "EXTRUDER", self.name, self.cmd_SET_PRESSURE_ADVANCE, desc=self.cmd_SET_PRESSURE_ADVANCE_help) + gcode.register_mux_command("SET_EXTRUDER_ROTATION_DISTANCE", "EXTRUDER", + self.name, self.cmd_SET_E_ROTATION_DISTANCE, + desc=self.cmd_SET_E_ROTATION_DISTANCE_help) gcode.register_mux_command("SET_EXTRUDER_STEP_DISTANCE", "EXTRUDER", self.name, self.cmd_SET_E_STEP_DISTANCE, desc=self.cmd_SET_E_STEP_DISTANCE_help) @@ -86,19 +89,29 @@ class ExtruderStepper: % (pressure_advance, smooth_time)) self.printer.set_rollover_info(self.name, "%s: %s" % (self.name, msg)) 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.) + if rotation_dist is not None: + toolhead = self.printer.lookup_object('toolhead') + toolhead.flush_step_generation() + self.stepper.set_rotation_distance(rotation_dist) + else: + rotation_dist, spr = self.stepper.get_rotation_distance() + 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" def cmd_SET_E_STEP_DISTANCE(self, gcmd): - toolhead = self.printer.lookup_object('toolhead') - dist = gcmd.get_float('DISTANCE', None, above=0.) - if dist is None: + step_dist = gcmd.get_float('DISTANCE', None, above=0.) + if step_dist is not None: + toolhead = self.printer.lookup_object('toolhead') + toolhead.flush_step_generation() + rd, steps_per_rotation = self.stepper.get_rotation_distance() + self.stepper.set_rotation_distance(step_dist * steps_per_rotation) + else: step_dist = self.stepper.get_step_dist() - gcmd.respond_info("Extruder '%s' step distance is %0.6f" - % (self.name, step_dist)) - return - toolhead.flush_step_generation() - self.stepper.set_step_dist(dist) gcmd.respond_info("Extruder '%s' step distance set to %0.6f" - % (self.name, dist)) + % (self.name, step_dist)) cmd_SYNC_STEPPER_TO_EXTRUDER_help = "Set extruder stepper" def cmd_SYNC_STEPPER_TO_EXTRUDER(self, gcmd): ename = gcmd.get('EXTRUDER') |