aboutsummaryrefslogtreecommitdiffstats
path: root/klippy/kinematics/cartesian.py
diff options
context:
space:
mode:
Diffstat (limited to 'klippy/kinematics/cartesian.py')
-rw-r--r--klippy/kinematics/cartesian.py17
1 files changed, 12 insertions, 5 deletions
diff --git a/klippy/kinematics/cartesian.py b/klippy/kinematics/cartesian.py
index 6d576b5b..9774672e 100644
--- a/klippy/kinematics/cartesian.py
+++ b/klippy/kinematics/cartesian.py
@@ -52,20 +52,27 @@ class CartKinematics:
def get_steppers(self):
return [s for rail in self.rails for s in rail.get_steppers()]
def calc_position(self, stepper_positions):
- return [stepper_positions[rail.get_name()] for rail in self.rails]
+ rails = self.rails
+ if self.dc_module:
+ primary_rail = self.dc_module.get_primary_rail().get_rail()
+ rails = (rails[:self.dc_module.axis] +
+ [primary_rail] + rails[self.dc_module.axis+1:])
+ return [stepper_positions[rail.get_name()] for rail in rails]
def update_limits(self, i, range):
l, h = self.limits[i]
# Only update limits if this axis was already homed,
# otherwise leave in un-homed state.
if l <= h:
self.limits[i] = range
- def override_rail(self, i, rail):
- self.rails[i] = rail
def set_position(self, newpos, homing_axes):
for i, rail in enumerate(self.rails):
rail.set_position(newpos)
- if i in homing_axes:
- self.limits[i] = rail.get_range()
+ for axis in homing_axes:
+ if self.dc_module and axis == self.dc_module.axis:
+ rail = self.dc_module.get_primary_rail().get_rail()
+ else:
+ rail = self.rails[axis]
+ self.limits[axis] = rail.get_range()
def note_z_not_homed(self):
# Helper for Safe Z Home
self.limits[2] = (1.0, -1.0)