Hello,
I have Snapmaker 2 A350 with dual nozzle, I’m trying to print:
https://makerworld.com/en/models/380201-keychain-spiderman?from=search#profileId-280371
But the problem i can’t find a way to print multi color same layer in my case first layer face down
So I want share my experience how .make it work with help of ChatGPT.
I’ve successfully configured OrcaSlicer to use my Snapmaker dual-extruder printer for manual multi-color prints using virtual extruders and the M600 command for filament changes.
What I Did
- Added Virtual Extruders in OrcaSlicer:
I set up 8 extruders in the printer profile.
T0 and T1 = Snapmaker’s physical extruders.
T2, T4, T6, … = Virtual tools that reuse T0 but prompt for filament change.
T3, T5, T7, … = Virtual tools that reuse T1 but prompt for filament change.
- Edited Tool Change G-code
I kept OrcaSlicer’s default tool-switch logic.
I inserted custom M600 commands based on the tool number:
Even virtual tools = change filament for T0.
Odd virtual tools = change filament for T1.
Tool Change G-code:
————————————
;***** Update: 20250505
{if current_extruder != next_extruder}
; Change T[current_extruder] → T[next_extruder] (layer [layer_num])
; layer
T{next_extruder}
; === Custom filament change for virtual extruders ===
{if next_extruder==2 or next_extruder==4 or next_extruder==6 or next_extruder==8 or next_extruder==10}
M600 ; Manual filament change for T0-based virtual tools
{endif}
{if next_extruder==3 or next_extruder==5 or next_extruder==7 or next_extruder==9 or next_extruder==11}
M600 ; Manual filament change for T1-based virtual tools
{endif}
; === End custom M600 section ===
{if layer_num == 1 &&
((filament_type[current_extruder] == “PLA” || filament_type[current_extruder] == “TPU”)
|| (filament_type[next_extruder] == “PLA” || filament_type[next_extruder] == “TPU”))
}
; set bed temp: {filament_type[current_extruder]}({bed_temperature[current_extruder]}) → {filament_type[next_extruder]}({bed_temperature[next_extruder]})
M140 S{min(bed_temperature[current_extruder], bed_temperature[next_extruder])}
{endif}
M109 T[next_extruder] S{if layer_num < 1}[nozzle_temperature_initial_layer]{else}[nozzle_temperature]{endif} C3 W1 ;wait T[next_extruder]
{if layer_num == 1}
G1 E{retraction_length[next_extruder]} F200;deretract
{endif}
{if layer_z > first_layer_height && layer_num >= close_fan_the_first_x_layers[next_extruder]}
; M106 P[next_extruder] S{fan_min_speed[next_extruder] * 255.0 / 100.0} ;restore fan speed for T[next_extruder]
{endif}
; End Toolchange
{endif}
————————————
I hope it helpful for you
Thank you