Printing Multi-material parts with a single extruder

Was told that we can tweak the setting in the software to make the printer stop at specific layer for the filament to be manually changed. Not sure how though. :question: :question: :question: :question:

I am using Pronterface and Slic3r 1.2.9.

It is possible. You basically can insert a pauce command manually at a specific point in the gcode with a text editor. you can also use the prointerface pause button. The tricky part is you want to insert gcode to either pause the part on a second sacrificial part so the heat from the nozzle doesn’t destroy what you are printing while you swap, or time the pause to be located in an internal space that will get covered anyways.

You can use a similar technique to embed magnets and nuts and things into a 3d print mid print.

This person looks to have done it with manual insertion of code as suggested by peircet.

That’s interesting. What if each material has different printing parameters from one another, for example printing temperature? I’m assuming that it has something to do with the gcodes as well.

different material property stuff gets complicated quickly. If you are dealing with dissimilar temperatures you may have to purge all the remaining material and heat or cool to temperature before printing. In that case you would need to move off of the print, purge to a waste location, then move back and resume. Can again be done with gcode and pause commands but it gets tricky.

Have been trying for a week now, but couldn’t get it done. The gcodes were too long to begin with, and inserting the pause and parameter-changing gcodes just messed things up.

Do I have to manually determine the layer at which I want the nozzle to pause? It’s a frustrating work to do.

Also, I would very much appreciate if someone could suggest the right order of gcodes for the following list of commands:

  1. Pause the machine at certain layer
  2. Home the nozzle along the X and Y axes.
  3. Change the extrusion temperature to account for the second material.
  4. Resume print

Here is how I do it

Filament Change GCode

Filament change with XY home
Description of Gcode: Inserted manually into gcode to trigger a pause and filament change. This should be inserted after the last line / prior to first line of the new color you want to use. I use octoprint and to resume the print I click resume on the GUI. The Extruder will lift, move to front left of bed, beep to indicate it’s ready for intervention. At this point the motors are still locked so do not manually move the extruder carriage. Swap filament, purge old color, click resume. The XY axis will home, and printing will resume with new color.
Printer: TAZ 5
Modifications: Inductive leveling sensor installed
Firmware:Sebastians 1.1 Marlin
Will this work on a Stock Machine?: Yes

;Pause Code
G91   ;Set Relative Mode
G1 E-5.000000 F500   ;Retract 5mm
G1 Z15 F300   ;move Z up 15mm
G90   ;Set Absolute Mode
G1 X20 Y20 F9000   ;Move to hold position
G91   ;Set Relative Mode
G1 E-40 F500   ;Retract 40mm
M300 ;Beep
M0   ;Idle Hold
G90   ;Set Absolute Mode
G1 F5000   ;Set speed limits
G28 X0 Y0   ;Home X Y
M82   ;Set extruder to Absolute Mode
G92 E0   ;Set Extruder to 0

Use Slic3r’s g-code editor. Its been a while, but I believe you can move through the layers of the printed object to get / find the corresponding section in the actual code.

With S3D, you can look for the commented layer number.

Then insert discojohn’s code above. BTW, I’ve always wondered what happened in Octoprint when a Pause is inserted… Thanks for the confirmation that it does prompt to resume after a pause.

Thanks for the gcodes. Will try that out when I have the time.

However, if I want to change the extrusion temperature, all I have to do is inserting these gcodes “M104 Sxxx” and “M109 Sxxx” right after the last line “G92 E0”, right?

M104 or M109, not both. M104 is set temperature and continue, M109 is set continue and wait until temp. is reached.

I removed M300 cuz I don’t think it works on the machine and inserted a temperature-change gcode before the M0. Here is how it looks like:

G1 E-5.000000 F500
G1 Z15 F300
G1 X20 Y20 F9000
G1 E-40 F500
M109 S225 <---- I removed the M300, and inserted a temperature-change gcode here.
G1 F5000
G28 X0 Y0
G92 E0

Everything worked beautifully, but only up until M0. The machine did stop as commanded, but the “Resume” button did not show at all on the GUI screen. I am using Pronterface which has g-code flavor of Reprap (Marlin/Sprinter) so M0 would definitely work. My Lulzbot TAZ is Marlin as well so I don’t think compatibility is an issue here. I wonder what goes wrong. :confused: :confused: :confused:

Just press the LCD knob…

I know this is an old post but I’m trying to figure out an easier way to do this in S3D when only making one color change… would this code you posted work with the Mini or would I need to alter some of the settings so it doesnt move further than it’s capable?

I’m not sure about the mini. The code posted will “fit” the minis build volume just fine but be aware AFAIK it is untested on the Mini