diff options
author | Kevin O'Connor <kevin@koconnor.net> | 2022-02-21 13:51:27 -0500 |
---|---|---|
committer | Kevin O'Connor <kevin@koconnor.net> | 2022-03-04 13:20:35 -0500 |
commit | 6627d036ac7c04877af99f1c996b7947b375af86 (patch) | |
tree | e4332e9d893105daa9da8d0637d8b06aada3aebf /klippy/kinematics/extruder.py | |
parent | 4a8aece6a7f2ae5cbaa2ac283f0a82a0a613ac3d (diff) | |
download | kutter-6627d036ac7c04877af99f1c996b7947b375af86.tar.gz kutter-6627d036ac7c04877af99f1c996b7947b375af86.tar.xz kutter-6627d036ac7c04877af99f1c996b7947b375af86.zip |
extruder: Allow an extruder object to be created without a stepper
This may be useful for dual hotend printers that have only one
stepper.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'klippy/kinematics/extruder.py')
-rw-r--r-- | klippy/kinematics/extruder.py | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/klippy/kinematics/extruder.py b/klippy/kinematics/extruder.py index 99d5daf8..e3303982 100644 --- a/klippy/kinematics/extruder.py +++ b/klippy/kinematics/extruder.py @@ -79,6 +79,8 @@ class ExtruderStepper: cmd_SET_PRESSURE_ADVANCE_help = "Set pressure advance parameters" def cmd_default_SET_PRESSURE_ADVANCE(self, gcmd): extruder = self.printer.lookup_object('toolhead').get_extruder() + if extruder.extruder_stepper is None: + raise gcmd.error("Active extruder does not have a stepper") extruder.extruder_stepper.cmd_SET_PRESSURE_ADVANCE(gcmd) def cmd_SET_PRESSURE_ADVANCE(self, gcmd): pressure_advance = gcmd.get_float('ADVANCE', self.pressure_advance, @@ -181,12 +183,16 @@ class PrinterExtruder: self.trapq_append = ffi_lib.trapq_append self.trapq_finalize_moves = ffi_lib.trapq_finalize_moves # Setup extruder stepper - self.extruder_stepper = ExtruderStepper(config) - self.extruder_stepper.stepper.set_trapq(self.trapq) - pa = config.getfloat('pressure_advance', 0., minval=0.) - smooth_time = config.getfloat('pressure_advance_smooth_time', - 0.040, above=0., maxval=.200) - self.extruder_stepper._set_pressure_advance(pa, smooth_time) + self.extruder_stepper = None + if (config.get('step_pin', None) is not None + or config.get('dir_pin', None) is not None + or config.get('rotation_distance', None) is not None): + self.extruder_stepper = ExtruderStepper(config) + self.extruder_stepper.stepper.set_trapq(self.trapq) + pa = config.getfloat('pressure_advance', 0., minval=0.) + smooth_time = config.getfloat('pressure_advance_smooth_time', + 0.040, above=0., maxval=.200) + self.extruder_stepper._set_pressure_advance(pa, smooth_time) # Register commands gcode = self.printer.lookup_object('gcode') if self.name == 'extruder': @@ -201,7 +207,8 @@ class PrinterExtruder: def get_status(self, eventtime): sts = self.heater.get_status(eventtime) sts['can_extrude'] = self.heater.can_extrude - sts.update(self.extruder_stepper.get_status(eventtime)) + if self.extruder_stepper is not None: + sts.update(self.extruder_stepper.get_status(eventtime)) return sts def get_name(self): return self.name @@ -259,6 +266,8 @@ class PrinterExtruder: start_v, cruise_v, accel) self.last_position = move.end_pos[3] def find_past_position(self, print_time): + if self.extruder_stepper is None: + return 0. return self.extruder_stepper.find_past_position(print_time) def cmd_M104(self, gcmd, wait=False): # Set Extruder Temperature |