Update Snapmaker U1 printer profile and G-code sequences #837

Closed
opened 2026-04-05 16:32:28 +02:00 by MrUnknownDE · 0 comments
Owner

Originally created by @paxx12 on 2/9/2026

Summary

Please help testing this!

Sync Snapmaker U1 machine profiles with upstream https://github.com/Snapmaker/OrcaSlicer/releases/tag/v2.2.1.

  • Renames bed texture SVG from Snapmaker U1_texture.svg to Snapmaker U1_bed.svg
  • Rewrites machine_start_gcode with a new startup sequence (defect detection, auto-feed with preheat interleaving, revised homing/cleaning order, fixed-grid bed mesh, simple purge line)
  • Updates change_filament_gcode with faster Z-lift, M400 sync before tool pick, scripted PVA accel limit, and pre-extrude for non-initial extruders
  • Adds DEFECT_DETECTION_DETECT to before_layer_change_gcode
  • Adds SET_PRINT_STATS_INFO layer tracking to layer_change_gcode
  • Tunes retraction, deretraction, and print area parameters

Custom changes (on top of upstream)

  • Prepend SET_PRINT_AUTO_BED_LEVELING ENABLE=1 and SET_TIME_LAPSE_CAMERA ENABLE=1 to machine_start_gcode
  • Replace fixed BED_MESH_CALIBRATE PROBE_COUNT=11,11 with adaptive bed mesh using OrcaSlicer variables (adaptive_bed_mesh_min/max, bed_mesh_algo, bed_mesh_probe_count)

G-code diffs

machine_start_gcode

--- old/machine_start_gcode
+++ new/machine_start_gcode
@@ -1,117 +1,89 @@
+SET_PRINT_AUTO_BED_LEVELING ENABLE=1
+SET_TIME_LAPSE_CAMERA ENABLE=1
-;===== machine: PR2 ========================
-;===== date: 20250717 =====================
+;===== date: 20251222 =====================
+
 PRINT_START
-;===== 预热热床和第一个挤出头 =================
+DEFECT_DETECTION_START
+SET_PRINT_STATS_INFO TOTAL_LAYER={total_layer_count}
+SET_PRINT_STATS_INFO CURRENT_LAYER=0
+TIMELAPSE_START
 M140 S{bed_temperature_initial_layer_single}
 M104 T{initial_extruder} S140
+M204 S10000

-;===== 粗回零 =================
 G28 X Y
+;===== 床面异物检测 ========
 T{initial_extruder}
-M109 T{initial_extruder} S140
-G28 Z
 G90
-G0 Z10 F10000
-MOVE_TO_DISCARD_FILAMENT_POSITION
-M109 S{nozzle_temperature[initial_extruder] - 50}
-ROUGHLY_CLEAN_NOZZLE_WITH_DISCARD
-M104 S{nozzle_temperature[initial_extruder] - 90}
-G4 P2000
-ROUGHLY_CLEAN_NOZZLE
-MOVE_TO_XY_IDLE_POSITION_EXTRUDER
+DEFECT_DETECTION_DETECT_BED
+;===== 取放头检测 =================
+SM_PRINT_CHECK_SWITCH_EXTRUDER

-;===== 检测钢板 =================
-DETECT_BED_PLATE
-MOVE_TO_XY_IDLE_POSITION_EXTRUDER
-
-;===== 自动进料  ======================
+;===== 自动进料 & 挤出流量 & 预挤出 ======================
+SM_PRINT_EXTRUDER_PREHEAT EXTRUDER=1 TEMP=140
 SM_PRINT_AUTO_FEED EXTRUDER=0
+SM_PRINT_FLOW_CALIBRATE EXTRUDER=0
+SM_PRINT_EXTRUDER_PREHEAT EXTRUDER=2 TEMP=140
 SM_PRINT_AUTO_FEED EXTRUDER=1
+SM_PRINT_FLOW_CALIBRATE EXTRUDER=1
+SM_PRINT_EXTRUDER_PREHEAT EXTRUDER=3 TEMP=140
 SM_PRINT_AUTO_FEED EXTRUDER=2
+SM_PRINT_FLOW_CALIBRATE EXTRUDER=2
 SM_PRINT_AUTO_FEED EXTRUDER=3
+SM_PRINT_FLOW_CALIBRATE EXTRUDER=3
+M104 S0 T0 A0
+M104 S0 T1 A0
+M104 S0 T2 A0
+M104 S0 T3 A0
+M104 T{initial_extruder} S{nozzle_temperature[initial_extruder] - 90}

-;===== 挤出流量  ======================
-{if (is_extruder_used[0])}
-SM_PRINT_FLOW_CALIBRATE INDEX=0 TARGET_TEMP={nozzle_temperature[0]}
-{endif}
-{if (is_extruder_used[1])}
-SM_PRINT_FLOW_CALIBRATE INDEX=1 TARGET_TEMP={nozzle_temperature[1]}
-{endif}
-{if (is_extruder_used[2])}
-SM_PRINT_FLOW_CALIBRATE INDEX=2 TARGET_TEMP={nozzle_temperature[2]}
-{endif}
-{if (is_extruder_used[3])}
-SM_PRINT_FLOW_CALIBRATE INDEX=3 TARGET_TEMP={nozzle_temperature[3]}
-{endif}
-
-;===== 取出第一个挤出头 =================
+;===== 粗回零 =================
 T{initial_extruder}
-SET_VELOCITY_LIMIT ACCEL=10000
-M204 S10000
+M106 S255
+M106 P2 S0
+MOVE_TO_DISCARD_FILAMENT_POSITION
+M109 T{initial_extruder} S{nozzle_temperature[initial_extruder] - 90}
+ROUGHLY_CLEAN_NOZZLE_WITH_DISCARD
+MOVE_TO_XY_IDLE_POSITION_EXTRUDER
+G28 Z I140 J140
+
+;===== 检测钢板 =================
+DETECT_BED_PLATE

 ;===== 深度清洁喷嘴 =================
 G90
-G0 Z10 F10000
-ROUGHLY_CLEAN_NOZZLE_WITH_DISCARD
 G0 Z5 F10000
+MOVE_TO_DISCARD_FILAMENT_POSITION
+M109 S{nozzle_temperature[initial_extruder] - 50}
+ROUGHLY_CLEAN_NOZZLE
+MOVE_TO_XY_IDLE_POSITION_EXTRUDER
 FINELY_CLEAN_NOZZLE_STAGE_1
+M104 S{nozzle_temperature[initial_extruder] - 90}
 G0 Z5 F10000
+MOVE_TO_DISCARD_FILAMENT_POSITION
 ROUGHLY_CLEAN_NOZZLE
-G0 Z5 F10000
+MOVE_TO_XY_IDLE_POSITION_EXTRUDER
 FINELY_CLEAN_NOZZLE_STAGE_2
-M83

-;===== 第一个挤出头降温 =================
+;===== 精回零 =================
+M106 S255
 M109 S{nozzle_temperature[initial_extruder] - 90}
 M190 S{bed_temperature_initial_layer_single}
-M106 S0
+M107 P2
 G90
 G0 Z5 F10000
-MOVE_TO_DISCARD_FILAMENT_POSITION
-INNER_CUTOFF_BASE_DISCARD
-INNER_ROUGHLY_CLEAN_NOZZLE_BASE_DISCARD
-INNER_ROUGHLY_CLEAN_NOZZLE_BASE_DISCARD
-MOVE_TO_XY_IDLE_POSITION_EXTRUDER
-
-;===== 精回零 =================
 G28 Z
-;===== 热床调平 =================
-; Always pass `ADAPTIVE_MARGIN=0` because Orca has already handled `adaptive_bed_mesh_margin` internally
-; Make sure to set ADAPTIVE to 0 otherwise Klipper will use it's own adaptive bed mesh logic
-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=0 ADAPTIVE_MARGIN=0
-
-;BED_MESH_CALIBRATE PROBE_COUNT=7,7

+;===== 热床调平 =================
+; Always pass `ADAPTIVE_MARGIN=0` because Orca has already handled `adaptive_bed_mesh_margin` internally
+; Make sure to set ADAPTIVE to 0 otherwise Klipper will use it's own adaptive bed mesh logic
+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=0 ADAPTIVE_MARGIN=0
+; Original upstream: BED_MESH_CALIBRATE PROBE_COUNT=11,11

-;======== 预挤出/划线 ================
-{if (is_extruder_used[0]) and 0 != initial_extruder}
-SM_PRINT_START_LINE INDEX=0 TARGET_TEMP={nozzle_temperature_initial_layer[0]}
-M83
-M104 S{nozzle_temperature[0] - 90}
-{endif}
-
-{if (is_extruder_used[1]) and 1 != initial_extruder}
-SM_PRINT_START_LINE INDEX=1 TARGET_TEMP={nozzle_temperature_initial_layer[1]}
-M83
-M104 S{nozzle_temperature[1] - 90}
-{endif}
-
-{if (is_extruder_used[2]) and 2 != initial_extruder}
-SM_PRINT_START_LINE INDEX=2 TARGET_TEMP={nozzle_temperature_initial_layer[2]}
-M83
-M104 S{nozzle_temperature[2] - 90}
-{endif}
-
-{if (is_extruder_used[3]) and 3 != initial_extruder}
-SM_PRINT_START_LINE INDEX=3 TARGET_TEMP={nozzle_temperature_initial_layer[3]}
+;===== 画起始线 =================
+G90
+G1 Z1.5
+G0 X10 Y3 Z2 F18000
+M109 S{nozzle_temperature_initial_layer[initial_extruder]}
+G1 Z0.2
 M83
-M104 S{nozzle_temperature[3] - 90}
-{endif}
-
-{if (is_extruder_used[initial_extruder])}
-SM_PRINT_START_LINE INDEX={initial_extruder} TARGET_TEMP={nozzle_temperature_initial_layer[initial_extruder]}
-{endif}
-M109 S{nozzle_temperature_initial_layer[initial_extruder]} T{initial_extruder}
-M106 S0
+G1 X110 E15 F360
+G1 Z1.5

-TIMELAPSE_START
+G90
+M106 S0

change_filament_gcode

--- old/change_filament_gcode
+++ new/change_filament_gcode
@@ -1,15 +1,15 @@
+;===== date: 20251213=====================
 ; Change Tool[previous_extruder] -> Tool[next_extruder] (layer [layer_num])
 {
 local max_speed_toolchange = 350.0;
 local wait_for_extruder_temp = true;
 position[2] = position[2] + 2.0;
-
 local speed_toolchange = max_speed_toolchange;
 if travel_speed < max_speed_toolchange then
       speed_toolchange = travel_speed;
 endif
 "G91
-G0 Z1.5 F600
+G1 Z1.5 F1800
 G90
 ";
 "G1 F" + (speed_toolchange * 60) + "
@@ -27,11 +27,19 @@
 ";
       endif
 endif
+"M400" + "
+";
 "T" + next_extruder + "
 ";
+if filament_type[next_extruder] == "PVA" then
+"SET_VELOCITY_LIMIT ACCEL=3000
+";
+else
+endif
+if previous_extruder != next_extruder and initial_extruder != next_extruder then
+"SM_PRINT_PREEXTRUDE_FILAMENT INDEX=" + next_extruder + "
+";
+endif
+"G90
+";
 }
-M400
-{if filament_type[next_extruder] == "PVA"}
-SET_VELOCITY_LIMIT ACCEL=3000
-{else}
-{endif}

before_layer_change_gcode

--- old/before_layer_change_gcode
+++ new/before_layer_change_gcode
@@ -1,4 +1,5 @@
 ;BEFORE_LAYER_CHANGE
 ;[layer_z]
 G92 E0
-TIMELAPSE_TAKE_FRAME
+TIMELAPSE_TAKE_FRAME
+DEFECT_DETECTION_DETECT

layer_change_gcode

--- old/layer_change_gcode
+++ new/layer_change_gcode
@@ -1,2 +1,4 @@
 ;AFTER_LAYER_CHANGE
-;[layer_z]
+;[layer_z]
+SET_PRINT_STATS_INFO TOTAL_LAYER={total_layer_count}
+SET_PRINT_STATS_INFO CURRENT_LAYER={layer_num+1}
*Originally created by @paxx12 on 2/9/2026* ## Summary > Please help testing this! Sync Snapmaker U1 machine profiles with upstream https://github.com/Snapmaker/OrcaSlicer/releases/tag/v2.2.1. - Renames bed texture SVG from `Snapmaker U1_texture.svg` to `Snapmaker U1_bed.svg` - Rewrites `machine_start_gcode` with a new startup sequence (defect detection, auto-feed with preheat interleaving, revised homing/cleaning order, fixed-grid bed mesh, simple purge line) - Updates `change_filament_gcode` with faster Z-lift, M400 sync before tool pick, scripted PVA accel limit, and pre-extrude for non-initial extruders - Adds `DEFECT_DETECTION_DETECT` to `before_layer_change_gcode` - Adds `SET_PRINT_STATS_INFO` layer tracking to `layer_change_gcode` - Tunes retraction, deretraction, and print area parameters ## Custom changes (on top of upstream) - Prepend `SET_PRINT_AUTO_BED_LEVELING ENABLE=1` and `SET_TIME_LAPSE_CAMERA ENABLE=1` to `machine_start_gcode` - Replace fixed `BED_MESH_CALIBRATE PROBE_COUNT=11,11` with adaptive bed mesh using OrcaSlicer variables (`adaptive_bed_mesh_min/max`, `bed_mesh_algo`, `bed_mesh_probe_count`) ## G-code diffs ### `machine_start_gcode` ```diff --- old/machine_start_gcode +++ new/machine_start_gcode @@ -1,117 +1,89 @@ +SET_PRINT_AUTO_BED_LEVELING ENABLE=1 +SET_TIME_LAPSE_CAMERA ENABLE=1 -;===== machine: PR2 ======================== -;===== date: 20250717 ===================== +;===== date: 20251222 ===================== + PRINT_START -;===== 预热热床和第一个挤出头 ================= +DEFECT_DETECTION_START +SET_PRINT_STATS_INFO TOTAL_LAYER={total_layer_count} +SET_PRINT_STATS_INFO CURRENT_LAYER=0 +TIMELAPSE_START M140 S{bed_temperature_initial_layer_single} M104 T{initial_extruder} S140 +M204 S10000 -;===== 粗回零 ================= G28 X Y +;===== 床面异物检测 ======== T{initial_extruder} -M109 T{initial_extruder} S140 -G28 Z G90 -G0 Z10 F10000 -MOVE_TO_DISCARD_FILAMENT_POSITION -M109 S{nozzle_temperature[initial_extruder] - 50} -ROUGHLY_CLEAN_NOZZLE_WITH_DISCARD -M104 S{nozzle_temperature[initial_extruder] - 90} -G4 P2000 -ROUGHLY_CLEAN_NOZZLE -MOVE_TO_XY_IDLE_POSITION_EXTRUDER +DEFECT_DETECTION_DETECT_BED +;===== 取放头检测 ================= +SM_PRINT_CHECK_SWITCH_EXTRUDER -;===== 检测钢板 ================= -DETECT_BED_PLATE -MOVE_TO_XY_IDLE_POSITION_EXTRUDER - -;===== 自动进料 ====================== +;===== 自动进料 & 挤出流量 & 预挤出 ====================== +SM_PRINT_EXTRUDER_PREHEAT EXTRUDER=1 TEMP=140 SM_PRINT_AUTO_FEED EXTRUDER=0 +SM_PRINT_FLOW_CALIBRATE EXTRUDER=0 +SM_PRINT_EXTRUDER_PREHEAT EXTRUDER=2 TEMP=140 SM_PRINT_AUTO_FEED EXTRUDER=1 +SM_PRINT_FLOW_CALIBRATE EXTRUDER=1 +SM_PRINT_EXTRUDER_PREHEAT EXTRUDER=3 TEMP=140 SM_PRINT_AUTO_FEED EXTRUDER=2 +SM_PRINT_FLOW_CALIBRATE EXTRUDER=2 SM_PRINT_AUTO_FEED EXTRUDER=3 +SM_PRINT_FLOW_CALIBRATE EXTRUDER=3 +M104 S0 T0 A0 +M104 S0 T1 A0 +M104 S0 T2 A0 +M104 S0 T3 A0 +M104 T{initial_extruder} S{nozzle_temperature[initial_extruder] - 90} -;===== 挤出流量 ====================== -{if (is_extruder_used[0])} -SM_PRINT_FLOW_CALIBRATE INDEX=0 TARGET_TEMP={nozzle_temperature[0]} -{endif} -{if (is_extruder_used[1])} -SM_PRINT_FLOW_CALIBRATE INDEX=1 TARGET_TEMP={nozzle_temperature[1]} -{endif} -{if (is_extruder_used[2])} -SM_PRINT_FLOW_CALIBRATE INDEX=2 TARGET_TEMP={nozzle_temperature[2]} -{endif} -{if (is_extruder_used[3])} -SM_PRINT_FLOW_CALIBRATE INDEX=3 TARGET_TEMP={nozzle_temperature[3]} -{endif} - -;===== 取出第一个挤出头 ================= +;===== 粗回零 ================= T{initial_extruder} -SET_VELOCITY_LIMIT ACCEL=10000 -M204 S10000 +M106 S255 +M106 P2 S0 +MOVE_TO_DISCARD_FILAMENT_POSITION +M109 T{initial_extruder} S{nozzle_temperature[initial_extruder] - 90} +ROUGHLY_CLEAN_NOZZLE_WITH_DISCARD +MOVE_TO_XY_IDLE_POSITION_EXTRUDER +G28 Z I140 J140 + +;===== 检测钢板 ================= +DETECT_BED_PLATE ;===== 深度清洁喷嘴 ================= G90 -G0 Z10 F10000 -ROUGHLY_CLEAN_NOZZLE_WITH_DISCARD G0 Z5 F10000 +MOVE_TO_DISCARD_FILAMENT_POSITION +M109 S{nozzle_temperature[initial_extruder] - 50} +ROUGHLY_CLEAN_NOZZLE +MOVE_TO_XY_IDLE_POSITION_EXTRUDER FINELY_CLEAN_NOZZLE_STAGE_1 +M104 S{nozzle_temperature[initial_extruder] - 90} G0 Z5 F10000 +MOVE_TO_DISCARD_FILAMENT_POSITION ROUGHLY_CLEAN_NOZZLE -G0 Z5 F10000 +MOVE_TO_XY_IDLE_POSITION_EXTRUDER FINELY_CLEAN_NOZZLE_STAGE_2 -M83 -;===== 第一个挤出头降温 ================= +;===== 精回零 ================= +M106 S255 M109 S{nozzle_temperature[initial_extruder] - 90} M190 S{bed_temperature_initial_layer_single} -M106 S0 +M107 P2 G90 G0 Z5 F10000 -MOVE_TO_DISCARD_FILAMENT_POSITION -INNER_CUTOFF_BASE_DISCARD -INNER_ROUGHLY_CLEAN_NOZZLE_BASE_DISCARD -INNER_ROUGHLY_CLEAN_NOZZLE_BASE_DISCARD -MOVE_TO_XY_IDLE_POSITION_EXTRUDER - -;===== 精回零 ================= G28 Z -;===== 热床调平 ================= -; Always pass `ADAPTIVE_MARGIN=0` because Orca has already handled `adaptive_bed_mesh_margin` internally -; Make sure to set ADAPTIVE to 0 otherwise Klipper will use it's own adaptive bed mesh logic -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=0 ADAPTIVE_MARGIN=0 - -;BED_MESH_CALIBRATE PROBE_COUNT=7,7 +;===== 热床调平 ================= +; Always pass `ADAPTIVE_MARGIN=0` because Orca has already handled `adaptive_bed_mesh_margin` internally +; Make sure to set ADAPTIVE to 0 otherwise Klipper will use it's own adaptive bed mesh logic +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=0 ADAPTIVE_MARGIN=0 +; Original upstream: BED_MESH_CALIBRATE PROBE_COUNT=11,11 -;======== 预挤出/划线 ================ -{if (is_extruder_used[0]) and 0 != initial_extruder} -SM_PRINT_START_LINE INDEX=0 TARGET_TEMP={nozzle_temperature_initial_layer[0]} -M83 -M104 S{nozzle_temperature[0] - 90} -{endif} - -{if (is_extruder_used[1]) and 1 != initial_extruder} -SM_PRINT_START_LINE INDEX=1 TARGET_TEMP={nozzle_temperature_initial_layer[1]} -M83 -M104 S{nozzle_temperature[1] - 90} -{endif} - -{if (is_extruder_used[2]) and 2 != initial_extruder} -SM_PRINT_START_LINE INDEX=2 TARGET_TEMP={nozzle_temperature_initial_layer[2]} -M83 -M104 S{nozzle_temperature[2] - 90} -{endif} - -{if (is_extruder_used[3]) and 3 != initial_extruder} -SM_PRINT_START_LINE INDEX=3 TARGET_TEMP={nozzle_temperature_initial_layer[3]} +;===== 画起始线 ================= +G90 +G1 Z1.5 +G0 X10 Y3 Z2 F18000 +M109 S{nozzle_temperature_initial_layer[initial_extruder]} +G1 Z0.2 M83 -M104 S{nozzle_temperature[3] - 90} -{endif} - -{if (is_extruder_used[initial_extruder])} -SM_PRINT_START_LINE INDEX={initial_extruder} TARGET_TEMP={nozzle_temperature_initial_layer[initial_extruder]} -{endif} -M109 S{nozzle_temperature_initial_layer[initial_extruder]} T{initial_extruder} -M106 S0 +G1 X110 E15 F360 +G1 Z1.5 -TIMELAPSE_START +G90 +M106 S0 ``` ### `change_filament_gcode` ```diff --- old/change_filament_gcode +++ new/change_filament_gcode @@ -1,15 +1,15 @@ +;===== date: 20251213===================== ; Change Tool[previous_extruder] -> Tool[next_extruder] (layer [layer_num]) { local max_speed_toolchange = 350.0; local wait_for_extruder_temp = true; position[2] = position[2] + 2.0; - local speed_toolchange = max_speed_toolchange; if travel_speed < max_speed_toolchange then speed_toolchange = travel_speed; endif "G91 -G0 Z1.5 F600 +G1 Z1.5 F1800 G90 "; "G1 F" + (speed_toolchange * 60) + " @@ -27,11 +27,19 @@ "; endif endif +"M400" + " +"; "T" + next_extruder + " "; +if filament_type[next_extruder] == "PVA" then +"SET_VELOCITY_LIMIT ACCEL=3000 +"; +else +endif +if previous_extruder != next_extruder and initial_extruder != next_extruder then +"SM_PRINT_PREEXTRUDE_FILAMENT INDEX=" + next_extruder + " +"; +endif +"G90 +"; } -M400 -{if filament_type[next_extruder] == "PVA"} -SET_VELOCITY_LIMIT ACCEL=3000 -{else} -{endif} ``` ### `before_layer_change_gcode` ```diff --- old/before_layer_change_gcode +++ new/before_layer_change_gcode @@ -1,4 +1,5 @@ ;BEFORE_LAYER_CHANGE ;[layer_z] G92 E0 -TIMELAPSE_TAKE_FRAME +TIMELAPSE_TAKE_FRAME +DEFECT_DETECTION_DETECT ``` ### `layer_change_gcode` ```diff --- old/layer_change_gcode +++ new/layer_change_gcode @@ -1,2 +1,4 @@ ;AFTER_LAYER_CHANGE -;[layer_z] +;[layer_z] +SET_PRINT_STATS_INFO TOTAL_LAYER={total_layer_count} +SET_PRINT_STATS_INFO CURRENT_LAYER={layer_num+1} ```
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github/OrcaSlicer#837