Single Extruder Multi-Material (not just color!)
 
Notifications
Clear all

Single Extruder Multi-Material (not just color!)  

  RSS
ScottW
(@scottw)
Reputable Member
Single Extruder Multi-Material (not just color!)

I found and studied a few threads on this subject but am still confused.

  1. I have a MK4S without MMU (i.e., single extruder).
  2. I want to print a model where the first X layers are PETG, and the remaining layers are Ninjaflex. Based on what I have read, adhesion of the Ninjaflex to the PETG is not a problem.
  3. I have done color changes before with just an M600, but this is a "filament type" change that needs a different nozzle temperature, different speeds, different retractions, and so forth (i.e., a different filament profile).
  4. I created a new Printer profile, adding "MM" to the name, setting "number of extruders" to (2) and "Single Extruder Multi-Material" = True.
  5. In the slicer, I selected "PETG" for Extruder-1 and "Ninjaflex" for Extruder-2. (Note: The profile PETG has nozzle temp 250C, while profile for Ninjaflex is 243C).
  6. I loaded the model and "painted" it for extruders using "height range". The object looks correct in the extruder, with "extruder 1" color shown up to layer 99, and then "extruder 2" shown for layers 100 and above.
  7. Not important here, but I also set the "Bed Temperature by Extruder" to 0, so that the bed would stay at the temperature for the first filament (PETG).

I sliced the model and inspected the GCode.

  • I expected the nozzle temp to change from 250C (PETG) to 243C (Ninjaflex) at the extruder change. It does not. The only M104's in the code are the initial "M104 S175" prior to bed probing, the "M104 S250" before the purge and first layer, and the final "M104 S0" to turn off the heater at end of print.
  • There is no occurrence of "M104 S243" to set the Ninjaflex temp. The M600 is there to trigger manual filament at the correct layer, but the nozzle is never commanded to 243C and remains at the 250C PETG temperature.
  • Given the lack of temperature change, I am concerned (but unable to verify) that things like speed and retraction may also be incorrect for the second filament.

Why isn't the nozzle temperature being changed (in Gcode) to match the filament in the "second extruder" after the M600?  Do I need to add a "custom filament" to the MK4s itself with 243C as the temp, so that temperature gets set during the manual filament change -- rather than expecting the slicer to add the correct temperature?

 

Posted : 12/12/2025 3:44 am
Sembazuru
(@sembazuru)
Noble Member
RE: Single Extruder Multi-Material (not just color!)

It didn't change the temperature because you didn't tell it to change temperature in the tool-change gcode. I haven't tested yet, but I suspect adding a temperature change to the tool-change gcode, something like "M104 S{temperature[next_extruder]}" before the M600 to start changing the temperature, and then "M109 S{temperature[next_extruder]}" after the M600 to make sure the temperature change is complete. You may also want to add the N argument to your M600 (i.e. "M600 N" to avoid a dot of NinjaFlex where it finished printing the PETG. Examine your resulting gcode to make sure it looks good before sending to your printer.

That said, I've printed PETG on NinjaFlex before without issue and didn't bother to change the temperature since the printing temperatures are so similar.

See my (limited) designs on:
Printables - https://www.printables.com/@Sembazuru
Thingiverse - https://www.thingiverse.com/Sembazuru/designs

Posted : 12/12/2025 8:31 pm
1 people liked
ScottW
(@scottw)
Reputable Member
Topic starter answered:
RE: Single Extruder Multi-Material (not just color!)

Thanks for the response. 

I agree there are multiple ways to set the temperature when changing filaments.  What you state (add M104/M109 to tool change), what I had thought of (create filament profile on MK4S and choose that when loading filament).  I imagine embedding M104/M109 in the Filament Start Gcode would also work.

But isn't the entire point of defining another extruder, and assigning a filament profile to it, so that the slicer can properly use all the different filament properties (nozzle temperature, cooling, volumetric speed, retraction overrides, etc.) for the portions of the model assigned to each extruder?

In any case, it is working that way now!  I think my problem was that I was looking at an older Gcode file, rather than the one I had just sliced!  I really need to do some folder cleanup, lol.  The slicer is, indeed, emitting a M104 for the second filament temperature before it starts the layer assigned to "extruder 2".  

So, it's all good -- The M104 is there as expected (as is the filament start Gcode), so I am now confident the slicer is using the correct filament profile for the "2nd extruder."  I just wasn't seeing it yesterday because I was not looking at the correct Gcode file!

Posted : 12/12/2025 9:44 pm
1 people liked
Share: