Skip to content

Instantly share code, notes, and snippets.

@orther
Forked from rootiest/PREP_PRINT.cfg
Created March 3, 2023 18:34
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save orther/a1e45d9a4ceaab964cc55e786cd3c854 to your computer and use it in GitHub Desktop.
Save orther/a1e45d9a4ceaab964cc55e786cd3c854 to your computer and use it in GitHub Desktop.
SuperSlicer Super Start for Klipper
[gcode_macro PREP_PRINT]
description: Loads and starts the print
variable_x_max: 0
variable_y_max: 0
variable_z_max: 0
variable_nozzle: 0
variable_fila_dia: 0
variable_bed_temp: 0
variable_extruder_temp: 0
variable_chamber_temp: 0
variable_layer_count: 0
variable_tool_changes: 0
variable_cur_layer: 0
variable_num_layers: 0
variable_layer_z: 0
gcode:
M117 Print intializing...
#Get Printer built volume dimensions
{% set X_MAX = printer.toolhead.axis_maximum.x|default(100)|float %}
{% set Y_MAX = printer.toolhead.axis_maximum.y|default(100)|float %}
{% set Z_MAX = printer.toolhead.axis_maximum.z|default(100)|float %}
#Get Nozzle diameter and filament width for conditioning
{% set NOZZLE = printer.extruder.nozzle_diameter|default(0.4)|float %}
{% set FILADIA = printer.extruder.filament_diameter|default(1.75)|float %}
#Set Start coordinates of priming lines
{% set X_START = 10.0|default(10.0)|float %}
{% set Y_START = 20.0|default(20.0)|float %}
#Calculate Primer line extrusion volume and filament length
{% set PRIMER_WIDTH = 0.75 * NOZZLE %}
{% set PRIMER_HEIGHT = 0.70 * NOZZLE %}
{% set PRIMER_SECT = PRIMER_WIDTH * PRIMER_HEIGHT %}
{% set PRIMER_VOL = PRIMER_SECT * (X_MAX - 3 * X_START) %}
{% set FILA_SECT = 3.1415 * ( FILADIA / 2.0)**2 %}
{% set FILA_LENGTH = 1.55 * PRIMER_VOL / FILA_SECT %}
{% set FILAMENT_TYPE = params.FILAMENT|default(PLA)|string %}
#Get Bed, Extruder, and Chamber temperatures from Slicer GCode
{% set BED_TEMP = params.BED|default(60)|float %}
{% set EXTRUDER_TEMP = params.EXTRUDER|default(210)|float %}
{% set CHAMBER_TEMP = params.CHAMBER|default(50)|float %}
# Get Number of Layers
{% set NUM_LAYERS = params.COUNT|default(0)|float %}
{% set CUR_LAYER = params.NUM|default(0)|float + 1 %}
# Get Number of Tool Changes Required
{% set TOOL_CHANGES = params.TOOLS|default(0)|float %}
# Save print configuration specs for later use
SET_GCODE_VARIABLE MACRO=PREP_PRINT VARIABLE=x_max VALUE={X_MAX}
SET_GCODE_VARIABLE MACRO=PREP_PRINT VARIABLE=y_max VALUE={Y_MAX}
SET_GCODE_VARIABLE MACRO=PREP_PRINT VARIABLE=z_max VALUE={Z_MAX}
SET_GCODE_VARIABLE MACRO=PREP_PRINT VARIABLE=nozzle VALUE={NOZZLE}
SET_GCODE_VARIABLE MACRO=PREP_PRINT VARIABLE=fila_dia VALUE={FILADIA}
SET_GCODE_VARIABLE MACRO=PREP_PRINT VARIABLE=bed_temp VALUE={BED_TEMP}
SET_GCODE_VARIABLE MACRO=PREP_PRINT VARIABLE=extruder_temp VALUE={EXTRUDER_TEMP}
SET_GCODE_VARIABLE MACRO=PREP_PRINT VARIABLE=chamber_temp VALUE={CHAMBER_TEMP}
SET_GCODE_VARIABLE MACRO=PREP_PRINT VARIABLE=cur_layer VALUE={CUR_LAYER}
SET_GCODE_VARIABLE MACRO=PREP_PRINT VARIABLE=num_layers VALUE={NUM_LAYERS}
SET_GCODE_VARIABLE MACRO=PREP_PRINT VARIABLE=tool_changes VALUE={TOOL_CHANGES}
# Turn on the lights!
WLED_ON PRESET=1
# Begin preheating and prepping for print
G90 ; use absolute coordinates
M83 ; extruder relative mode
M117 Preheating bed for homing...
M104 S150 ; set temporary nozzle temp to prevent oozing during homing and auto bed leveling
G4 S10 ; allow partial nozzle warmup
M190 S{BED_TEMP} ; set final bed temp
M117 Homing all axis...
G28 ; home all axis
BED_MESH_PROFILE LOAD="default"
G1 Z50 F240
G1 X2 Y10 F3000
M117 Waiting for temperatures to stabilize...
M104 S{EXTRUDER_TEMP} ; set final nozzle temp
M190 S{BED_TEMP} ; wait for bed temp to stabilize
M109 S{EXTRUDER_TEMP} ; wait for nozzle temp to stabilize
WIPE_LINE
M117 Print Started
[include variables.cfg]
[include WIPE_LINE.cfg]
[include PREP_PRINT.cfg]
prep_print EXTRUDER={first_layer_temperature[initial_extruder] + extruder_temperature_offset[initial_extruder]} BED={first_layer_bed_temperature} CHAMBER={chamber_temperature} FILAMENT={filament_type} COUNT={total_layer_count} TOOLS={total_toolchanges} NUM=1;Load print settings
[save_variables]
filename: ~/klipper_config/variables.cfg
[gcode_macro SAVE_AT_END]
variable_save: 0
gcode:
SET_GCODE_VARIABLE MACRO=SAVE_AT_END VARIABLE=save VALUE=1
[gcode_macro SAVE_IF_SET]
gcode:
{% if printer["gcode_macro SAVE_AT_END"].save == 1 %}
SAVE_CONFIG
{% endif %}
[gcode_macro INITIALIZE_VARIABLE]
gcode:
{% if 'VARIABLE' not in params %}
{action_respond_info("Missing VARIABLE parameter")}
{% elif 'VALUE' not in params %}
{action_respond_info("Missing VALUE parameter")}
{% else %}
{% set svv = printer.save_variables.variables %}
{% if params.VARIABLE not in svv %}
{% set escaped = params.VALUE|replace("\"", "\\\"") %}
SAVE_VARIABLE VARIABLE={params.VARIABLE} VALUE="{escaped}"
{% endif %}
{% endif %}
[gcode_macro WIPE_LINE]
gcode:
{% set z = params.Z|default(0.25)|float %}
{% set n = params.N|default(0.4)|float %}
{% if printer.toolhead.homed_axes != "xyz" %}
{action_respond_info("Please home XYZ first")}
{% elif printer.extruder.temperature < 170 %}
{action_respond_info("Extruder temperature too low")}
{% else %}
SAVE_GCODE_STATE NAME=WIPE_LINE_state
M82
G90
G92 E0
G1 X10 Y20 Z5 F3000
G1 Z{z} F3000
G1 X10 Y150 F1500 E10.83
G1 X{ n + 10.0 } F5000
G1 Y22 F1500 E21.5
G1 Y20 F5000
RESTORE_GCODE_STATE NAME=WIPE_LINE_state MOVE=0
{% endif %}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment