homing: Add EndstopMoveError wrapper around EndstopError
Allow an EndstopError to be raised without a destination position. Introduce EndstopMoveError wrapper so that current callers can continue to pass in a move destination. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
parent
2b5b899d35
commit
4f30dce64f
|
@ -84,8 +84,9 @@ class CartKinematics:
|
||||||
and (end_pos[i] < self.limits[i][0]
|
and (end_pos[i] < self.limits[i][0]
|
||||||
or end_pos[i] > self.limits[i][1])):
|
or end_pos[i] > self.limits[i][1])):
|
||||||
if self.limits[i][0] > self.limits[i][1]:
|
if self.limits[i][0] > self.limits[i][1]:
|
||||||
raise homing.EndstopError(end_pos, "Must home axis first")
|
raise homing.EndstopMoveError(
|
||||||
raise homing.EndstopError(end_pos)
|
end_pos, "Must home axis first")
|
||||||
|
raise homing.EndstopMoveError(end_pos)
|
||||||
def check_move(self, move):
|
def check_move(self, move):
|
||||||
limits = self.limits
|
limits = self.limits
|
||||||
xpos, ypos = move.end_pos[:2]
|
xpos, ypos = move.end_pos[:2]
|
||||||
|
|
|
@ -118,11 +118,11 @@ class DeltaKinematics:
|
||||||
xy2 = end_pos[0]**2 + end_pos[1]**2
|
xy2 = end_pos[0]**2 + end_pos[1]**2
|
||||||
if xy2 > self.limit_xy2 or end_pos[2] < 0.:
|
if xy2 > self.limit_xy2 or end_pos[2] < 0.:
|
||||||
if self.limit_xy2 < 0.:
|
if self.limit_xy2 < 0.:
|
||||||
raise homing.EndstopError(end_pos, "Must home first")
|
raise homing.EndstopMoveError(end_pos, "Must home first")
|
||||||
raise homing.EndstopError(end_pos)
|
raise homing.EndstopMoveError(end_pos)
|
||||||
if end_pos[2] > self.limit_z:
|
if end_pos[2] > self.limit_z:
|
||||||
if end_pos[2] > self.max_z or xy2 > (self.max_z - end_pos[2])**2:
|
if end_pos[2] > self.max_z or xy2 > (self.max_z - end_pos[2])**2:
|
||||||
raise homing.EndstopError(end_pos)
|
raise homing.EndstopMoveError(end_pos)
|
||||||
def move_z(self, move_time, move):
|
def move_z(self, move_time, move):
|
||||||
if not move.axes_d[2]:
|
if not move.axes_d[2]:
|
||||||
return
|
return
|
||||||
|
|
|
@ -23,7 +23,8 @@ class PrinterExtruder:
|
||||||
self.need_motor_enable = True
|
self.need_motor_enable = True
|
||||||
def check_move(self, move):
|
def check_move(self, move):
|
||||||
if not self.heater.can_extrude:
|
if not self.heater.can_extrude:
|
||||||
raise homing.EndstopError(move.end_pos, "Extrude below minimum temp")
|
raise homing.EndstopMoveError(
|
||||||
|
move.end_pos, "Extrude below minimum temp")
|
||||||
if (not move.do_calc_junction
|
if (not move.do_calc_junction
|
||||||
and not move.axes_d[0] and not move.axes_d[1]
|
and not move.axes_d[0] and not move.axes_d[1]
|
||||||
and not move.axes_d[2]):
|
and not move.axes_d[2]):
|
||||||
|
|
|
@ -104,9 +104,11 @@ class QueryEndstops:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
class EndstopError(Exception):
|
class EndstopError(Exception):
|
||||||
def __init__(self, pos, msg="Move out of range"):
|
def __init__(self, msg="Endstop error"):
|
||||||
self.pos = pos
|
self._msg = msg
|
||||||
self.msg = msg
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return "%s: %.3f %.3f %.3f [%.3f]" % (
|
return self._msg
|
||||||
self.msg, self.pos[0], self.pos[1], self.pos[2], self.pos[3])
|
|
||||||
|
def EndstopMoveError(pos, msg="Move out of range"):
|
||||||
|
return EndstopError("%s: %.3f %.3f %.3f [%.3f]" % (
|
||||||
|
msg, pos[0], pos[1], pos[2], pos[3]))
|
||||||
|
|
Loading…
Reference in New Issue