[gcode_macro FAST_CALIBRATE] description: > Quickly home axis and mesh the print area. • Caps nozzle temp at 150 °C (warns if over‑requested) • Heats bed & nozzle, non‑blocking wait (via WAIT_HEAT_ALL) • Clears old mesh, homes, then runs adaptive mesh • Moves to center & probes, with step‑by‑step logs gcode: # ─── STEP 1: Read & Cap Requested Temps ─────────────────────────── # {% set extruder_req = params.EXTRUDER|default(0)|int %} {% set bed_req = params.BED |default(0)|int %} {% if extruder_req > 150 %} {% set capped_extruder = 150 %} {% set warn_msg = "⚠️ Nozzle temp request " ~ extruder_req|string ~ "°C capped to " ~ capped_extruder|string ~ "°C" %} RESPOND MSG="{warn_msg}" {% else %} {% set capped_extruder = extruder_req %} {% endif %} # ─── STEP 2: Status Overview ──────────────────────────────────────── # {% set status_msg = "⚙️ Fast Calibrate Starting | Bed → " ~ bed_req|string ~ "°C" ~ " | Nozzle → " ~ capped_extruder|string ~ "°C" %} RESPOND MSG="{status_msg}" # ─── STEP 3: Begin Heating Heaters ───────────────────────────────── # {% if capped_extruder > 0 %} {% set heat_nozzle_msg = "🔥 Heating nozzle to " ~ capped_extruder|string ~ "°C" %} RESPOND MSG="{heat_nozzle_msg}" M104 S{capped_extruder} {% else %} RESPOND MSG="ℹ️ Nozzle heating skipped (0°C requested)" {% endif %} {% if bed_req > 0 %} {% set heat_bed_msg = "🔥 Heating bed to " ~ bed_req|string ~ "°C" %} RESPOND MSG="{heat_bed_msg}" M140 S{bed_req} {% else %} RESPOND MSG="ℹ️ Bed heating skipped (0°C requested)" {% endif %} # ─── STEP 4: Non‑blocking Wait for Both Temps ─────────────────────── # WAIT_HEAT_ALL # ─── STEP 5: Clear Mesh & Home Axes ───────────────────────────────── # RESPOND MSG="🧹 Clearing old mesh" BED_MESH_CLEAR RESPOND MSG="🏠 Homing all axes" _CG28 {% if printer.quad_gantry_level.applied|lower == 'false' %} RESPOND MSG="📏 Running quad gantry level" STATUS_LEVELING QUAD_GANTRY_LEVEL {% else %} RESPOND MSG="✔️ Gantry already leveled" {% endif %} # ─── STEP 6: Adaptive Mesh Scan ──────────────────────────────────── # RESPOND MSG="🔍 Starting adaptive mesh scan" STATUS_MESHING BED_MESH_CALIBRATE ADAPTIVE=1 # ─── STEP 7: Final Probe Touch ───────────────────────────────────── # RESPOND MSG="📍 Moving to center for probe touch" G1 X{ printer.toolhead.axis_maximum.x/2 } Y{ printer.toolhead.axis_maximum.y/2 } F4500 CARTOGRAPHER_TOUCH # ─── STEP 8: Restore original nozzle temp & wait ────────────────── # {% if extruder_req > 0 %} {% set restore_msg = "🔁 Restoring nozzle temp to " ~ extruder_req|string ~ "°C" %} RESPOND MSG="{restore_msg}" M104 S{extruder_req} WAIT_HEAT_EXTRUDER {% endif %} RESPOND MSG="✅ Fast calibration complete" [gcode_macro WAIT_HEAT_ALL] description: Wait for bed and nozzle to reach target temps gcode: RESPOND MSG="⏳ Waiting for bed and nozzle to heat..." M190 S{printer.heater_bed.target} M109 S{printer.extruder.target} RESPOND MSG="🔥 Bed and nozzle ready." [gcode_macro WAIT_HEAT_EXTRUDER] description: Wait for nozzle to reach target temps gcode: RESPOND MSG="⏳ Waiting for nozzle to heat..." M109 S{printer.extruder.target} RESPOND MSG="🔥 Nozzle ready."