zcalibrate: use sample_retract_dist if available close #748

This commit is contained in:
alfrix 2022-11-08 17:28:08 -03:00
parent 02c043eece
commit 0ca410acba

View File

@ -157,9 +157,9 @@ class ZCalibratePanel(ScreenPanel):
def _move_to_position(self):
x_position = y_position = None
z_hop = speed = None
# Get position from config
printer_cfg = self._config.get_printer_config(self._screen.connected_printer)
logging.info(printer_cfg)
if printer_cfg is not None:
x_position = printer_cfg.getfloat("calibrate_x_position", None)
y_position = printer_cfg.getfloat("calibrate_y_position", None)
@ -168,6 +168,15 @@ class ZCalibratePanel(ScreenPanel):
x_position = self._config.get_config()['z_calibrate_position'].getfloat("calibrate_x_position", None)
y_position = self._config.get_config()['z_calibrate_position'].getfloat("calibrate_y_position", None)
klipper_cfg = self._screen.printer.get_config_section_list()
for probe_type in self.probe_types:
if probe_type in klipper_cfg:
probe = self._screen.printer.get_config_section(probe_type)
if "sample_retract_dist" in probe:
z_hop = probe['sample_retract_dist']
if "speed" in probe:
speed = probe['speed']
# Use safe_z_home position
if "safe_z_home" in self._screen.printer.get_config_section_list():
safe_z = self._screen.printer.get_config_section("safe_z_home")
@ -180,8 +189,13 @@ class ZCalibratePanel(ScreenPanel):
y_position = float(safe_z_xy[1])
logging.debug(f"Using safe_z y:{y_position}")
if 'z_hop' in safe_z:
speed = safe_z['z_hop_speed'] if 'z_hop_speed' in safe_z else 15
self._screen._ws.klippy.gcode_script(f"G0 Z{safe_z['z_hop']} F{speed * 60}")
z_hop = safe_z['z_hop']
if 'z_hop_speed' in safe_z:
speed = safe_z['z_hop_speed']
speed = 15 if speed is None else speed
z_hop = 5 if z_hop is None else z_hop
self._screen._ws.klippy.gcode_script(f"G0 Z{z_hop} F{float(speed) * 60}")
if x_position is not None and y_position is not None:
logging.debug(f"Configured probing position X: {x_position} Y: {y_position}")
@ -190,9 +204,9 @@ class ZCalibratePanel(ScreenPanel):
logging.info("Detected delta kinematics calibrating at 0,0")
self._screen._ws.klippy.gcode_script('G0 X0 Y0 F3000')
else:
self._calculate_position()
self._calculate_position(klipper_cfg)
def _calculate_position(self):
def _calculate_position(self, klipper_cfg):
logging.debug("Position not configured, probing the middle of the bed")
try:
xmax = float(self._screen.printer.get_config_section("stepper_x")['position_max'])
@ -205,7 +219,6 @@ class ZCalibratePanel(ScreenPanel):
logging.info(f"Center position X:{x_position} Y:{y_position}")
# Find probe offset
klipper_cfg = self._screen.printer.get_config_section_list()
x_offset = y_offset = None
for probe_type in self.probe_types:
if probe_type in klipper_cfg: