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): def _move_to_position(self):
x_position = y_position = None x_position = y_position = None
z_hop = speed = None
# Get position from config # Get position from config
printer_cfg = self._config.get_printer_config(self._screen.connected_printer) printer_cfg = self._config.get_printer_config(self._screen.connected_printer)
logging.info(printer_cfg)
if printer_cfg is not None: if printer_cfg is not None:
x_position = printer_cfg.getfloat("calibrate_x_position", None) x_position = printer_cfg.getfloat("calibrate_x_position", None)
y_position = printer_cfg.getfloat("calibrate_y_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) 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) 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 # Use safe_z_home position
if "safe_z_home" in self._screen.printer.get_config_section_list(): if "safe_z_home" in self._screen.printer.get_config_section_list():
safe_z = self._screen.printer.get_config_section("safe_z_home") 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]) y_position = float(safe_z_xy[1])
logging.debug(f"Using safe_z y:{y_position}") logging.debug(f"Using safe_z y:{y_position}")
if 'z_hop' in safe_z: if 'z_hop' in safe_z:
speed = safe_z['z_hop_speed'] if 'z_hop_speed' in safe_z else 15 z_hop = safe_z['z_hop']
self._screen._ws.klippy.gcode_script(f"G0 Z{safe_z['z_hop']} F{speed * 60}") 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: if x_position is not None and y_position is not None:
logging.debug(f"Configured probing position X: {x_position} Y: {y_position}") 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") logging.info("Detected delta kinematics calibrating at 0,0")
self._screen._ws.klippy.gcode_script('G0 X0 Y0 F3000') self._screen._ws.klippy.gcode_script('G0 X0 Y0 F3000')
else: 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") logging.debug("Position not configured, probing the middle of the bed")
try: try:
xmax = float(self._screen.printer.get_config_section("stepper_x")['position_max']) 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}") logging.info(f"Center position X:{x_position} Y:{y_position}")
# Find probe offset # Find probe offset
klipper_cfg = self._screen.printer.get_config_section_list()
x_offset = y_offset = None x_offset = y_offset = None
for probe_type in self.probe_types: for probe_type in self.probe_types:
if probe_type in klipper_cfg: if probe_type in klipper_cfg: