Friday 6 January 2012

Slic3r is Nicer - Part 1 - Settings and Extruder Calibration

I have been using Slic3r for a few months now, it's coming along well and deserves lots more coverage, so here are a few notes and a very short guide to using it and what the settings mean -  nothing difficult as it's already very easy to use and understand.

In this Part 1 we will look at getting Slic3r running, calibrate the extruder and take a look at the Print settings.
Part 2 will setup the printer, filament and print speeds along with doing some printing.
Part 3 will experiment with low layer heights, hollow printing and any other features or limitations discovered.

As of typing (6th Jan 2012) - Slic3r is at Version 0.5.7

Please try it out, it's coming along very nicely and join in with the Slic3r RepRap Forum

Slic3r Website
Slic3r on Github

Download the package extract the zipped files and just run slic3r.exe directly from the directory, you don't need to setup anything unless you want to re-build it then you need the source from Github and citrus perl or Strawberry Perl.

Alessandro is developing Slic3r very quickly so this guild may be a little out of date, but hopefully may still help you get started if you are new to 3D printing, it's certainly the easiest route for an easy tool-chain to great looking prints.

Step 1 - (do not ignore this bit) Extruder Calibration - 
And as with every other 3D tool-path generator you need to have a calibrated extruder first before you can get awesome looking prints. it's really easy to do and will save you so much messing about when you attempt to compensate for poor calibration.

So as a refresher you need to set the correct steps per mm of used filament in the firmware, you can work this out by just extruding some plastic, I recommend using Printrun (Pronterface) Get it here

To do this you will need to edit, re-compile and upload firmware to your electronics, I'm going to assume you already know how to do that using the Arduino software. - (If not let me know).

So in most firmwares like Sprinter or Marlin you will find lines in the Configuration.h file that look like this -
//// Calibration variables

// X, Y, Z, E steps per unit - Metric Prusa Mendel with Wade extruder:
float axis_steps_per_unit[] = {80, 80, 3200/1.25,700};

The number at the end (700) is the number of motor steps needed to extrude 1mm of the input feedstock plastic.
Your number could already be different and may be half of this if you are using 8x microstepping (GEN6) instead of x16 (RAMPS usually uses x16).

Every hobbed bolt and filament drive / extruder gear setup is slightly different, so it's a very good idea to calibrate.

Now we need to check if this number is correct for your filament drive and the plastic you are using, you can use Pronterface  to extrude an exact amount of filament and we are going to measure the distance to check if it's correct or not -
First check that your filament drive (Hobbed bolt) is clean and free from any plastic or debris.
Feed the filament in and make sure your hot-end is at temperature.

Make sure your Extruder gears are really meshing well and there is no wobble, move your motor so you have no extra play.

Set your spring compression, this does make a difference as the hobbed bolt teeth dig into the filament - 
For 3mm PLA I have the springs quite tight with only a small amount of compression remaining. 
For 3mm ABS I slacken them off just a little more.
For 1.75mm filament, I find you need less compression.

Then stick some tape or make a mark on your plastic filament about 50mm up from the extruder, somewhere you can measure as accurately as possible (try to use a digital gauge if possible)
Either measure this or set your digital gauge to zero measured out to this point.
Tape makes it easy to align the edge to the digital gauge.

Now you can extrude 30mm of plastic. You need to make sure you don't do this too fast as you do not want your motor to skip steps or the filament drive getting jammed.
So either slow down the speed to about 50mm/min and enter 30mm and hit Extrude or I tend to extrude 5mm at a time with a little pause in-between until 30mm has been extruded.

Now check how far the filament marker has moved with your digital gauge - 
it should have moved around 30mm if your firmware is close to the correct number.
If it's exactly 30mm, then you already have a perfectly calibrated extruder :)
If  not then this is how to set the new number in firmware-
Our firmware in this test was set to 700 steps per mm and we extruded 30mm of plastic.

