Skip to content

Instantly share code, notes, and snippets.

@mplinuxgeek
Created February 9, 2025 22:56
Show Gist options
  • Save mplinuxgeek/62c3ec0a9b2e79cd0452557c6c9b2b79 to your computer and use it in GitHub Desktop.
Save mplinuxgeek/62c3ec0a9b2e79cd0452557c6c9b2b79 to your computer and use it in GitHub Desktop.
SV08 macro.cfg, replace slicers Machien start G-Code with "start_print BED_TEMP=[bed_temperature_initial_layer_single] EXTRUDER_TEMP=[nozzle_temperature_initial_layer] HEATSOAK=true HEATSOAK_TIME=10"
[gcode_macro mainled_on]
gcode:
SET_PIN PIN=main_led VALUE=1
[gcode_macro mainled_off]
gcode:
SET_PIN PIN=main_led VALUE=0
#--------------------------------------------------------------------#
#--------------------------------------------------------------------#
[force_move]
enable_force_move: True
[gcode_macro _global_var]
variable_pause_park:{'x': 0, 'y': 0, 'z': 10, 'e': 1}
variable_cancel_park:{'x': 0, 'y': 350, 'z': 10, 'e': 1}
variable_z_maximum_lifting_distance: 345
variable_pause_resume_travel_speed: 150
variable_load_filament_extruder_temp: 230
variable_default_low_temp: 125
gcode:
[gcode_macro START_PRINT]
description:
variable_state: 'Prepare'
variable_record_extruder_temp:0
variable_max_record_extruder_temp:0
gcode:
_global_var
{% set BED_TEMP = params.BED_TEMP|default(60)|int %}
{% set EXTRUDER_TEMP = params.EXTRUDER_TEMP|default(230)|int %}
{% set HEATSOAK = (params.HEATSOAK|default("false")).lower() in ["true", "1", "yes"] %}
{% set HEATSOAK_TIME = (params.HEATSOAK_TIME|default(5))|int %}
{% set mesh_name = "default" %}
{% set extruder_target_temp = 125 %}
{% set bed_target_temp = BED_TEMP|int %}
{action_respond_info("Slicer Bed Temp: " + '%s' % BED_TEMP)}
{action_respond_info("Slicer Extruder Temp: " + '%s' % EXTRUDER_TEMP)}
{action_respond_info("Heat Soak: " + '%s' % HEATSOAK)}
{action_respond_info("Heatsoak Time: " + '%s' % HEATSOAK_TIME)}
M400
CLEAR_PAUSE
G90
{% if state == 'Prepare' %}
{action_respond_info("Prepare!")}
{% if printer['filament_switch_sensor filament_sensor'].enable == True and
printer['filament_switch_sensor filament_sensor'].filament_detected != True
%}
M117 No filament!
{action_respond_info("Please Insert filament in Sensor!")}
CANCEL_PRINT
{% endif %}
{% if printer.heater_bed.temperature < bed_target_temp %}
M117 Bed heating...
{action_respond_info("Bed heating...")}
M190 S{bed_target_temp}
{% endif %}
{% if HEATSOAK and HEATSOAK_TIME > 0 %}
M117 Short Heat Soak
{action_respond_info("Heat Soaking for %d minute(s)" % HEATSOAK_TIME)}
G4 P{HEATSOAK_TIME * 60000}
{% endif %}
{% if printer.toolhead.homed_axes|lower != "xyz" %}
M117 Homing...
{action_respond_info("Homing...")}
G28
{% endif %}
{% if printer.extruder.temperature < extruder_target_temp %}
M117 Nozzle pre-heating...
{action_respond_info("Nozzle pre-heating...")}
M104 S{extruder_target_temp}
{% endif %}
#Start exhaust fan
#SET_FAN_SPEED FAN=exhaust_fan SPEED=1
{% if printer.quad_gantry_level.applied|lower != 'true' %}
M117 QGL
QUAD_GANTRY_LEVEL
M117 Home Z after QGL
G28 Z # And once again after QGL, important..
# M117 Auto Z Offset
# Z_OFFSET_CALIBRATION
{% endif %}
M117 Adaptive Bed Mesh...
{action_respond_info("Adaptive Bed Mesh...")}
BED_MESH_CALIBRATE ADAPTIVE=1
CLEAN_NOZZLE
# Set final temperatures before printing instead of relying on the OrcaSlicer start gcode..
M117 Final Heating...
{action_respond_info("Final heating...")}
M140 S{BED_TEMP} ;set bed temp
M104 S{EXTRUDER_TEMP} ;set extruder temp
M190 S{BED_TEMP} ;wait for bed temp
M109 S{EXTRUDER_TEMP} ;wait for extruder temp
PURGE_LINE
SET_GCODE_VARIABLE MACRO=START_PRINT VARIABLE=state VALUE='"Start"'
UPDATE_DELAYED_GCODE ID=_print_start_wait DURATION=0.5
{% elif state == 'Start' %}
M117 Printing
{action_respond_info("Start!")}
{% endif %}
[gcode_macro END_PRINT]
description:
variable_state: 'normal'
gcode:
{% set z_max = printer['gcode_macro _global_var'].z_maximum_lifting_distance|int %}
{% set e_mintemp = printer.configfile.settings['extruder'].min_extrude_temp %}
M400
SET_GCODE_VARIABLE MACRO=START_PRINT VARIABLE=state VALUE='"Prepare"'
SET_GCODE_VARIABLE MACRO=START_PRINT VARIABLE=record_extruder_temp VALUE=0
SET_GCODE_VARIABLE MACRO=START_PRINT VARIABLE=max_record_extruder_temp VALUE=0
M117 Done
G91
{% if printer['filament_switch_sensor filament_sensor'].enable == True and
printer['filament_switch_sensor filament_sensor'].filament_detected == True
%}
{% if (printer.extruder.target != 0 and printer.extruder.temperature >= printer.extruder.target) or
printer.extruder.temperature >= e_mintemp
%}
G1 E-25 F2700
G1 E-2 Z0.2 F2400
{% endif %}
{% endif %}
{% if (printer.gcode_move.position.z + 25) < z_max %}
G1 Z+25 F3000
{% else %}
G1 Z+{(z_max - printer.gcode_move.position.z)} F3000
{% endif %}
G90
G1 X0 Y360 F9000
# _ALL_FAN_OFF
TURN_OFF_HEATERS
M84 X Y Z E
M220 S100
M221 S100
CLEAR_PAUSE
{action_respond_info("Finish Print!")}
[gcode_macro QUAD_GANTRY_LEVEL]
rename_existing:QUAD_GANTRY_LEVEL_BASE
gcode:
{% set mesh_name = "default" %}
{% set current_target_temp = printer.heater_bed.target|int %}
{action_respond_info("Check Heating!")}
{% if printer.heater_bed.temperature != printer.heater_bed.target %}
{action_respond_info("The bed target temperature was not reached!")}
{action_respond_info("Bed heating...")}
M190 S{printer.heater_bed.target}
{% endif %}
{% if printer.toolhead.homed_axes|lower != "xyz" %}
G28
{% endif %}
QUAD_GANTRY_LEVEL_BASE
{% if current_target_temp == 0 %}
M140 S0
{% endif %}
[gcode_macro PROBE_CALIBRATE]
rename_existing:PROBE_CALIBRATE_BASE
gcode:
{action_respond_info("z_offset_calibrate")}
{% if printer.heater_bed.temperature != printer.heater_bed.target %}
M140 S{printer.heater_bed.target}
{action_respond_info("The bed target temperature was not reached!")}
{action_respond_info("Bed heating...")}
M190 S{printer.heater_bed.target}
{% endif %}
G28
PROBE_CALIBRATE_BASE
TESTZ z=-4
[gcode_macro BED_MESH_CALIBRATE]
rename_existing: BED_MESH_CALIBRATE_BASE
gcode:
{% set mesh_name = "default" %}
{% set current_target_temp = printer.heater_bed.target|int %}
{action_respond_info("Check Heating!")}
{% if printer.heater_bed.temperature != printer.heater_bed.target %}
{action_respond_info("The bed target temperature was not reached!")}
{action_respond_info("Bed heating...")}
M190 S{printer.heater_bed.target}
{% endif %}
{% if printer.toolhead.homed_axes|lower != "xyz" %}
G28
{% endif %}
BED_MESH_CLEAR
BED_MESH_CALIBRATE_BASE ADAPTIVE=1
{% if current_target_temp == 0 %}
M140 S0
{% endif %}
[gcode_macro CLEAN_NOZZLE]
gcode:
M117 Nozzle Cleaning...
{action_respond_info("Nozzle Cleaning...")}
{% if printer.toolhead.homed_axes != "xyz" %}
G28
{% endif %}
G90
G1 X348 Y0 Z0.3 F9000
M117 Nozzle heating...
M109 S200
G91
G1 Z10 F300
G90
M106 S255
M104 S130
M117 Clean nozzle
G1 X315 Y360 F13500 ; Increased initial move speed by 50%
G1 Z0.2 F450 ; Increased Z speed
{% for _ in range(2) %} ; Repeat entire cycle twice
G1 X352 F13500 ; Left to right
G1 X324 F13500 ; Right to left
G1 X352 F13500 ; Left to right
G1 X324 F13500 ; Right to left
G4 P500 ; 0.5-second delay between cycles
{% endfor %}
G1 Y356 X324 Z5 F450
G1 Z0.2
{% for _ in range(2) %} ; Repeat the secondary finer cycle twice
G1 Y360 X324 F6750
G1 Y357 X326 F6750
G1 Y360 X326 F6750
G1 Y357 X328 F6750
G1 Y360 X330 F6750
G1 Y357 X332 F6750
G1 Y360 X334 F6750
G1 Y357 X336 F6750
G1 Y360 X338 F6750
G1 Y357 X340 F6750
G4 P500 ; 0.5-second delay between cycles
{% endfor %}
M400
M117 Finished cleaning
M109 S130
M107
G91
G1 Z10 F300
G90
G28 Z0
[gcode_macro CENTER]
gcode:
G0 X175 Y175 F5000
[gcode_macro CALIBRATION_ZOFFSET]
gcode:
_CALIBRATION_ZOFFSET
[gcode_macro _CALIBRATION_ZOFFSET]
gcode:
M117 Calibrate Offset
QUAD_GANTRY_LEVEL
M140 S{printer.heater_bed.target}
G4 P500
CLEAN_NOZZLE
G4 P500
M117 Z-offset calibration
Z_OFFSET_CALIBRATION
Z_OFFSET_APPLY_PROBE
SAVE_CONFIG
[delayed_gcode _auto_zoffset]
gcode:
SAVE_VARIABLE VARIABLE=offsetadjust VALUE={'%05.2f' % (0)}
_CALIBRATION_ZOFFSET
[gcode_macro _Delay_Calibrate]
gcode:
UPDATE_DELAYED_GCODE ID=_auto_zoffset DURATION=1.0
[delayed_gcode TEST_BELT]
initial_duration: 0.3
gcode:
{% set x_freq = printer.save_variables.variables.x_freq|float %}
{% set y_freq = printer.save_variables.variables.y_freq|float %}
{% set show_freq = printer.save_variables.variables.show_freq %}
{% if show_freq == 1 %}
M117 x {x_freq}, y {y_freq}
SAVE_VARIABLE VARIABLE=show_freq VALUE=0
{% endif %}
[gcode_macro G34]
gcode:
BED_MESH_CLEAR
{% if printer.toolhead.homed_axes|lower != "xyz" %}
G28
{% else %}
G28 Z
{% endif %}
QUAD_GANTRY_LEVEL
G28 Z
G0 X175 Y175 Z30 F3600
[delayed_gcode bed_mesh_init]
initial_duration: .01
gcode:
BED_MESH_PROFILE LOAD=default
[delayed_gcode _print_start_wait]
gcode:
{% if printer['gcode_macro START_PRINT'].state == 'Heating'%}
{action_respond_info("Prepare->Heating!")}
{% elif printer['gcode_macro START_PRINT'].state == 'Start' %}
{action_respond_info("Heating->Start!")}
{% endif %}
{% if printer['gcode_macro START_PRINT'].execute|lower != 'false' %}
START_PRINT
{% endif %}
[gcode_macro CANCEL_PRINT]
description:
rename_existing: CANCEL_PRINT_BASE
gcode:
{% set x_park = printer['gcode_macro _global_var'].cancel_park.x|float %}
{% set y_park = printer['gcode_macro _global_var'].cancel_park.y|float %}
{% set z_park = printer['gcode_macro _global_var'].cancel_park.z|float %}
{% set z_lift_max = printer['gcode_macro _global_var'].z_maximum_lifting_distance %}
{% set e_restract = printer['gcode_macro _global_var'].cancel_park.e|float %}
{% set e_mintemp = printer.configfile.settings['extruder'].min_extrude_temp %}
CANCEL_PRINT_BASE
M117 Print canceled!
G91
{% if printer['filament_switch_sensor filament_sensor'].enabled == True and
printer['filament_switch_sensor filament_sensor'].filament_detected == True
%}
{% if (printer.extruder.target != 0 and printer.extruder.temperature >= printer.extruder.target) or
printer.extruder.temperature >= e_mintemp
%}
G1 E-{e_restract} F500
{% else %}
{action_respond_info("Nozzle not hot enough")}
{% endif %}
{% endif %}
{%if (printer.gcode_move.position.z + 10) < z_lift_max %}
G1 Z+10 F3000
{% else %}
G1 Z+{(z_lift_max - printer.gcode_move.position.z)} F3000
{% endif %}
G90
G1 X{x_park} Y{y_park} F9000
TURN_OFF_HEATERS
#_ALL_FAN_OFF
CLEAR_PAUSE
M84 X Y Z E
M117 Ready
{action_respond_info("Cancel Print Success!")}
SET_GCODE_VARIABLE MACRO=START_PRINT VARIABLE=state VALUE='"Prepare"'
SET_GCODE_VARIABLE MACRO=START_PRINT VARIABLE=record_extruder_temp VALUE=0
SET_GCODE_VARIABLE MACRO=START_PRINT VARIABLE=max_record_extruder_temp VALUE=0
[gcode_macro PAUSE]
rename_existing: PAUSE_BASE
variable_state: 'normal'
gcode:
{% if printer.pause_resume.is_paused == False %}
{% set x_park = printer['gcode_macro _global_var'].pause_park.x|float %}
{% set y_park = printer['gcode_macro _global_var'].pause_park.y|float %}
{% set e_restract = printer['gcode_macro _global_var'].pause_park.e|float %}
{% set z_lift_max = printer['gcode_macro _global_var'].z_maximum_lifting_distance %}
{% set state = params.STATE if 'filament_change' in params.STATE else 'normal' %}
{action_respond_info("Pause Print!")}
PAUSE_BASE
M117 Pause Print!!!
G91
{% if (printer.gcode_move.position.z + 5) < z_lift_max %}
G1 Z+5 F3000
{% else %}
G1 Z+{(z_lift_max - printer.gcode_move.position.z)} F3000
{% endif %}
G90
{% if printer.gcode_move.position.x != x_park and
printer.gcode_move.position.y != y_park
%}
G1 X{x_park} Y{y_park} F{printer["gcode_macro _global_var"].pause_resume_travel_speed * 60}
{% endif %}
M104 S{printer.extruder.target}
{% if state == 'normal' %}
{% if (printer.extruder.temperature + 5 >= printer.extruder.target) and (printer.extruder.temperature >= printer.configfile.settings['extruder'].min_extrude_temp) %}
{% if printer['filament_switch_sensor filament_sensor'].enabled == True and
printer['filament_switch_sensor filament_sensor'].filament_detected == True
%}
G91
G1 E-{e_restract} F300
G90
{% elif printer['filament_switch_sensor filament_sensor'].enabled == True and
printer['filament_switch_sensor filament_sensor'].filament_detected != True %}
G91
G1 E+95 F300
G1 E-10 F1500
G1 E-20 F600
M400
G4 P3000
G1 E-50 F300
G90
{% endif %}
{% endif %}
{% elif state == 'filament_change' %}
{% if (printer.extruder.temperature + 5 >= printer.extruder.target) and (printer.extruder.temperature >= printer.configfile.settings['extruder'].min_extrude_temp) %}
G91
G1 E+25 F300
G1 E-10 F1500
G1 E-20 F600
M400
G4 P3000
G1 E-50 F300
G90
{% endif %}
{% endif %}
{% endif %}
[delayed_gcode _resume_wait]
gcode:
{% if printer['gcode_macro RESUME'].execute|lower != 'false' %}
RESUME
{% endif %}
[gcode_macro RESUME]
description: Pause the actual running print
rename_existing: RESUME_BASE
variable_state: 'normal'
gcode:
{% set e_restract = printer['gcode_macro _global_var'].pause_park.e|float %}
{% set extruder_target_temp = printer.extruder.target|int %}
{% set state = params.STATE if 'filament_change' in params.STATE else 'normal' %}
{% if state == 'filament_change' %}
{% if printer["filament_switch_sensor filament_sensor"].enable == True and
printer["filament_switch_sensor filament_sensor"].filament_detected != True
%}
{action_respond_info("Please Insert filament in Sensor!")}
{% else %}
{% if printer.extruder.temperature + 5 >= printer.extruder.target %}
G91
G1 E30 F300
G1 E10 F150
G90
{% else %}
M104 S{extruder_target_temp}
{action_respond_info("Nozzle not hot enough!")}
{action_respond_info("Nozzle heating...")}
M109 S{extruder_target_temp}
G91
G1 E30 F300
G1 E10 F150
G90
{% endif %}
{action_respond_info("Print resuming!")}
RESUME_BASE
{% endif %}
{% elif state == 'normal' %}
{% if printer['filament_switch_sensor filament_sensor'].enable != True and
printer['filament_switch_sensor filament_sensor'].filament_detected != True
%}
{action_respond_info("Please Insert filament in Sensor!")}
{% else %}
{action_respond_info("Print resuming!")}
G91
G1 E{e_restract} F300
G90
M117 Printing now!!!
RESUME_BASE
{% endif %}
{% endif %}
[gcode_macro LOAD_FILAMENT]
gcode:
{% set extruder_temp = printer['gcode_macro _global_var'].load_filament_extruder_temp|int %}
{% set current_target_temp = printer.extruder.target|int %}
{% if printer.print_stats.state != "printing" %}
{% if printer.print_stats.state != "paused" %}
M104 S{extruder_temp}
M117 Nozzle heating...
{action_respond_info("Nozzle not hot enough!")}
{action_respond_info("Nozzle heating...")}
M109 S{extruder_temp}
{% else %}
{% if printer.extruder.target == 0 %}
M104 S{extruder_temp}
M117 Nozzle heating...
{action_respond_info("Nozzle not hot enough!")}
{action_respond_info("Nozzle heating...")}
M109 S{extruder_temp}
{% else %}
M104 S{printer.extruder.target}
M117 Nozzle heating...
{action_respond_info("Nozzle not hot enough!")}
{action_respond_info("Nozzle heating...")}
M109 S{printer.extruder.target}
{% endif %}
{% endif %}
M117 Extruding...
G91
G1 E75 F300
G1 E30 F150
G1 E-2 F300
G90
M400
M117 Filament loaded.
M400
{% if current_target_temp == 0 or printer.print_stats.state != "paused" %}
M104 S0
{% endif %}
{% else %}
{action_respond_info("Don't load filament during printing!!!")}
{% endif %}
[gcode_macro UNLOAD_FILAMENT]
gcode:
{% set extruder_temp = printer['gcode_macro _global_var'].load_filament_extruder_temp|int %}
{% set current_target_temp = printer.extruder.target|int %}
{% if printer.print_stats.state != "printing" %}
{% if printer.print_stats.state != "paused" %}
M104 S{extruder_temp}
M117 Nozzle heating...
{action_respond_info("Nozzle not hot enough!")}
{action_respond_info("Nozzle heating...")}
M109 S{extruder_temp}
{% else %}
{% if printer.extruder.target == 0 %}
M104 S{extruder_temp}
M117 Nozzle heating...
{action_respond_info("Nozzle not hot enough!")}
{action_respond_info("Nozzle heating...")}
M109 S{extruder_temp}
{% else %}
M104 S{printer.extruder.target}
M117 Nozzle heating...
{action_respond_info("Nozzle not hot enough!")}
{action_respond_info("Nozzle heating...")}
M109 S{printer.extruder.target}
{% endif %}
{% endif %}
M117 Retracting...
G91
G1 E+25 F300
G1 E-10 F1500
G1 E-20 F600
M400
G4 P3000
G1 E-50 F300
G90
M400
M117 Filament ejected.
M400
{% if current_target_temp == 0 or printer.print_stats.state != "paused" %}
M104 S0
{% endif %}
{% else %}
{action_respond_info("Don't unload filament during printing!!!")}
{% endif %}
[gcode_macro M109]
rename_existing: M99109
gcode:
{% set s = params.S|float %}
M104 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}
{% if s != 0 %}
TEMPERATURE_WAIT SENSOR=extruder MINIMUM={s-1} MAXIMUM={s+1}
{% endif %}
[gcode_macro M190]
rename_existing: M99190
gcode:
{% set s = params.S|float %}
M140 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}
{% if s != 0 %}
TEMPERATURE_WAIT SENSOR=heater_bed MINIMUM={s-1} MAXIMUM={s+1}
{% endif %}
[gcode_macro M600]
gcode:
PAUSE STATE=filament_change
[gcode_macro INPUT_SHAPER_AUTO_CALIBRATE]
gcode:
G28
SHAPER_CALIBRATE
[gcode_macro _IDLE_TIMEOUT]
gcode:
{% if printer.pause_resume.is_paused %}
{action_respond_info("Idle timeout.")}
SET_GCODE_VARIABLE MACRO=resume VARIABLE=saved_extruder_temp VALUE="{
printer[printer.toolhead.extruder].target}"
M104; Turn off extruder but leave the bed on.
{% else %}
TURN_OFF_HEATERS
M107; turn off fan
M84
{% endif %}
[gcode_macro SPEED_75]
gcode:
M220 S75
[gcode_macro SPEED_100]
gcode:
M220 S100
[gcode_macro SPEED_125]
gcode:
M220 S125
[gcode_macro SPEED_150]
gcode:
M220 S150
[gcode_macro SPEED_200]
gcode:
M220 S200
[gcode_macro PURGE_LINE]
gcode:
M117 Printing Purge Line...
{action_respond_info("Printing Purge Line...")}
G90
G1 X0 F9000
G1 Y20
G1 Z0.600 F600
G1 Y0 F9000
G90
G1 X0 F9000
G1 Y20
G1 Z0.600 F600
G1 Y0 F9000
M400
G91
M83
G1 E25 F300
G4 P1000
G1 E-0.200 Z5 F600
G1 X88.000 F9000
G1 Z-5.000 F600
G1 X87.000 E20.88 F1800
G1 X87.000 E13.92 F1800
G1 Y1 E0.16 F1800
G1 X-87.000 E13.92 F1800
G1 X-87.000 E20.88 F1800
G1 Y1 E0.24 F1800
G1 X87.000 E20.88 F1800
G1 X87.000 E13.92 F1800
G1 E-0.200 Z1 F600
M400
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment