Netfabb engine for RepRap

The educational technology and digital learning wiki
Jump to navigation Jump to search

<pageby comments="false"/>


Netfabb engine for RepRap creates machine code for RepRap-like 3D printers from *.STL and similar formats. Such software is sometimes called a "slicer". “The netfabb Engine for RepRap is a machine-specific software designed for 3D-printing with devices based on the RepRap principle. It is able to process any STL file and generates high quality toolpaths. It does not require any additional software. The [default] Engine includes a customized firmware for the BFB 3000 and the BFB RapMan, which allows accelerated moves during printing, machine control with a USB connection and direct data transfer.” (Engine for RepRap, retrieved May 10 2012)

Netfabb has other functionality like 3D mesh manipulation, mesh repair, and user interface with the printer. The slicer engine (Netfabb engine for fabbster) that we document here is included in the purchase of a fabbster 3D printer. So far it is not documented as such and since a fabbster is just a somewhat modified Mendel RepRap design, most functionality should be the same. Probably the only major difference with the Pro version that should work with all machines is the easy to understand USB control interface, machine settings, etc.

This little tutorial should be considered as a supplement of the more detailed Build Styles for netfabb Engine for RepRap and Material Settings for netfabb Engine for RepRap articles made in the netfabb wiki.

Next step:

See also:

Calibration for dummies

Normal people like me can't print with default "balanced" and "detail" settings using ABS plastic rolls (as opposed to sticks). However, it is not very difficult to create profiles that create prints that are comparable to what most other 3D printers in this class can do. All you need to do is (a) to print with higher resolutions (aka layers) and (b) make sure that there are no very fine width/very slow combinations in the Build Style left. In other words, make sure that enough plastic comes all at all times.

Also: Make sure that your Plastic diameter is ok. It should be close to 3mm. 2.9mm can do, but 2.7 mm diameter (as in some rolls that we got with the prototype) hardly will work ! You can raise the temperature a bit for better flow.

0.25 Layer model printing

