# Multi-Color Printing for first layer on Snapmaker Using OrcaSlicer + Virtual Extruders (with M600)

**URL:** <https://forum.snapmaker.com/t/multi-color-printing-for-first-layer-on-snapmaker-using-orcaslicer-virtual-extruders-with-m600/39374>\
**Category:** Snapmaker 2.0 (3-in-1)\
**Created:** [May 6, 2025, 7:02pm UTC](https://forum.snapmaker.com/t/multi-color-printing-for-first-layer-on-snapmaker-using-orcaslicer-virtual-extruders-with-m600/39374 "2025-05-06T19:02:05Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![MohammadAlH](https://avatars.discourse-cdn.com/v4/letter/m/a3d4f5/32.png) [@MohammadAlH](https://forum.snapmaker.com/u/MohammadAlH)\
**Post date:** [May 6, 2025, 7:02pm UTC](https://forum.snapmaker.com/t/multi-color-printing-for-first-layer-on-snapmaker-using-orcaslicer-virtual-extruders-with-m600/39374/1 "2025-05-06T19:02:05Z")

</div>

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](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

1. 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.

1. 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
