-
Notifications
You must be signed in to change notification settings - Fork 0
/
START_PRINT.cfg
52 lines (52 loc) · 2.79 KB
/
START_PRINT.cfg
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
[gcode_macro START_PRINT]
description: Run at the start of a print (inserted by slicer)
gcode:
{% set config = {'heater_fan_threshold': 50} %}
{% set name = "START_PRINT" %}
{% macro log(message, level='info') %}
RESPOND PREFIX="{ "[%s%s%s]" % (name,":" if level else "", level) }" MSG="{message}"
{% endmacro %}
{% macro broadcast(message, level='info') %}
{ log(message, level) }
M117 {message}
{% endmacro %}
{% macro activate_extruder(extruder) %}
{% if printer.toolhead.extruder != extruder %}
ACTIVATE_EXTRUDER EXTRUDER={extruder}
{% endif %}
{% endmacro %}
{% set extruder_data = dict() %}
{% for e in printer.slic3r_vars.tool_name.split(";") %}
{% set _ = extruder_data.update({loop.index-1: {"name": e}}) %}
{% set _ = extruder_data[loop.index-1].update({"offsets": {}}) %}
{% set _ = extruder_data[loop.index-1]["offsets"].update({"x": 0-(printer.slic3r_vars.extruder_offset.split(",")[loop.index-1].split("x")[0] | float)}) %}
{% set _ = extruder_data[loop.index-1]["offsets"].update({"y": 0-(printer.slic3r_vars.extruder_offset.split(",")[loop.index-1].split("x")[1] | float)}) %}
{% set _ = extruder_data[loop.index-1].update({"start_temp": printer.slic3r_vars.first_layer_temperature.split(",")[loop.index-1] | float}) %}
{% set _ = extruder_data[loop.index-1].update({"retract_length": printer.slic3r_vars.retract_length.split(",")[loop.index-1] | float}) %}
{% set _ = extruder_data[loop.index-1].update({"retract_speed": printer.slic3r_vars.retract_speed.split(",")[loop.index-1] | float}) %}
{% set _ = extruder_data[loop.index-1].update({"nozzle_diameter": printer.slic3r_vars.nozzle_diameter.split(",")[loop.index-1] | float}) %}
{% endfor %}
INITIALIZE_PRINT_STATE
{ broadcast("Homing")}
SET_HEATER_TEMPERATURE HEATER=heater_bed TARGET={printer.slic3r_vars.first_layer_bed_temperature.split(",")[0]} ; Start heating bed and continue
{% for i, e in extruder_data.items() if not e.start_temp == 0 %}
SET_HEATER_TEMPERATURE HEATER={e.name} TARGET={e.start_temp} ; Start heating hotend(s) and continue
{% endfor %}
{% if not printer.toolhead.homed_axes == "xyz" %}G28{% endif %} ; home if needed
G90 ; Use absolute coordinates
G1 X{printer.configfile.settings.stepper_x.position_min+2}
{ broadcast("Waiting for temperature")}
TEMPERATURE_WAIT SENSOR=heater_bed MINIMUM={(printer.slic3r_vars.first_layer_bed_temperature.split(",")[0] | float)-2}
{% if not printer.bed_mesh.profile_name == "default" %}
# Probe the bed
{ broadcast("Probing") }
BED_MESH_CALIBRATE
{% endif %}
{% for i, e in extruder_data.items() if not e.start_temp == 0 %}
G1 X0 Y0
TEMPERATURE_WAIT SENSOR={e.name} MINIMUM={e.start_temp}
{% endfor %}
# Prime line
PRIME_LINE
G92 E0.0 ; reset extruder
{ broadcast("Printing") }