aboutsummaryrefslogtreecommitdiffstats
path: root/klippy/kinematics/idex_modes.py
diff options
context:
space:
mode:
authorDmitry Butyugin <dmbutyugin@google.com>2025-05-23 01:44:47 +0200
committerKevinOConnor <kevin@koconnor.net>2025-06-04 13:40:58 -0400
commit4d4b9684a53fa7e776914b222cdab21f870dad76 (patch)
tree1293fe6e5bbc52d01d502cdbfff625a5821e0e7d /klippy/kinematics/idex_modes.py
parent14cbb8dd2db14a473fe0a01c626d9bbecc420144 (diff)
downloadkutter-4d4b9684a53fa7e776914b222cdab21f870dad76.tar.gz
kutter-4d4b9684a53fa7e776914b222cdab21f870dad76.tar.xz
kutter-4d4b9684a53fa7e776914b222cdab21f870dad76.zip
input_shaper: Track kinematics updates by dual_carriage
Signed-off-by: Dmitry Butyugin <dmbutyugin@google.com>
Diffstat (limited to 'klippy/kinematics/idex_modes.py')
-rw-r--r--klippy/kinematics/idex_modes.py20
1 files changed, 8 insertions, 12 deletions
diff --git a/klippy/kinematics/idex_modes.py b/klippy/kinematics/idex_modes.py
index c7c2305c..19d5a655 100644
--- a/klippy/kinematics/idex_modes.py
+++ b/klippy/kinematics/idex_modes.py
@@ -18,17 +18,18 @@ class DualCarriages:
safe_dist={}):
self.printer = printer
self.axes = axes
- steppers = self._init_steppers(primary_rails + dual_rails)
+ self._init_steppers(primary_rails + dual_rails)
self.primary_rails = [
- DualCarriagesRail(c, dual_rails[i], axes[i], active=True)
+ DualCarriagesRail(printer, c, dual_rails[i],
+ axes[i], active=True)
for i, c in enumerate(primary_rails)]
self.dual_rails = [
- DualCarriagesRail(c, primary_rails[i], axes[i], active=False)
+ DualCarriagesRail(printer, c, primary_rails[i],
+ axes[i], active=False)
for i, c in enumerate(dual_rails)]
self.dc_rails = collections.OrderedDict(
[(c.rail.get_name(short=True), c)
for c in self.primary_rails + self.dual_rails])
- self._init_shapers(steppers)
self.saved_states = {}
self.safe_dist = {}
for i, dc in enumerate(dual_rails):
@@ -76,13 +77,6 @@ class DualCarriages:
self.dc_stepper_kinematics.append(sk)
self.orig_stepper_kinematics.append(orig_sk)
s.set_stepper_kinematics(sk)
- return steppers
- def _init_shapers(self, steppers):
- input_shaper = self.printer.lookup_object("input_shaper", None)
- if input_shaper is not None:
- # Make sure to initialize input shaper stepper kinematics
- # before modifying IDEX stepper kinematics.
- input_shaper.init_for_steppers(steppers)
def get_axes(self):
return self.axes
def get_primary_rail(self, axis):
@@ -324,7 +318,8 @@ class DualCarriages:
class DualCarriagesRail:
ENC_AXES = [b'x', b'y']
- def __init__(self, rail, dual_rail, axis, active):
+ def __init__(self, printer, rail, dual_rail, axis, active):
+ self.printer = printer
self.rail = rail
self.dual_rail = dual_rail
self.sks = [s.get_stepper_kinematics() for s in rail.get_steppers()]
@@ -343,6 +338,7 @@ class DualCarriagesRail:
for sk in self.sks:
ffi_lib.dual_carriage_set_transform(
sk, self.ENC_AXES[self.axis], self.scale, self.offset)
+ self.printer.send_event('dual_carriage:update_kinematics')
def activate(self, mode, position, old_position=None):
old_axis_position = self.get_axis_position(old_position or position)
self.scale = -1. if mode == MIRROR else 1.