Posted on

Wipe & Prime Towers for Slic3r


Printing with dual extruders can be somewhat of a tedious task. Fortunately or unfortunately, there are many different aproaches all aiming to easing up dual extrusion or multicolor or multimaterial printing. I tried almost all of the half assed solutions out there, but ended up writing my own gcode post processor, here it is.

The setup

For all tests, smartABS was printed at 255 °C with a bed temperature of 100 °C while the first layer temperatures are slightly higher at 275 °C for the hotends and 110 °C for the bed.

I am using two E3Dv6 on my SuperMount hotend holder, which sets the hotends quite far (68mm) from each other. I prefer this setup, because with 68mm between the nozzles, I can print at least 68×180 mm objects in two colors without the idle extruder travelling over the currently printed layer, which is something that you won’t get with i.e. an E3D Chimera hotend.

I like the idea of the color switching hotends like the E3D Cyclops or the Diamont Hotend, which I already ordered and will review as soon as it’s set up. For now, dual nozzle extrusion works great for me and there is no need to take compromises. After all, using two E3Dv6 Lite on a SuperMount would be darn cheap dual extrusion, wouldn’t it?

Slic3r #1

First off, I tried Slic3rs ooze prevention feature and I must say, the idea of letting one nozzle cool down is defenitely smart. Cold nozzles don’t ooze, and my E3Dv6 cools down quick enough to keep the initial ooze to a minimum. Unfortunately, it still takes quite some time to cool down, and since Slic3r will always print the ooze prevention wall with Extruder #0, I just had way too many tool changes to be happy with this solution. Also, the ooze prevention wall, which is basically a brim at full object height, pops off my PEI build platform just after a few laysers due to its own thermal bananaing. In addition to that, the ooze prevention wall keeps to much heat on the inside, causing deformation to the actually printed object.


After getting nowhere with Slic3rs dual extrusion features as described above, I went over to challenge Cura with that. Cura’s Wipe & Prime towers are simply amazing. Or better: Simple and amazing, and therefore follow the whole philosophy of Cura. Using Cura’s Wipe & Prime towers you get the usual Cura awesomeness, almost spotless dual color prints and a pretty ugly wipe tower. But, had I tried Slic3r before if I would not prefer Slic3r? Probably not, I still prefer Slic3r for it’s overall performance, and I already have finely dialed in settings for Slic3r that simply outperform Cura and it’s limited configurability.

Slic3r #2 custom G-code sections

Turn’s out Slic3r is still better then Cura (for me), just not for dual extrusion. So let’s fix that. My first thought was, adding Cura-style wipe towers to Slic3r is as easy as adding a bit of G-code to the layer change textbox in the Slic3r settings.

However, I quickly found out that each extruder has to drop some material onto the wipe tower at least every layer in order to avoid excessive oozing during longer idle phases, and even though cycling through all the extruders with Tn in the layer change gcode is possible, one would not be able to switch back to the acutally active extruder, since there is no such thing as an [active_extruder] [current_extruder] variable. So guess what Alessandro added in record-breaking 24h after my request. Thanks man, thats awsome! So now we can have wipe towers within the layer change G-code sections and wipes in the tool change G-code sections. Paradise. Yay!

Slic3r #3 Perl G-code postprocessor

Click here to get the current version of my wipe tower postprocessor for Slic3r on GitHub

What I found in the above adventures is, that Slic3r is awesome, Alessandro is also awesome, Cura is awesome in terms of wipe towers, and wipe towers are also awesome, and that wipe towers could be even more awesome if I implemented them a bit smarter than what’s possible with the static custom G-code sections. Like, the wipe tower layers should have varying starting points in every layer for avoiding the oozed material to accumulate in one corner.

Perl helps a lot getting nice wipe towers.

Also the wipes should happen from different angles at every wipe procedure, for avoiding the collection of the previously wiped off material. So I went translating my original Processing Java sketch that generated crude G-code lines into a nice little Perl script to post process Slic3r’s G-code as it comes during the export. And that I must say, really was it. From the first print on with those towers and wipings I see prints coming out perfectly spotless.

3 thoughts on “Wipe & Prime Towers for Slic3r

  1. Hi,

    I tried your scripts, but I can’t find any wipe towers on Repetier print preview. I used, copied it to a folder named test dual(D:\test dual) and followed everything as per instruction on GitHub
    1. in post processing scripts, given the directory name D:\test dual
    2. Edited start ,end gcodes, after layer change, and tool change gcode

    Can you tell me what’s wrong?
    Here’s the screen shots

    1. Hi Athul!

      To run a Perl postprocessing script on Windows, you need to install Perl (ideally Strawberry Perl) and set the $PATH variables correctly (Strawberry comes with a script for that). Then, you need to specify the full path to the script including the file name (in your case D:\test dual\ in Slic3r.

      If it still doesn’t work, especially on Windows 8+, there seems to be a bug in Slic3r that makes it hang when running the script (script runs forever). In that case, you can easily workaround the issue by calling the script manually from the command line à la “perl path/to/ path/to/printfile.gcode”. Hope that helps.

      All the best,

      1. H,
        Thnx for the reply. I don’t know how to do the following
        “set the $PATH variables correctly (Strawberry comes with a script for that)”
        ” In that case, you can easily workaround the issue by calling the script manually from the command line à la “perl path/to/ path/to/printfile.gcode””

Leave a Reply

Your email address will not be published. Required fields are marked *