aboutsummaryrefslogtreecommitdiffstats
path: root/klippy/kinematics/extruder.py
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2022-02-21 13:51:27 -0500
committerKevin O'Connor <kevin@koconnor.net>2022-03-04 13:20:35 -0500
commit6627d036ac7c04877af99f1c996b7947b375af86 (patch)
treee4332e9d893105daa9da8d0637d8b06aada3aebf /klippy/kinematics/extruder.py
parent4a8aece6a7f2ae5cbaa2ac283f0a82a0a613ac3d (diff)
downloadkutter-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.py23
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