Printing with very thin layers won't work well, since when the print head moves slowly and has to extrude with thin or fine width, extrusion rate (RPM) will become too low (between 2.5 and 5 rotations per minute) and the plastic won't come out anymore. It will get weak or favor creation of a "plug" (I don't know) and then nothing at even higher RPMs will come out at later stages. So let's work with bigger layers. This way we can make sure that we get at least 5 or RPMs. 0.25mm layers are quite ok for most needs.

It is difficult figuring out parameters that print well in small regions. The fabbster engine will by default in the "balanced" style slice a model according to three regions: big (> 4cm2), small (< 1cm2) and standard. Trouble with default settings happens usually in the "small" regions on outer borders that use slow speed and fine/thin width.

So let's create a new easy and simple Build Style that is inspired by the Balanced Style. It will define how big, standard and small regions are going to be printed and when. In addition, we will create a new Material setting that is adapted for 0.25 mm printing, i.e. we will redefine layer width, anti-stringing, as well as width and speed definition settings. A design will rely both on a build style and an associated material style.

The example parameters, we will use in this section closely resemble the Angelina style described further down.

Create a new Material Profile

So let's first create a new material that will print larger layers. We will define larger width definitions that should go with bigger layers. We also will deactivate anti-stringing for now since anti-stringing will reverse extrusion (pull in filament). This also does add to the trouble, however you may skip that option if you are optimistic.

Material settings
  • Make a copy of the Like ABS Blue material first and start from there. (Right-click -> Duplicate or click on Add Material)
  • Select a good temperature, ca. 260-270 for ABS (but a bit lower also should do). Higher means better flow but less good overhangs. Too high (over 290) means trouble. Also ABS is not ABS. Some require higher temperatures than others ! E.g. right now I am using 265-275 for Fabbster Black ABS and less for Bits from Bytes ABS.
  • Material settings: Layer Size = 0.250 (crucial !)
  • Width: Set all Width between 400 and 1000.
  • Speed: Set snake = 25mm/s
  • Jumps: Set Travel RPM = 0. This may not be necessary, but negative extrusion can cause plastic to weaken. Since I managed to print with travel RPM = 3, you also could just reduce it a bit.
Material settings

These settings will mainly eliminate the possibility to do very fine work. We will not aim at higher speeds that are used in "concept level" printing, therefore no need to change the higher speed settings.

Save when you are done

  • Close the popup window

Create a new Build Style

Of course, you could keep a fairly complex build style, but I suggest to make it as simple as possible for your first attempt since less calibration work will result. Also, despite using a .250mm layer, "fine" print still may not work and we don't want any frustrations here. This is calibration for ordinary people like you and me.

Create a new BuildStyle first

  • Style tab-> Manage build styles
  • Add build style and use template Balanced or right-click on Balanced and make a duplicate. Remember, the idea is to create a design that looks pretty enough, but will not take ages to print. Therefore, "Balanced" is a good start.
  • Click on Edit build style
Build style - Adjusting one of the three regions

A radical solution looks like this: Set each region (per default you got three) to

  • With/speed for elements that people will see: default/thin/slow for outer walls and roofs
  • Width/speed for elements that are inside: default/medium/fast for all the Rest.
  • Layer type: Change each to "Every layer", i.e. avoid "second" and "half layer". Typically, these can be found in "Inner 1, 2 and 3". Keep it as simple as possible. However, you could change back to "each second" in places, if something seems to become too fat.
  • Keep the four wall parts: outer, inner 1, inner 2, inner3.

In the overview, "Default" means (probably) printing each layer. Makes sense, since they are bigger now. Later, you actually still can print half-layers. Don't for now !

Save when you are done

  • Close the popup

Calibrate RPM with respect to speed/width

This procedure involves at least one step. Firstly you will have to guess what RPM you would need for the new layer size. Roughly speaking just add 60% to each and also make sure that none is below 10 ! By the way, if you do not understand what RPM means, remove the orange cover of the extruder and watch turning the wheels between 2.5 (very slow) and 120 (very fast) times per minute.

Select Material and click Calibration
  • Select your new Material (e.g. Green ABS Angelina Style)
  • Press "Calibrate"

Now you are in the calibration assistant

  • Now I suggest just calibrating for your new Build Style ! Later you then also can calibrate for a different material/build style combo
    • Select your Build Style
Netfabb calibration assistant

Now you will have to configure each Speed/Width combination, i.e. set an RPM and (optionally) remove the anti-stringing

  • Add 50-60% to each RPM. Make sure that none is below 10
    • Set New RPM
  • In the Anti-stringing tab, set pullback to 0
    • Set New pullback
  • Then Click on Next Object or select it from the pulldown menu

As you can see, there will be few objects to calibrate (e.g. about 6). The reason is that we simplified the build style. Later, have a look the official Netfabb Relaxed style and you can see that there more speed/width combinations. If you don't select a build style you will get even more.

Test with a small print

  • If the result is ok, you are done
  • If it is not, then you can reflect and adjust Material + Build Style and then again check/adjust RPMs. A better alternative is using the Netfabb calibration assistance explained in the next step.

Netfabb calibration assistant

  • Check if the print head can go to the back and the right back corner ! It must be close but not touch. If it touches it will burn the platform and your plastic will be stuck again in the extruder (we don't care about the platform, but about the extrusion) !!
  • Press "Print Calibration". I now must print, else you didn't do what I said above (no RPM below 10 !!!)
  • With a Caliper measure each wall. You can buy a cheap caliper (20 Euros or less) in a do-it-yourself store or online
  • Report the width for each calibration object (i.e. the speed/width combos you just defined)
Enter calibration values
  • You will notice that RPMs will change, probably go lower
  • Make sure that none is below 10 RPM (but you decide what your printer can handle)

Test with a small print

  • If the result is not ok, then you must change your build style (sorry) or just lower your ambitions. * If you change Build Style, e.g. add a new combination of speed/width, then please check the calibrations again. You may have a freaky element, e.g. (snake/thin) that does 2.5 RPM that you must adjust !
  • Also, remember what we said about the plastic. If its diameter is lower than 2.9mm you might consider buying another roll. Before you do so, find a segment in the roll where it is thicker and try again. The wheels must be able to push it down.
  • If the result is ok, you now can stop or read on and do some further tweaking ....

Further work

  • Lower temperature by 3-5 degrees and try if plastic still comes out at low RPM. Lower is better (creates better overhangs)
Manual RPM adjustments
  • Manually adjust RPMs if you like in the calibration. E.g. if you think that medium/fast produced strings that are too fat, just lower a bit.

In addition, you also could upper/lower region width in the build styles or even boost head speed and RPM in the USB Controls/Override tab, but I argue against. While we aim to print at higher resolution, this "lower quality" must look good ! Just use the overrides for testing, but don't make it a habit !


Activate anti-stringing measures again, your result now requires that you have to remove strings, with a little knife and/or with some burning.

Contour offsets
  • If you build flat roofs, then you may have to use negative distances to the contours. I.e. when the print head moves over an empty space, it should hit the contour so that the plastic will stick

Anti-stringing calibration

Anti-stringing is important if your object has a lot of details that stick out. Have a look at a fabbster default material and use these settings or divide these by 2. I settled for -3 RPM in most of my material settings. But sometimes I had to turn anti-stringing off (printing tiny objects at very low speed).

Note on burning away small strings: ABS can and will burn for real. Buy a micro-burner, e.g. a Dremel and keep the distance ! Also flip-flap objects back and forth or they will warp starting at fairly low temperatures (60 degrees ?)

In picture below, you can see Duplos with strings: left is after full calibration, right is after some manual changes as described above:

Duplos with Strings - cut and burn away

In the next picture, DUPLOS are without strings, i.e. printed with the Angelina style that you can download.

Duplo without stringing (not postprocessed)

Contour offsets and overlap with filling

As we said above, you may have to adjust distance between walls (contours) and upskins, downskins and filling.

For example, if you build flat roofs like in a Duplo block, then you may have to use negative distances to the contours. I.e. when the print head moves over an empty space, it should hit the wall hard so that the plastic will stick. Else the plastic may just fall down or worse create knots and mess up your print. For DUPLOS, I use about -0.6mm. That's a lot, but it can't be helped.

Contour overlaps

If you want to get Duplos right, the most important parameter to change is Overlap with filling. Set it to 6mm and read more in Dealing with flat roofs

Simple build styles and material styles


Build style and material style principles

under construction right now - 16:43, 22 May 2012 (CEST)

Material styles

Material styles define many parameters that are related to three most important filament deposition parameters:

  • extrusion speed (RPM, rotations per minute) defines how much plastic comes out. Extrusion speed can be either positive (very little to lots) or negative (i.e. pulls filament back in)
  • head movement speed, defines how fast the print head will move while extruding or while traveling without extrusion.
  • layer size (how much the print head will move up in the z-direction after printing a layer)
  • temperature (including cooling or waiting)

That may sound simple, but it is not. There are countless combinations of these parameters, and within a print different combinations will be used.

For starters, the most important question is how much plastic is going to be deposited at what speed and temperature. The second most important question is what is going to happen when the print head moves without printing.

How much plastic ?

In Netfabb, material output is not defined by some combination of head movement speed and RPM as in some other slicers. The software added two abstraction layers, i.e. width and speed. This allows to configure a print with the same amount of plastic at different speeds. Faster for coarser prints, slower for more difficult prints.

To get this working you first must define a series of three parameters. After that, you can fine tune (calibrate) the RPM using a different tool !

Material and Build styles go together. I.e. you can't think of a build style that uses 0.25 layers and then use an original 0.15mm Netfabb Material definition.

1. Layer size

Layer size defines how much the print head will move up after printing a layer. Actually, Netfabb requires that you think about three layer sizes:

  • The default (normal) layer is set at 0.15mm. Compared to other similar 3D printers, this is fairly small and leads (in principle) to high quality prints. However, if you work with plastic roles, this layer size is too small since no plastic will come out if you print fine "strings" at very low speed. This is the reason why we decided to use a 0.25mm default layer.
  • Half layers are half of that. To be use for rendering of small difficult parts. The printer simply will (roughly) slow down RPM by half and then move up by a half step and then print an other half layer on top.
  • Double layers are double. The printer first will print other normal and half layers and then print double layers.
Width definition

2. Width

In the Width section you must define six values from fine to fat. These values are purely theoretical, i.e. in principle you must print out calibration objects and adjust flow, i.e. RPM later.

The default fabbster width definitions are the following:

Netfabb width definitions
name default size
fine 0.4mm
thin 0.5mm
medium 0.7mm
Strong 0.9mm
Fat 1.0mm

This is actually quite surprising, since the smallest layer size is less than 0.1mm. In other words, we expected that "fine" could have a been a bit finer. The reason for printing larger than higher is that when you put squeeze on layers, they will become more solid. However, we did not test yet what happens with half layers and do not trust this very much. In any case, for our own 0.25mm we mostly used the exact same definitions, meaning that we prefer to print in a less dense way.

3. Speed

Speed will define print quality. Unlike in other slicers where the user must figure out what happens at a given speed/RPM combination, the result in terms of thickness with fast/medium and slow/medium should be the same.

The default fabbster speed definitions are fairly spaced out. In our Vanessa styles we preferred to narrow the steps between snake and medium.

Netfabb speed definitions
name default speed Vanessa speed
snake 25 mm/s 25
slow 50 mm/s 40
medium 70 mm/s 60
fast 80 mm/s 80
Ultra 120 mm/s 120

The Raft

With ABS, we suggest to use the Pillar Raft. Default settings should more or less work. User the "strong" version for larger objects.

The traditional raft.

A traditional raft may be more appropriate for PLA printing. Here are some tips for parameters:

Raft Z-height - defines the distance at which the raft will be printed. E.g. if your hotend is not really close to the bed you can lower this. 0 means direct on top, 0.2 means that the hot end should raise about 0.2mm above before extruding.
Raft thickness - defines the distance between raft layers. More means fatter layers. e.g. 0.5 prints a rather fat raft that is ok for DUPLOS, but not ok for objects with a flat bottom.
Distance Part/Raft - Defines the distance between raft and part. For a Duplo like object it should be 0. However, for plastic like PLA I suggest to lower the object since distances seem to be wrong (PLA isn't as solid as ABS and may be printed "flatter" than intended).


If you define new layer sizes and change width and speed definitions, we suggest to calibrate.

(For now, see above)


There are two kinds of overrides:

(1) In the toolpath tab you can change both speed and extrusion rate (RPM). This a useful tool for testing major changes you should make in the Material definitions, or for adapting a build style made for another kind of object. Otherwise, don't use it, now that you know how to create build styles ....

(2) In the expert Manage build style settings, one can adjust a spread factor (called width factor) for each region component, e.g. upskins, downskins, outer, inner1. You can use this setting for certain types of objects. E.g. if your material definitions work just fine for pillars but not for upskins you can make a quick adjustment here. Alternatively, diminuish or augment the width.

Adding or duplicating a region

As of version 1.4.9, "less" means more and the other way round. E.g. if your upskin is too fat at 100%, then set it at 120%....

Width factor: left=60%, middle=80%, right=120%

Build styles

Region definitions

You can define styles for various "regions". Where and how you are going to use these regions is a different issue. Typically, you would print small regions at lower speed and bigger regions with higher speeds.

To add or duplicate a region, right-click on a region in the upper panel:

Adding or duplicating a region

What is a region

It is important to understand that a region is a horizontal slice. It is not something that is defined by a contour (although such regions could be implemented in the future).

Yellow defines a region (i.e. both the thumb and the hand part)

Region selection

Region selection is probably the most difficult issue to understand. You can activate use of a region under three different conditions. Regions then can be combined in a tree.

Before you start using the region selection, you must think about your regions and add them in the "General Build style settings".

Then got to Region Definitions an now be careful:

  • First select the tree element that you want to define, e.g. the root element or a sub-element
  • Then only select either by contour length, area or by layer !

So let's shortly look at the three types of region selectors:

By layers

This is typically used to define what happens in the first 2 layers. For some objects, it is better to print more slowly and maybe with some higher width (but check how little RPM you can handle !).

This method requires you to enter at least one threshold value, e.g. "2"

By area

In many build styles that are made for little objects, one area is enough. In other words, you would print everything fairly slowly in order to get good quality. If you apply this principle to bigger objects, then you can easily wait 10 hours vs. 2-3 hours to get a print done.

Therefore it is a good idea to define at least three variants:

  • small regions that need fine printing
  • normal regions that can be printed faster
  • big regions that can be printed fast.

However, this principle only can work if your "normal" and "big" regions are simple.

This method requires you to enter at least one threshold value, e.g. "1cm2". Tip: Since an area is defined by the surface of the whole slice, it often is pointless to define tiny regions. Rather make sure that both the tiny part and the larger not so tiny parts in the same slice print well.

By contour length

Same principle as above, except that the contour is taken as measure of size. E.g. a 1cm x 1cm square would have a contour of 40mm and a 2cm x 0.5cm rectangle a contour of 5cm. Using cm2 areas is probably simpler to understand and makes more sense in most cases.

You can build very complex trees. However, most people rather would defined several build styles, i.e. on build style per type of object. For example, one for simple DUPLO bricks, one for RepRap parts, one for artistic objects and so forth.

A typical pattern is the following:

  • First two layers
  • Rest
    • small regions
    • Normal regions
    • Big regions

As shown in the following pictures, you will have to define threshold values for both the first "layer" node and then for the "third" Select by Area node.

Defining a threshold value

Once you defined threshold values, you then can associate a region for each threshold.

Associating a region style with a region selection definition

Again, I strongly suggest that you think before you click, or you will loose all your definitions:

  • First select the element in the tree that you want to configure
  • Then, click at the bottom ! Also, select the right element, do not experiment (unless you do it just for learning ....)

Tips and tricks

Dealing with flat roofs

Default build styles cannot deal with flat "roofs", i.e. the kind that you would find in DUPLO blocks. Dealing with this problem is fairly simple and involves three steps:

In the Build Style

(1) Set Overlap with filling higher, e.g. 6mm

Overlap with filling will produce straight lines all over the slice

(2) Use hatching !

For each region definition, change the upskins and downskins to use straight lines

Hatching will produce straight lines

Turn the model

Flat upskins and downskins are printed left-to-right (along the x-axis and the y-axis). By turning the model you will achieve much better results.

Left = bad (filament will fall down, right = better

Dealing with small and high objects

Frequent symptoms: Plastic will stay weak and bend sideways.


  • Print as "cold" as you can, however you may have to try more than once finding the minimal temperature.
  • Put another object next to it, e.g. a double. This way the plastic will cool before the next layer starts. Alternatively, try putting a cylinder around an object. You then can lower travel speed a bit, but not too low (see next item)
  • If you print at slow speeds (10RPM), this strategy may fail, since plastic can stop coming out after the print head travels. Setting anti-stringing to zero and raising temperature will help.
  • Use a hairdryer or a ventilator that can blow cold wind. In that case, you may have to raise temperature a bit (not tested).
  • Set minimal layer time to something like 5 seconds. Remove anti-stringing and raise temperature if needed. I got much better results with the printing two objects in a row trick, but I maybe didn't try enough ....
Minimal layer time

Printing with PLA

I tried to print with translucid PLA and so far I didn't manage, except for a little "flat" and dense heart.

What I think so far:

Starting up:

  • Don't print a raft, but I am not sure about this. A fat traditional raft may actually help getting it flow (help this with pushing it down).
  • Remove the filament, then when the extruder goes up for heating insert it with RPM = very fast. If you leave the filament inside during the warmup and after printing it will clog the nozzle, i.e. expand in the square and then it can't be pushed down anymore

Expert settings:

  • Aim for medium RPM (whatever that means, got to test first)
  • Double all the width in the same way. I.e. make sure that z-steps are low, print fatter than you would with ABS. PLA must touch.

Anti-warping designs

(1) Try designing with holes

Anti-warping lozenges in the walls

See how-to-3dprint-large-objects-without-warping.html

(2) Print a flat 0.5mm circle (and then cut if off) Source: Someone in the fabbster forum

.... more later


At Netfabb - Wiki pages
At Netfabb - forums