diff options
author | Kevin O'Connor <kevin@koconnor.net> | 2017-05-02 08:57:38 -0400 |
---|---|---|
committer | Kevin O'Connor <kevin@koconnor.net> | 2017-05-02 08:57:38 -0400 |
commit | 98f2adbcb5a19c58a196a316e8db0eb076b635b0 (patch) | |
tree | 789871524e48fd88d2c59c08532d3e796000f55c | |
parent | c9d21574d85e180eac4371e09a8ab977312b0ea7 (diff) | |
download | kutter-98f2adbcb5a19c58a196a316e8db0eb076b635b0.tar.gz kutter-98f2adbcb5a19c58a196a316e8db0eb076b635b0.tar.xz kutter-98f2adbcb5a19c58a196a316e8db0eb076b635b0.zip |
extruder: Rework maximum retraction check
On a retract move (which are common during "wipe" operations), treat
the move as if it were an extrude only move. It's valid for a retract
move to reverse more filament then it would be practical to push.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
-rw-r--r-- | klippy/extruder.py | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/klippy/extruder.py b/klippy/extruder.py index 2feff175..0a77902b 100644 --- a/klippy/extruder.py +++ b/klippy/extruder.py @@ -49,15 +49,16 @@ class PrinterExtruder: if not self.heater.can_extrude: raise homing.EndstopMoveError( move.end_pos, "Extrude below minimum temp") - if not move.is_kinematic_move: - # Extrude only move - limit accel and velocity + if not move.is_kinematic_move or move.extrude_r < 0.: + # Extrude only move (or retraction move) - limit accel and velocity if abs(move.axes_d[3]) > self.max_e_dist: raise homing.EndstopMoveError( - move.end_pos, "Extrude only move too long") - move.limit_speed(self.max_e_velocity, self.max_e_accel) - elif (abs(move.extrude_r) > self.max_extrude_ratio - and (abs(move.axes_d[3]) - > self.nozzle_diameter*self.max_extrude_ratio)): + move.end_pos, "Extrude move too long") + inv_extrude_r = 1. / abs(move.extrude_r) + move.limit_speed(self.max_e_velocity * inv_extrude_r + , self.max_e_accel * inv_extrude_r) + elif (move.extrude_r > self.max_extrude_ratio + and move.axes_d[3] > self.nozzle_diameter*self.max_extrude_ratio): logging.debug("Overextrude: %s vs %s" % ( move.extrude_r, self.max_extrude_ratio)) raise homing.EndstopMoveError( |