diff options
Diffstat (limited to 'klippy')
-rw-r--r-- | klippy/extras/screws_tilt_adjust.py | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/klippy/extras/screws_tilt_adjust.py b/klippy/extras/screws_tilt_adjust.py index 2dd54af3..30e091ff 100644 --- a/klippy/extras/screws_tilt_adjust.py +++ b/klippy/extras/screws_tilt_adjust.py @@ -19,6 +19,7 @@ class ScrewsTiltAdjust: self.config = config self.printer = config.get_printer() self.screws = [] + self.max_diff = None # Read config for i in range(99): prefix = "screw%d" % (i + 1,) @@ -51,11 +52,13 @@ class ScrewsTiltAdjust: "of turns to level it." def cmd_SCREWS_TILT_CALCULATE(self, gcmd): + self.max_diff = gcmd.get_float("MAX_DEVIATION", None) self.probe_helper.start_probe(gcmd) def probe_finalize(self, offsets, positions): # Factors used for CW-M3, CCW-M3, CW-M4, CCW-M4, CW-M5 and CCW-M5 threads_factor = {0: 0.5, 1: 0.5, 2: 0.7, 3: 0.7, 4: 0.8, 5: 0.8} + screw_diff = [] # Process the read Z values and for i, screw in enumerate(self.screws): if i == 0: @@ -71,6 +74,7 @@ class ScrewsTiltAdjust: z = positions[i][2] coord, name = screw diff = z_base - z + screw_diff.append(abs(diff)) if abs(diff) < 0.001: adjust = 0 else: @@ -87,6 +91,10 @@ class ScrewsTiltAdjust: "Adjust -> %s %02d:%02d" % (name, coord[0], coord[1], z, sign, abs(full_turns), abs(minutes))) + if self.max_diff and any((d > self.max_diff) for d in screw_diff): + raise self.gcode.error( + "bed level exceeds configured limits ({}mm)! " \ + "Adjust screws and restart print.".format(self.max_diff)) def load_config(config): return ScrewsTiltAdjust(config) |