aboutsummaryrefslogtreecommitdiffstats
path: root/klippy
diff options
context:
space:
mode:
authorMichael Rose <elementation@gmail.com>2021-06-02 09:11:19 -0600
committerGitHub <noreply@github.com>2021-06-02 11:11:19 -0400
commit27f8cf025ef348eb3fd16cc32a0d738e2effa9af (patch)
treefa75e4b3e1fd4f0711d1fbef8bdaad8d2e5827db /klippy
parentc148f17ea3391e3720961270a12eb0645f688e12 (diff)
downloadkutter-27f8cf025ef348eb3fd16cc32a0d738e2effa9af.tar.gz
kutter-27f8cf025ef348eb3fd16cc32a0d738e2effa9af.tar.xz
kutter-27f8cf025ef348eb3fd16cc32a0d738e2effa9af.zip
z_tilt: expose an 'applied' status to allow macros to skip QGL/Z_TILT_ADJUST (#4313)
This is useful for macros that'd like to skip QGL if already leveled, e.g.: ``` {% if not printer.quad_gantry_level.applied %} QUAD_GANTRY_LEVEL {% endif %} ``` Signed-off-by: Michael Rose <elementation@gmail.com>
Diffstat (limited to 'klippy')
-rw-r--r--klippy/extras/quad_gantry_level.py8
-rw-r--r--klippy/extras/z_tilt.py23
2 files changed, 29 insertions, 2 deletions
diff --git a/klippy/extras/quad_gantry_level.py b/klippy/extras/quad_gantry_level.py
index 43173e15..8b10918f 100644
--- a/klippy/extras/quad_gantry_level.py
+++ b/klippy/extras/quad_gantry_level.py
@@ -33,6 +33,7 @@ class QuadGantryLevel:
if len(self.probe_helper.probe_points) != 4:
raise config.error(
"Need exactly 4 probe points for quad_gantry_level")
+ self.z_status = z_tilt.ZAdjustStatus(self.printer)
self.z_helper = z_tilt.ZAdjustHelper(config, 4)
gantry_corners = config.get('gantry_corners').split('\n')
try:
@@ -54,6 +55,7 @@ class QuadGantryLevel:
cmd_QUAD_GANTRY_LEVEL_help = (
"Conform a moving, twistable gantry to the shape of a stationary bed")
def cmd_QUAD_GANTRY_LEVEL(self, gcmd):
+ self.z_status.reset()
self.retry_helper.start(gcmd)
self.probe_helper.start_probe(gcmd)
def probe_finalize(self, offsets, positions):
@@ -114,7 +116,9 @@ class QuadGantryLevel:
speed = self.probe_helper.get_lift_speed()
self.z_helper.adjust_steppers(z_adjust, speed)
- return self.retry_helper.check_retry(z_positions)
+ return self.z_status.check_retry_result(
+ self.retry_helper.check_retry(z_positions))
+
def linefit(self,p1,p2):
if p1[1] == p2[1]:
# Straight line
@@ -124,6 +128,8 @@ class QuadGantryLevel:
return m,b
def plot(self,f,x):
return f[0]*x + f[1]
+ def get_status(self, eventtime):
+ return self.z_status.get_status(eventtime)
def load_config(config):
return QuadGantryLevel(config)
diff --git a/klippy/extras/z_tilt.py b/klippy/extras/z_tilt.py
index c4c58c9e..f8a8c718 100644
--- a/klippy/extras/z_tilt.py
+++ b/klippy/extras/z_tilt.py
@@ -66,6 +66,22 @@ class ZAdjustHelper:
curpos[2] += first_stepper_offset
toolhead.set_position(curpos)
+class ZAdjustStatus:
+ def __init__(self, printer):
+ self.applied = False
+ printer.register_event_handler("stepper_enable:motor_off",
+ self._motor_off)
+ def check_retry_result(self, retry_result):
+ if retry_result == "done":
+ self.applied = True
+ return retry_result
+ def reset(self):
+ self.applied = False
+ def get_status(self, eventtime):
+ return {'applied': self.applied}
+ def _motor_off(self, print_time):
+ self.reset()
+
class RetryHelper:
def __init__(self, config, error_msg_extra = ""):
self.gcode = config.get_printer().lookup_object('gcode')
@@ -123,6 +139,7 @@ class ZTilt:
self.retry_helper = RetryHelper(config)
self.probe_helper = probe.ProbePointsHelper(config, self.probe_finalize)
self.probe_helper.minimum_points(2)
+ self.z_status = ZAdjustStatus(self.printer)
self.z_helper = ZAdjustHelper(config, len(self.z_positions))
# Register Z_TILT_ADJUST command
gcode = self.printer.lookup_object('gcode')
@@ -130,6 +147,7 @@ class ZTilt:
desc=self.cmd_Z_TILT_ADJUST_help)
cmd_Z_TILT_ADJUST_help = "Adjust the Z tilt"
def cmd_Z_TILT_ADJUST(self, gcmd):
+ self.z_status.reset()
self.retry_helper.start(gcmd)
self.probe_helper.start_probe(gcmd)
def probe_finalize(self, offsets, positions):
@@ -159,7 +177,10 @@ class ZTilt:
adjustments = [x*x_adjust + y*y_adjust + z_adjust
for x, y in self.z_positions]
self.z_helper.adjust_steppers(adjustments, speed)
- return self.retry_helper.check_retry([p[2] for p in positions])
+ return self.z_status.check_retry_result(
+ self.retry_helper.check_retry([p[2] for p in positions]))
+ def get_status(self, eventtime):
+ return self.z_status.get_status(eventtime)
def load_config(config):
return ZTilt(config)