700 x 30 = 21000 (E motor steps for 30mm)

 For example if you actually measured 32.6mm then  21000/32.6 = 644 (so you need to put 644 into your firmware replacing the 700 we had before, re-compile and download and you can re-check again and your filament should now move exactly 30mm as you have just calibrated it.

If you measured 27.2mm then 21000/27.2 = 772 (put 772 into your firmware)

I recommend that you do this calibration for both PLA and ABS (the hobbed bolt teeth can sink deeper into ABS filament, so you will usually have a different Estep value for ABS) and if you have 3mm and 1.75mm extruders then check them also.
You can always add all your calibration readings into the firmware and comment them out so it's easy to change if you change plastic type or extruder.

Now you have a perfectly calibrated extruder, you are well on the way to perfect printing -

Understanding Slic3r Print Settings- 

The first screen you see is the Print settings, for completeness I'll comment on each section, but it's mostly self explanatory.

Transform -  You don't need to change anything here, unless you want to scale the part of make multiple copies of the same object at a time. - this does the same as the Skieinforge Multiply command.

Accuracy - Layer height is very important and needs to be compatible with the Nozzle hole size. For a standard 0.5mm nozzle I always use 0.3mm layer height, you should avoid going any bigger than 0.4mm and as low as you dare, but much below 0.1mm you will struggle to see the benefit.
Leave first layer height and fill N layers set to 1.
It's a very good idea to select layer heights that divide into even numbers of steps of your Z height, having a miss-match of steps as the object builds is going to cause problems - Just to explain this - a 200 step motor using 16x micro-stepping gives you 3200 steps, an M8 threaded rod is 1.25mm per complete revolution so 3200/1.25 = 2560
So 1mm of height (Z) movement takes 2560 motor steps, a layer height of 0.3mm takes 768 motor steps.
If you set a layer height of 0.32, that needs 819.2 steps - not an even number of motor steps, so not ideal.

Skirt - This allows you to draw an outline around the perimeter of your printed object, this is a good idea as it  starts the flow of plastic in the nozzle and helps prime before the print, it will always do this first, so you can also check if your bed height is set correctly and stop the print if it looks like it's not sticking well.
6mm is fine and if you like you can build the skirt outline up more than 1 layer, this is the first thing it will do before the next layer of the object, people normally just do one skirt layer.
Note the skirt and first layer are squashed down onto the bed (Glass in this picture)

Print Settings - Perimeter of 3 means it will draw 3 solid outlines around the edge of the object if it can, for thin elements it may only be able to draw 1 or 2. Sometimes you are better off having less outlines (Shells) and having more directional infill. But 3 Shells is a good starting point for general purpose building of parts.
Solid layers, is the number of fully filled layers built on top of each other on a flat surface, the base, tops of objects. 3 is a good number, you should never need to go much higher than 6.
Fill density, is the amount of infill to be used when filling the internal space in your object. the 0.4 shown means 40% infill. 25% is a normal and good figure to use when printing things like parts for a Prusa Printer, when printing art or organic objects you can use lower infill, hollow being 0% and you can get away with just 5% - to 10% for many objects . For some things like the Extruder or motor mounts you may want to use a higher fill (35% - 50%). it's very rare to need to go much higher and often slightly reducing layer height can make parts much stronger than just increasing fill levels.

Fill level examples - 

Fill angle - 45 Degrees will start to draw the infill at a 45 degree angle between Y and X axis.

Fill pattern and Solid fill pattern - This is the style of infill used, normally Rectilinear is used, but here are some examples of what the others look like - they are all 37mm high and 25% infill, 3 outlines.

Gary has a good thread going on here discussing alternative fill ideas, and check his Blog post about fill ideas

Retraction -  This section relates to your Extruder - Length is the amount of feedstock that is reversed by the extruder after completing a set of moves, just before it needs to re-position to another place for a subsequent set of moves. (extruder toggle) You will need to experiment with this number depending on what extruder hot-end and gearing setup you have. - Normally you need some level of reversal so a minimum would be around 0.5mm and a maximum needed for 3mm filament is usually 1.8mm. 1mm is a very good starting point.
For example a Mendel-Parts 3mm V5 hot-end oozes a lot and so needs 1.8mm of retraction, where as a 3mm J-Head nozzle only needs 0.9mm retraction.

If you have a Bowden extruder or are using 1.7mm filament you may need more reversal, but don't go too high - I needed 3mm reversal for a Bowden using a mendel-parts 1.75mm V5 hot-end, but with an Adrian style mini-extruder hot-end on a 1.75mm Bowden setup I only needed 1.5mm

Lift will give you the option to raise the extruder before it moves to a new point of extrusion,  EDIT - don't use this on machines with a slow Z axis (like Mendel, Prusa, Huxley) As Nophead mentions in the comments you can use lift on Machines with slow Z axis as you only need to lift a fraction (1 layer height).
Some machines like the TOM and the BFB 3000 have fast lead-screw drive Z axis and can lift nozzle away from the print before doing a fast move to new extrusion point. - EDIT So if you are building fragile tall parts that may be detached from the bed, then maybe try out the Lift setting - Otherwise usually leave this at 0.

Speed is how fast your extruder pulls back (toggles) the filament, you want this as fast as possible, but there is a limit of how fast most firmwares can do this and also how quickly the stepper can drive the filament back.
In Skeinforge and using Sprinter firmware I always used 16mm/s but after switching over to Marlin Firmware and using Slic3r then 30mm/s is possible and makes a very positive impact on quality and print speed and also (usually) allows a smaller reversal length.

Extra length on restart allows you to specify the feeding of more plastic before a new set of extrusion moves, I can't understand why you would ever need to do this as this effectively adds more plastic that's not needed and has no where to go apart from blobbing all over your nice print. If you ever feel the need to use this setting, something else is wrong with your printer set-up and/or calibration - Always leave at 0
Minimum travel after retraction Simply tells the extruder not to reverse (toggle) if the start of the next set of extruder moves are closer than this distance, otherwise you may end up with constant tiny extruder toggles if you were doing a highly complicated small print. 2mm is a good figure.

That's enough for now, In Part 2 we will look at the other sections of Slic3r - Printer and Filament setup, check the Start/End Gcode and then do some printing!

Thanks for reading, please leave comments and any feedback or any opinions about using Slic3r?



  1. Great article. I like the way you measure the extruder feed.

    The only thing I disagree on is "lift". I use the equivalent in my software when moving between islands if I am making tall objects with small base areas, to prevent them being knocked over. It isn't a problem on a slow Z-axis machine like Mendel because you only need to lift about 1 layer height, which takes only a fraction of a second.

  2. "I can't understand why you would ever need to do this as this effectively adds more plastic that's not needed and has no where to go apart from blobbing all over your nice print."

    I *think* that maybe this is if your extruder is already blobbing/stringing, if this is the case then you may need 'extra' plastic to be pushed out to compensate for the plastic lost to strings etc.

    To be clear, what I theorise may happen with some forms of stringing is that the plastic which has been extruded adheres to the object being printed and then the extruder moves to another location. Because the plastic is adhered in that first position it sticks and pulls some molten plastic with it out from the nozzle as the extruder moves.

    Just a thought....

  3. @nophead - Thanks. I must admit I have never actually tried to use lift as I thought Z would be too slow, but I'm going to try it next time I'm doing the objects that may get knocked.

    I saw a BFB machine do it at a trade show and really helped them - especially as they don't have heated beds and they force cool the plastic with 6 fans while it's printing!

    I'll update the blog to reflect this.



  4. @Sanjay Mortimer - I get how you are thinking, but after you have calibrated the volume of plastic 'correctly' then all this value does if lower or raise the volume to fudge the output code, your real volume of plastic is the same as you have calibrated so it's can't really do any good to your prints. Maybe I should have said changing this number from 1 just alters the calculated volume of plastic so it's just a fudge factor.

  5. Wow, amazing fact I have seen here. Its also helpful to increase knowledge about technology.
    cakephp development

  6. great work RichRap! Nice to see this sort of documentation - where were you 2 years ago when I was really struggling? :-)

    Now, can you do one for Skeinforge too?

  7. Excellent article, thanks. I have become a Slic3r fan and use it all the time.

  8. Thanks for the article. I'm almost done with my build and your article answered a lot of questions I had. Appreciate you taking the time to write this up.

  9. Instead of changing firmware for each material I recommend just putting M92 E??? in the start code. Much easier to change...

    Thanks for the article!

  10. @unknown I was thinking the same thing! Burning new firmware just because you have changed filiment doesn't make sense, given the number of burns that a uC has. (Sorry Rich!)

    I have started to get into Slic3r and I love RichRap's blog, this has been really useful in helping improve my Slic3r. Hopefully Slic3r will be able to take over fully from skienforge soon :)

  11. @tbone_atl - I'll take a look at doing a Skeinforge post again (V46 is very good and does give you ultimate control, but it's all too easy to mess things up) - I expect any comments on how 'best' to use Skeinforge will result in many different opinions, so it could very quite interesting!

  12. @ Geoff Drake & brianblanton - Thank you, I hope you get on well with Slic3r, Part 2 should be tomorrow.

  13. @Unknown and smartroad - I agree, and I do use that for my eMaker Huxley :), but for the Prusa's they are so much more experimental I like to have the firmware setup correctly. I must have updated firmware at least 7 times in the last month just for bugs and acceleration testing, I'm sure the Arduino's can handle many thousands of re-flashes so don't worry about that. I also only tend to use ABS once every few months. I guess it's just down to personal choice.
    I'm really glad you like the blog.



  14. Great program. I just started using it. My first part was a hexagon and it came out nearly perfect with the stock settings.

    When will Part 2 be available?

    Dan mauch

    1. Hi Dan,

      Part 2 is here -

      Part 3 is here -



  15. Thanks for this great tutorial! I wrote about it on our blog .

  16. It looks really great! I am just starting with my prusa and I am wondering how to update the firmware and how to put the configuration.h in my sanguinololu. I have downloaded arduino1.0 and I have added the sanguinololu board.
    Is it possible to use the bootloader to upload new firmware? And if it is possible, how do I do that?


    1. This comment has been removed by the author.

    2. I bought the sanguinololu with sprinter installed on I think the bootloader is already installed...

    3. I found an instruction on:

      Starting from chapter 3

    4. Hi Jeronimo,

      Yes, those instructions should get you going, make sure you have the FTDI Drivers installed (for the USB to serial link) and that the Arduino is set to the correct Serial port and board/CPU (sanguino).

      If you have any problems with Arduino V1 then try V0023, that version works very well.

      Then you should just need to load the sketch, change Configuration if needed and compile (Ctrl+r) and then download to the board.

      Good luck.


  17. thank you! I wish that I had read this weeks ago, nice simple explanation for those not so technically minded, I find that usually the reprap wiki is too geeky and relies on volumes of assumed information. I got this immediately. :) Simo

  18. Hi All,

    I am in the process of learning how a 3D printer might integrate into my workflow.
    At present it is a lot of information that is challenging to make use of by a noob (like me).
    There is already plenty to learn and thread together but it is a jumble of cryptic code and not always clear imagery.
    I am starting to piece things together in my mind as I read more about these desktop printers.
    However, I think it would be very helpful to many noobs to start with an info-graphic, possibly becoming a wiki or something in the future?
    Any ideas, comments? Thank you All!

    1. It's quite a challenge and things are changing every day in this very busy community and erupting industry.

      I would really like to get a complete start-to-finish tutorial but I'm sure by the time I had finished it would be out of date! so sometimes it's better to do things as they come and hope it helps someone.

      Do look at the many Flickr photo streams that have RepRap, Makerbot, Printrbot, ultimaker, etc. builds and pictures - they are always good to help make sense of all the different options.

      The software and firmware is usually the hardest place for new-comers, we could really do with more tutorials on them, things are getting more stable now so it's getting easier to get started, but this hobby still requires a lot of reading, learning and patience! before you start getting good results.

      Any suggestions on what you would like to see put up on the blog next?

  19. Rich,

    I've seen some blog posts saying that the "Extra length on restart" setting can be set to a negative number in slic3r, to compensate for restart blobs (I know I get them).

    1. Yes, you can do that, but again you are then extruding less material than your slicer is calculating should be, so it's better to try and fix the issue, you can do a similar thing in Skeinforge and the way to fix blobs with that was by reducing the clip distance on the outer shell.

      By default slic3r leaves a very small gap from the start and finish point of an outline, this should give a smooth and neat join, if you have a blob, you are extruding too much material or you have an oozing extruder.

      After changing to a J-head nozzle I had the opposite issue with Slic3r, where I had a small voids in the outline perimeter, so I needed to close up this outline gap a little more.

      If you open some slic3r Gcode in a 3D viewer Like Repeater Host, you will see what I mean.



  20. hi Rich! first off, I love your blog posts :) thank you very much for writting them :)

    Got a quick question: when using lift for printing: is it a good idea to add springs to the z-axis to help quality? I still haven't gotten my leadscrews and I'm using regular 8mm threadad rods... What do you think?

    thnx! :)

    1. I still use springs on Z when using M6 threaded rod, but with lead-screws I'm not using any springs and using lift quite a lot, seems to work fine at <15mm/sec

  21. Awesome. I will be using this guide. I have to wait tho, I had a .35 J Head nozzle and it just kept getting so clogged I had to desolder remove and blast with a blowtorch and compressor. I ended up drilling it out now its about .9mm so until my new one arrives, I feel anything I do will be blobby and in vain!

  22. Thank You for spending the time to share.
    My first prints are turning out better than I expected thanks to you.


  23. I have the new reprapPRO mendel.. and am a total green horn in this.. how exactly can I use slic3r for the reprapPRO mendel?

  24. One thing I've learned about "first layer height". For a Prusa Mendel style printer where the z axis homes down to the print bed, first layer height really needs to be the height of the nozzle off the bed. If it is too short, the printer won't extrude enough plastic to stick. This seems to result in little dots of plastic rather than a smooth line.

    From your screen shots, it looks like the fancy front-end doesn't give you that option. If you use a setup file and edit by hand, you can set an absolute height rather than a percentage of the normal layer height.

  25. hello
    I hope you can help me
    my extruder stepper went crazy I don't now how to use ardino if I press reverse my stepper extrude...if I press extrude my stepper reverse help

    1. Hello That's an easy one to fix - Turn your machine totally off and remove the USB also.

      Then turn around the Motor connection so Pin 1 is now Pin 4.

      Now turn it back on and plug back in the USB, the motor will operate the other way around - extrude will be forwards and reverse will do just that.

  26. I love to read about your experiences! You write beautifully! I have enjoyed reading your articles. They are very well written. It looks like you spend a large amount of time and effort in writing the blog. I am appreciating your effort.

  27. I really hope this new magazine works out as a showpiece for the RepRap which is a key enabling technology in various open-source/maker.Change Parts using industrial machines for product design and development .The interest in DIY 3D printing started by following the RepRap project.Further examples that proved popular were the custom country specific.

  28. When calculating E-Steps, is it not necessary to consider the 'filament area to nozzle area' ratio to determine how much length will actually be extruded?

  29. I go to see every day some blogs and websites to read articles, but this
    webpage gives feature based posts. also cheak out Change Parts for more information about the machine parts


Note: only a member of this blog may post a comment.