====== Print Start Workflows ======
{{tag> articles setup about}}
One way (slicer side and [[slicer machine start print gcode]]), or another (Klipper side and [[PRINT_START macro]]), there's certain steps we need to take to start printing the gcode that's slice from an object. There's reasons and rationale for why you'd place certain actions where.
==== Minimal workflow ====
* heat bed
* home and position
* heat extruder
* prime nozzle
* reset extruder
=== More Realistic Workflow ===
* check that bed's level with SCREWS_TILT_CALCULATE max_deviation check
* heat bed
* home and position
* run adaptive bed mesh
* heat extruder
* Set the feed speed to 100%
* Set the flow rate to 100%
* prime nozzle
* reset extruder
==== Example Orca Machine Start gcode ======
;
; Orca Slicer Machine Start G-code by @dshoop v2.2a
;
; PRINT_START
; note the above line is commented out as we may or may not need to call this depending
; on our version of Klipper. If earlier versions of Elegoo's distribution it
; was called automatically.
G28; Home, if this fails no point to continue; required before BED_MESH_CALIBRATE
M190 S[bed_temperature_initial_layer_single] ;wait for bed to reach temperature
M104 S150 ;pre-warm extruder to 150C below typical extrusion temps so as not to ooze, no wait
;
BED_MESH_CALIBRATE mesh_min={adaptive_bed_mesh_min[0]},{adaptive_bed_mesh_min[1]} mesh_max={adaptive_bed_mesh_max[0]},{adaptive_bed_mesh_max[1]} ALGORITHM=[bed_mesh_algo] PROBE_COUNT={bed_mesh_probe_count[0]},{bed_mesh_probe_count[1]} ADAPTIVE=1 ADAPTIVE_MARGIN=0
;
M104 S[nozzle_temperature_initial_layer] ;Heat extruder to temp, no wait
M220 S100 ;Set the feed speed to 100%
M221 S100 ;Set the flow rate to 100%
G90
G28 ;home
G1 Z10 F300
G1 X67.5 Y0 F6000
G1 Z0 F300
M109 S[nozzle_temperature_initial_layer] ; wait for extruder to reach temp
G92 E0 ;Reset Extruder
G1 X67.5 Y0 Z0.4 F300 ;Move to start position
G1 X167.5 E30 F400 ;Draw the first line
G0 Y0.6 F120
G1 X67.5 E60 F400 ;Draw the second line
G0 Z0.6 F120
G92 E0 ;Reset Extruder
==== Example PRINT_START macro ====
[gcode_macro PRINT_START]
gcode:
RESPOND PREFIX="" MSG=">> Klipper PRINT_START Macro <<"
M117 Starting Klipper START_PRINT macro
M400 ; wait for current moves to finish
CLEAR_PAUSE ; clear any pause conditions
G28 ; home before SCREWS_TILT_CALCULATE
SCREWS_TILT_CALCULATE max_deviation=0.02 ; assume bed's z plane is level within given deviation
M105 ;Request temperature reports to be sent to the host as soon as possible
RESPOND PREFIX="" MSG=">> PRINT_START Macro complete <<"
M117 PRINT_START Macro complete