Files
QIDI_Q1_Pro/config/gcode_macro.cfg

870 lines
21 KiB
INI
Raw Normal View History

2024-04-10 09:05:25 +08:00
# Q1_Pro
# V4.4.16 2024-3-14
# modify: variable change M106 & M141 & M107
# V4.4.16 2024-3-26
# modify: variable change [homing_override]->add M204 S10000
[gcode_macro test_zoffset]
gcode:
G28
get_zoffset
G1 X{120 - printer.probe["x_offset"]} Y{120 - printer.probe["y_offset"]} F9000
G1 Z10 F600
probe
G1 Z10 F600
[gcode_macro get_zoffset]
gcode:
G1 Z10 F600
Z_DOUDONG
G4 P500
QIDI_PROBE_PIN_1
probe probe_speed=10 samples=3
SET_KINEMATIC_POSITION Z=-0.1
G1 Z30 F600
QIDI_PROBE_PIN_2
[gcode_macro save_zoffset]
gcode:
{% if printer.gcode_move.homing_origin.z < 0.5 %}
SAVE_VARIABLE VARIABLE=z_offset VALUE={printer.gcode_move.homing_origin.z}
{% endif %}
[gcode_macro set_zoffset]
gcode:
{% set z = printer.save_variables.variables.z_offset %}
SET_GCODE_OFFSET Z={z} MOVE=0
2024-05-03 09:56:18 +08:00
[gcode_macro CLEAR_NOZZLE_PLR]
gcode:
{% set hotendtemp = params.HOTEND|default(250)|int %}
{% if (printer.gcode_move.position.z ) < 35 %}
G90
G1 Z35 F900
{% else %}
G91
G1 Z5 F900
G90
{% endif %}
G1 X97 F9000
G1 Y254 F9000
M109 S{hotendtemp}
G92 E0
G1 E80 F400
M106 S255
G1 X98 F500
G1 X85 F2000
G1 X98 F2000
G1 X85 F2000
G1 X98 F2000
G1 X85 F2000
G1 X98 F2000
G1 X85 F2000
G1 X98 F2000
G1 X85 F2000
G1 X98 F2000
G1 X85 F2000
G1 X98 F2000
G1 Y240 F9000
2024-04-10 09:05:25 +08:00
[gcode_macro CLEAR_NOZZLE]
gcode:
{% set hotendtemp = params.HOTEND|int %}
2024-05-03 09:56:18 +08:00
{% if (printer.gcode_move.position.z ) < 35 %}
G1 Z35 F900
{% else %}
G91
G1 Z5 F900
G90
{% endif %}
2024-04-10 09:05:25 +08:00
G1 X97 F9000
G1 Y254 F9000
M109 S{hotendtemp}
G92 E0
G1 E80 F400
M106 S255
2024-05-03 09:56:18 +08:00
M400
2024-04-10 09:05:25 +08:00
M106 P2 S0
M104 S0
TEMPERATURE_WAIT SENSOR=extruder MAXIMUM={hotendtemp-30}
G1 X85 F2000
G1 X98 F2000
G1 X85 F2000
G1 X98 F2000
G1 X85 F2000
G1 X98 F2000
G1 X85 F2000
G1 X98 F2000
G1 X85 F2000
G1 X98 F2000
G1 X85 F2000
G1 X65 F500
G1 X88 F500
G1 X65 F500
G1 X88 F500
G1 X65 F500
G1 Y249 F500
G1 Y254 F500
G1 Y249 F500
G1 Y254 F500
G1 Y249 F500
G1 Y253.5 F500
G1 X88 F500
G1 X65 F500
G1 X88 F500
G1 X65 F500
G1 X85 F500
G1 X98 F500
G1 X85 F2000
G1 X98 F2000
G1 X85 F2000
G1 X98 F2000
G1 X85 F2000
G1 X98 F2000
G1 X85 F2000
G1 X98 F2000
G1 X85 F2000
G1 X98 F2000
G1 X85 F2000
G1 X98 F2000
M400
M118 Nozzle cleared
G1 Y120 F9000
G1 X230 F9000
TEMPERATURE_WAIT SENSOR=extruder MAXIMUM=140
M107
M106 P2 S0
M400
M118 Nozzle cooled
[gcode_macro PRINT_START]
gcode:
AUTOTUNE_SHAPERS
{% set bedtemp = params.BED|int %}
{% set hotendtemp = params.HOTEND|int %}
{% set chambertemp = params.CHAMBER|default(0)|int %}
set_zoffset
M104 S0
M140 S{bedtemp}
M141 S{chambertemp}
G28
CLEAR_NOZZLE HOTEND={hotendtemp}
M190 S{bedtemp}
2024-05-03 09:56:18 +08:00
# Z_TILT_ADJUST
2024-04-10 09:05:25 +08:00
G29
G0 Z50 F600
G0 X0 Y0 F6000
M191 S{chambertemp}
M109 S{hotendtemp}
M204 S10000
2024-05-03 09:56:18 +08:00
ENABLE_ALL_SENSOR
save_last_file
[gcode_macro ENABLE_ALL_SENSOR]
gcode:
2024-04-10 09:05:25 +08:00
ENABLE_FILAMENT_WIDTH_SENSOR
RESET_FILAMENT_WIDTH_SENSOR
query_filament_width
SET_FILAMENT_SENSOR SENSOR=fila ENABLE=1
2024-05-03 09:56:18 +08:00
[gcode_macro DISABLE_ALL_SENSOR]
gcode:
SET_FILAMENT_SENSOR SENSOR=fila ENABLE=0
DISABLE_FILAMENT_WIDTH_SENSOR
2024-04-10 09:05:25 +08:00
[gcode_macro AUTOTUNE_SHAPERS]
variable_autotune_shapers: 'ei'
gcode:
[gcode_macro M84]
rename_existing:M84.1
gcode:
M84.1
SET_STEPPER_ENABLE STEPPER=stepper_x enable=0
SET_STEPPER_ENABLE STEPPER=stepper_y enable=0
SET_STEPPER_ENABLE STEPPER=stepper_z enable=1
SET_STEPPER_ENABLE STEPPER=stepper_z1 enable=1
SET_STEPPER_ENABLE STEPPER=extruder enable=0
2024-05-03 09:56:18 +08:00
[gcode_macro DETECT_INTERRUPTION]
2024-04-10 09:05:25 +08:00
gcode:
{% set was_interrupted = printer.save_variables.variables.was_interrupted %}
{% if was_interrupted %}
M118 Detected unexpected interruption during the last print. Do you want to resume printing? (Do not move the extruder before resuming.)
M118 Yes: RESUME_INTERRUPTED
M118 No: CLEAR_LAST_FILE
{% endif %}
[delayed_gcode KINEMATIC_POSITION]
initial_duration:0.2
gcode:
SET_STEPPER_ENABLE STEPPER=stepper_z enable=1
SET_STEPPER_ENABLE STEPPER=stepper_z1 enable=1
BED_MESH_CLEAR
SET_FILAMENT_SENSOR SENSOR=fila ENABLE=0
2024-05-03 09:56:18 +08:00
# {% set was_interrupted = printer.save_variables.variables.was_interrupted %}
# {% if was_interrupted %}
# M118 Detected unexpected interruption during the last print. Do you want to resume printing? (Do not move the extruder before resuming.)
# M118 Yes: RESUME_INTERRUPTED
# M118 No: CLEAR_LAST_FILE
# {% endif %}
2024-04-10 09:05:25 +08:00
[homing_override]
axes:xyz
gcode:
{% set HOME_CUR = 1 %}
{% set driver_config = printer.configfile.settings['tmc2240 stepper_x'] %}
{% set RUN_CUR = driver_config.run_current %}
{% set HOLD_CUR = driver_config.hold_current %}
M204 S10000
{% if params.X is defined %}
SET_TMC_CURRENT STEPPER=stepper_x CURRENT={HOME_CUR * 0.7}
G28 X
SET_TMC_CURRENT STEPPER=stepper_x CURRENT={HOME_CUR}
BEEP I=1 DUR=100
G1 X10 F1200
{% endif %}
{% if params.Y is defined %}
SET_TMC_CURRENT STEPPER=stepper_y CURRENT={HOME_CUR * 0.9}
G28 Y
SET_TMC_CURRENT STEPPER=stepper_y CURRENT={HOME_CUR}
BEEP I=1 DUR=100
G1 Y10 F1200
{% endif %}
{% if params.Z is defined %}
SET_KINEMATIC_POSITION Z={printer.toolhead.axis_maximum.z-5}
QIDI_PROBE_PIN_2
probe samples=2
SET_KINEMATIC_POSITION Z=1.9
G1 Z10 F600
Z_DOUDONG
QIDI_PROBE_PIN_1
probe probe_speed=10
SET_KINEMATIC_POSITION Z=-0.1
G1 Z30 F480
{% endif %}
{% if params.X is undefined %}
{% if params.Y is undefined %}
{% if params.Z is undefined %}
SET_KINEMATIC_POSITION X=0
SET_KINEMATIC_POSITION Y=0
2024-05-03 09:56:18 +08:00
SET_KINEMATIC_POSITION Z={printer.toolhead.axis_maximum.z-10}
2024-04-10 09:05:25 +08:00
G91
2024-05-03 09:56:18 +08:00
G1 Z7 F600
2024-04-10 09:05:25 +08:00
G1 X10 F2400
G1 Y10 F2400
G4 P2000
SET_TMC_CURRENT STEPPER=stepper_x CURRENT={HOME_CUR * 0.8}
G28 X
SET_TMC_CURRENT STEPPER=stepper_x CURRENT={HOME_CUR}
BEEP I=1 DUR=100
G1 X10 F1200
SET_TMC_CURRENT STEPPER=stepper_y CURRENT={HOME_CUR * 0.9}
G28 Y
SET_TMC_CURRENT STEPPER=stepper_y CURRENT={HOME_CUR}
BEEP I=1 DUR=100
G1 Y10 F1200
SET_TMC_CURRENT STEPPER=stepper_x CURRENT={HOME_CUR * 0.8}
G28 X
SET_TMC_CURRENT STEPPER=stepper_x CURRENT={HOME_CUR}
BEEP I=1 DUR=100
G1 X10 F1200
2024-05-03 09:56:18 +08:00
SET_KINEMATIC_POSITION Z={printer.toolhead.axis_maximum.z-10}
2024-04-10 09:05:25 +08:00
G90
G1 X120 Y120 F7800
G91
QIDI_PROBE_PIN_2
G28 Z
G1 Z30 F600
{% endif %}
{% endif %}
{% endif %}
SET_TMC_CURRENT STEPPER=stepper_x CURRENT={RUN_CUR}
SET_TMC_CURRENT STEPPER=stepper_y CURRENT={RUN_CUR}
M204 S10000
G90
QIDI_PROBE_PIN_2
[gcode_macro SHAPER_CALIBRATE]
rename_existing: RESHAPER_CALIBRATE
gcode:
RESHAPER_CALIBRATE FREQ_START=20 FREQ_END=150
[gcode_macro PRINT_END]
gcode:
SET_IDLE_TIMEOUT TIMEOUT={printer.configfile.settings.idle_timeout.timeout} ; set timeout back to configured value
CLEAR_PAUSE
save_zoffset
M106 P2 S0
M106 P0 S0
M106 P3 S0
M104 S0
M140 S0
M141 S0
M220 S100
M221 S100
SET_STEPPER_ENABLE STEPPER=stepper_x enable=0
SET_STEPPER_ENABLE STEPPER=stepper_y enable=0
SET_STEPPER_ENABLE STEPPER=stepper_z enable=1
SET_STEPPER_ENABLE STEPPER=stepper_z1 enable=1
SET_STEPPER_ENABLE STEPPER=extruder enable=0
2024-05-03 09:56:18 +08:00
DISABLE_ALL_SENSOR
2024-04-10 09:05:25 +08:00
SET_GCODE_OFFSET Z=0 MOVE=0
BED_MESH_CLEAR
G31
CLEAR_LAST_FILE
BEEP I=2 DUR=500
[gcode_macro CANCEL_PRINT]
rename_existing: BASE_CANCEL_PRINT
gcode:
{% if (printer.gcode_move.position.z) < 150 %} ; check that zhop doesn't exceed z max
G1 Z150 F480
{% endif %}
G1 X0 Y0 F7800
SET_IDLE_TIMEOUT TIMEOUT={printer.configfile.settings.idle_timeout.timeout} ; set timeout back to configured value
CLEAR_PAUSE
save_zoffset
M106 P2 S0
M106 P0 S0
M106 P3 S0
M104 S0
M140 S0
M141 S0
M220 S100
M221 S100
SET_STEPPER_ENABLE STEPPER=stepper_x enable=0
SET_STEPPER_ENABLE STEPPER=stepper_y enable=0
SET_STEPPER_ENABLE STEPPER=stepper_z enable=1
SET_STEPPER_ENABLE STEPPER=stepper_z1 enable=1
SET_STEPPER_ENABLE STEPPER=extruder enable=0
2024-05-03 09:56:18 +08:00
DISABLE_ALL_SENSOR
2024-04-10 09:05:25 +08:00
SET_GCODE_OFFSET Z=0 MOVE=0
BED_MESH_CLEAR
G31
BEEP I=2 DUR=500
SDCARD_RESET_FILE
BASE_CANCEL_PRINT
CLEAR_LAST_FILE
[gcode_macro PAUSE]
rename_existing: BASE_PAUSE
gcode:
{% set z = params.Z|default(35)|int %} ; z hop amount
{% if printer['pause_resume'].is_paused|int == 0 %}
SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=zhop VALUE={z} ; set z hop variable for reference in resume macro
SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=etemp VALUE={printer['extruder'].target} ; set hotend temp variable for reference in resume macro
DISABLE_FILAMENT_WIDTH_SENSOR
SET_FILAMENT_SENSOR SENSOR=fila ENABLE=0 ; disable filament sensor
SAVE_GCODE_STATE NAME=PAUSE ; save current print position for resume
BASE_PAUSE ; pause print
2024-05-03 09:56:18 +08:00
G92 E0
G1 E-5 F1800
2024-04-10 09:05:25 +08:00
{% if (printer.gcode_move.position.z ) < z %}
G91 ; relative positioning
G1 Z{z} F900 ; raise Z up by z hop amount
{% else %}
G91 ; relative positioning
G1 Z{5} F900
SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=zhop VALUE=0
{% endif %}
SAVE_GCODE_STATE NAME=PAUSEPARK2
G90 ; absolute positioning
G1 X97 F9000
G1 Y253 F9000 ; park toolhead at front center
SAVE_GCODE_STATE NAME=PAUSEPARK ; save parked position in case toolhead is moved during the pause (otherwise the return zhop can error)
M104 S0 ; turn off hotend
SET_IDLE_TIMEOUT TIMEOUT=86400 ; set timeout to 24 hours
SET_STEPPER_ENABLE STEPPER=extruder enable=0
{% endif %}
[gcode_macro RESUME]
rename_existing: BASE_RESUME
variable_zhop: 0
variable_etemp: 0
gcode:
{% set e = params.E|default(5)|int %} ; hotend prime amount (in mm)
{% if printer['pause_resume'].is_paused|int == 1 %}
SET_IDLE_TIMEOUT TIMEOUT={printer.configfile.settings.idle_timeout.timeout} ; set timeout back to configured value
{% if etemp > 0 %}
M109 S{etemp|int} ; wait for hotend to heat back up
{% endif %}
M83 ; relative extruder positioning
G1 X97 F9000
G1 Y253 F9000
G91
G1 E{e} F300 ; prime nozzle by E, lower Z back down
G90
G1 X85 F3000
G1 X98 F3000
G1 X85 F3000
G1 X98 F3000
G1 X85 F3000
G1 X98 F3000
G1 X85 F3000
G1 X98 F3000
G1 X85 F3000
G1 X98 F3000
G1 X85 F3000
G1 X98 F3000
G1 X65 F500
G1 Y200 F3000
RESTORE_GCODE_STATE NAME=PAUSEPARK2 MOVE=1 MOVE_SPEED=200
RESTORE_GCODE_STATE NAME=PAUSE MOVE=1 MOVE_SPEED=10 ; restore position
BASE_RESUME
ENABLE_FILAMENT_WIDTH_SENSOR
RESET_FILAMENT_WIDTH_SENSOR
query_filament_width ; resume print
SET_FILAMENT_SENSOR SENSOR=fila ENABLE=1 ; enable filament sensor
{% endif %}
[gcode_macro BEEP]
gcode:
{% set i = params.I|default(1)|int %} ; Iterations (number of times to beep).
{% set dur = params.DUR|default(100)|int %} ; Duration/wait of each beep in ms. Default 100ms.
{% if printer["output_pin sound"].value|int == 1 %}
{% for iteration in range(i|int) %}
SET_PIN PIN=beeper VALUE=1
G4 P{dur}
SET_PIN PIN=beeper VALUE=0
G4 P{dur}
{% endfor %}
{% endif %}
[gcode_macro M141]
gcode:
{% if printer["heater_generic chamber"] is defined %}
{% set s = params.S|float %}
SET_HEATER_TEMPERATURE HEATER=chamber TARGET={([s, 60]|min)}
{% endif %}
[gcode_macro M191]
gcode:
#Parameters
{% if printer["heater_generic chamber"] is defined %}
{% set s = params.S|float %}
M141 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}
{% if s != 0 %}
TEMPERATURE_WAIT SENSOR="heater_generic chamber" MINIMUM={([s, 60]|min)-2} #MAXIMUM={s+1}
{% endif %}
{% endif %}
[gcode_macro M106]
gcode:
{% set p = params.P|default(0)|int %}
{% if p == 2 %}
{% if params.S is defined %}
SET_FAN_SPEED FAN=auxiliary_cooling_fan SPEED={(params.S|float / 255.0)}
{% else %}
SET_FAN_SPEED FAN=auxiliary_cooling_fan SPEED=1
{% endif %}
{% endif %}
{% if p == 0 %}
{% if params.S is defined %}
SET_FAN_SPEED FAN=cooling_fan SPEED={(params.S|float / 255.0)}
{% else %}
SET_FAN_SPEED FAN=cooling_fan SPEED=1
{% endif %}
{% endif %}
{% if p == 3 %}
{% if params.S is defined %}
SET_FAN_SPEED FAN=chamber_circulation_fan SPEED={(params.S|float / 255.0)}
{% else %}
SET_FAN_SPEED FAN=chamber_circulation_fan SPEED=1
{% endif %}
{% endif %}
[gcode_macro M107]
gcode:
SET_FAN_SPEED FAN=cooling_fan SPEED=0
[gcode_macro M303]
gcode:
{% if params.E is defined %}
{% if params.S is defined %}
{% if (params.E|int)==-1 %}
PID_CALIBRATE HEATER=heater_bed TARGET={params.S|int}
{% endif %}
{% if (params.E|int)==0 %}
PID_CALIBRATE HEATER=extruder TARGET={params.S|int}
{% endif %}
{% endif %}
{% endif %}
[gcode_macro M8029]
gcode:
{% if params.D is defined %}
{% if (params.D|int)==1 %}
ENABLE_FILAMENT_WIDTH_SENSOR
{% endif %}
{% if (params.D|int)==0 %}
DISABLE_FILAMENT_WIDTH_SENSOR
{% endif %}
{% endif %}
[gcode_macro M900]
gcode:
{% if params.K is defined %}
SET_PRESSURE_ADVANCE ADVANCE={params.K}
{% endif %}
{% if params.T is defined %}
SET_PRESSURE_ADVANCE SMOOTH_TIME={params.T}
{% endif %}
[gcode_macro M290]
gcode:
SET_GCODE_OFFSET Z_ADJUST={params.Z}
[gcode_macro M901]
gcode:
G28
SHAPER_CALIBRATE
M400
M118 Input shaping complete
SAVE_CONFIG
[gcode_macro M0]
gcode:
PAUSE
[gcode_macro M25]
rename_existing: M9925
gcode:
PAUSE
[gcode_macro RESPOND_INFO]
variable_S:0
gcode:
{% if params.S is defined %}
{% set s = params.S|int %}
{% if s == 0 %}
{ action_respond_info("Nozzle cooled") }
{% endif %}
{% endif %}
[gcode_macro M4027]
gcode:
G1 X{120 - printer.probe["x_offset"]} Y{120 - printer.probe["y_offset"]} F9000
probe
save_meshoffset
G1 z10 F600
SET_GCODE_OFFSET Z=0 MOVE=1
BED_MESH_CALIBRATE
set_meshoffset
G0 Z50 F600
G0 X0 Y0 F9000
M400
M118 Bed mesh calibrate complete
SAVE_CONFIG
[gcode_macro M4028]
gcode:
G28
2024-05-03 09:56:18 +08:00
# Z_TILT_ADJUST
2024-04-10 09:05:25 +08:00
G28
get_zoffset
M400
M118 Position init complete
[gcode_macro M4029]
gcode:
M104 S140
SAVE_VARIABLE VARIABLE=z_offset VALUE=0
G28
M400
M118 Position init complete
CLEAR_NOZZLE HOTEND=240
2024-05-03 09:56:18 +08:00
# Z_TILT_ADJUST
2024-04-10 09:05:25 +08:00
G28
get_zoffset
[gcode_macro M4030]
gcode:
2024-05-03 09:56:18 +08:00
REVERSE_HOMING
G91
G1 Z-30
G90
2024-04-10 09:05:25 +08:00
BED_MESH_CLEAR
SET_GCODE_OFFSET Z=0 MOVE=0
G28
get_zoffset
G1 X120 Y120 F9000
G1 Z0 F600
[gcode_macro M603]
description: filament unlode
gcode:
M118 Heat up complete
G92 E0
G0 E15 F400
G4 P1000
G92 E0
2024-05-03 09:56:18 +08:00
G1 E-90 F800
2024-04-10 09:05:25 +08:00
M400
M118 Unload finish
[gcode_macro M604]
gcode:
M118 Heat up complete
M83
G1 E80 F400
M400
M118 Load finish
[output_pin sound]
2024-05-03 09:56:18 +08:00
pin: gpio8
2024-04-10 09:05:25 +08:00
value:0
[gcode_macro beep_on]
gcode:
SET_PIN PIN=sound VALUE=1
[gcode_macro beep_off]
gcode:
SET_PIN PIN=sound VALUE=0
[gcode_arcs]
resolution: 1.0
[gcode_macro M109]
rename_existing: M99109
gcode:
{% set s = params.S|float %}
M104 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %} ; Set hotend temp
{% if s != 0 %}
TEMPERATURE_WAIT SENSOR=extruder MINIMUM={s} MAXIMUM={s+1} ; Wait for hotend temp (within 1 degree)
{% endif %}
[exclude_object]
[gcode_macro G31]
gcode:
SET_GCODE_VARIABLE MACRO=G29 VARIABLE=k VALUE=1
[gcode_macro G32]
gcode:
SET_GCODE_VARIABLE MACRO=G29 VARIABLE=k VALUE=0
[gcode_macro set_meshoffset]
variable_zoffset:0
gcode:
ADD_Z_OFFSET_TO_BED_MESH ZOFFSET={0 - zoffset}
SET_GCODE_VARIABLE MACRO=set_meshoffset VARIABLE=zoffset VALUE=0
[gcode_macro save_meshoffset]
gcode:
SET_GCODE_VARIABLE MACRO=set_meshoffset VARIABLE=zoffset VALUE={printer.probe.last_z_result}
[gcode_macro G29]
variable_k:1
gcode:
BED_MESH_CLEAR
{% if k|int==1 %}
G28
get_zoffset
G1 X{120 - printer.probe["x_offset"]} Y{120 - printer.probe["y_offset"]} F9000
G1 Z10 F600
probe
save_meshoffset
G1 z10 F600
BED_MESH_CALIBRATE PROFILE=kamp
SAVE_VARIABLE VARIABLE=profile_name VALUE='"kamp"'
set_meshoffset
SAVE_CONFIG_QD
{% else %}
g28
get_zoffset
BED_MESH_PROFILE LOAD=default
SAVE_VARIABLE VARIABLE=profile_name VALUE='"default"'
{% endif %}
[gcode_macro M204]
rename_existing: M99204
gcode:
{% if params.S is defined %}
{% set s = params.S|float %}
{% endif %}
{% if params.P is defined %}
{% if params.T is defined %}
{% set s = [params.P|float ,params.T|float] | min %}
{% endif %}
{% endif %}
SET_VELOCITY_LIMIT ACCEL={s}
SET_VELOCITY_LIMIT ACCEL_TO_DECEL={s/2}
[gcode_macro Z_DOUDONG]
gcode:
m204 S5000
G91
G1 X2 F6000
G1 X-2 F6000
G1 X2 F6000
G1 X-2 F6000
G1 X2 F6000
G1 X-2 F6000
G1 X2 F6000
G1 X-2 F6000
G1 X2 F6000
G1 X-2 F6000
G1 X2 F6000
G1 X-2 F6000
G1 Y2 F6000
G1 Y-2 F6000
G1 Y2 F6000
G1 Y-2 F6000
G1 Y2 F6000
G1 Y-2 F6000
G1 Y2 F6000
G1 Y-2 F6000
G1 Y2 F6000
G1 Y-2 F6000
G1 Y2 F6000
G1 Y-2 F6000
G1 Y2 F6000
G1 Y-2 F6000
G90
m204 S5000
SET_Z_VELOCITY_LIMIT VALUE=15
SET_PIN PIN=ctlyd VALUE=1
G91
G1 Z1 F900
G1 Z-1
G1 Z1
G1 Z-1
G1 Z1
G1 Z-1
G1 Z1
G1 Z-1
G1 Z1
G1 Z-1
G1 Z1
G1 Z-1
G1 Z1
G1 Z-1
G1 Z1
G1 Z-1
G1 Z1
G1 Z-1
G1 Z1
G1 Z-1
G1 Z1
G1 Z-1
G1 Z1
G1 Z-1
G1 Z1
G1 Z-1
G1 Z1
G1 Z-1
G1 Z1
G1 Z-1
G1 Z1
G1 Z-1
G1 Z1
G1 Z-1
G1 Z1
G1 Z-1
G1 Z1
G1 Z-1
G1 Z1
G1 Z-1
G1 Z1
G1 Z-1
G1 Z1
G1 Z-1
G1 Z1
G1 Z-1
G1 Z1
G1 Z-1
G1 Z1
G1 Z-1
G1 Z1
G1 Z-1
G1 Z1
G1 Z-1
G1 Z1
G1 Z-1
G1 Z1
G1 Z-1
G1 Z1
G1 Z-1
G1 Z1
G1 Z-1
G1 Z1
G1 Z-1
G1 Z1
G1 Z-1
G1 Z1
G1 Z-1
G1 Z1
G1 Z-1
G1 Z1
G1 Z-1
G1 Z1
G1 Z-1
G1 Z1
G1 Z-1
G1 Z1
G1 Z-1
G1 Z1
G1 Z-1
G1 Z1
G1 Z-1
G1 Z1
G1 Z-1
G90
SET_PIN PIN=ctlyd VALUE=0
SET_Z_VELOCITY_LIMIT VALUE=10
G4 P500