-
Notifications
You must be signed in to change notification settings - Fork 0
Ease of use and the math behind Cura
Cura has been designed to be easy to use. At first, it starts out with a configuration wizard to configure and test your machine. It also upgrades your firmware, which makes first use very easy.
Next, it exposes you only to a handful of configuration options. (Compared to Skeinforge, which has 260 options). All these options contain sane and safe defaults. You should be able to start printing right away (with an Ultimaker and PLA). With every release it should be easier and quicker to go from 3D model to having the print in your hand.
However, some of these new options can be quite a shock to experienced users. They feel like they lost control. So here is the math and reasoning behind some of the options.
Wall thickness controls the thickness of the side walls. It's that simple. If you want 1mm outside walls, you enter 1.0. If you want a really strong part, you could enter 5mm.
Now, what does this control? It controls the amount of "outside lines" and the thickness of those lines. (For Skeinforge users, "Extra shells, perimeter width over thickness" as the parameters you used to use)
Why a wall thickness? Simple, because you can visualize it. If you tell anyone, I'm printing with 2mm walls, then they know exactly what to expect. If you tell someone, I'm printing with 2 extra shells, and a "width over thickness" of 0.5, they have no idea what you're talking about.
How does it control this? Well, the magic lies in the "nozzle size" value configured. With this nozzle size we know the optimal line thickness. Combined with the required wall thickness, we can calculate the amount of lines required, and how thick those lines will have to be. It tries to get the line width as close to the nozzle as possible, but it never goes over 1.5x the nozzle size, because you get oozing then.
Or, in pseudo code:
lineCount = floor(wallThickness / nozzleSize)
lineWidth = wallThickness / lineCount
if lineWidth > 1.5 * nozzleSize:
lineCount = lineCount + 1
lineWidth = wallThickness / lineCount
#Skeinforge settings:
extraShells = lineCount - 1
perimeterWidthOverThickness = lineWidth * layerHeight