I'm working on building a tool to generate G-code (a simpler slicer), and I'm trying to calculate how much filament should be extruded per movement.

Is there a standard calculation for this? Something like:

layer height * flow % * extruder diameter * distance 

How does Ultimaker Cura calculate this?


Basically, all movements are (small) straight lines, the volume of a straight line is easily calculated as you already guessed.

To calculate the volume to be extruded you multiply the following parameters:

  • the layer height (h)
  • flow modifier (e.g. as pertectage) (SF)
  • extruder nozzle diameter (d)
  • distance of the straight line (l)

With this volume you can calculate how much filament you need to extrude. To get the length (thus the length defined by the E parameter), divide the obtained volume by surface area of your used filament by:

  • π * (filament radius)2 or alternatively π /4 * (filament diameter)2

To sum up, the value of E is given by:

enter image description here

  • $\begingroup$ Thanks! Just to clarify: extrusionVolume = (layer height * flow modifier * nozzle diameter * straight line distance) E argument = extrusionVolume/π * r2, where r is the radius of the filament? What was the formula you listed after π * r2 (it doesn't look like it's equivalent)? Is it safe to assume that for G2/G3 (arcs), it's the same, but with the perimeter of the arc instead of the distance of the straight line? $\endgroup$
    – t. gl.
    Jul 5 '18 at 18:39
  • $\begingroup$ @t.gl. Diameter is twice the radius so to get radius squared is similar as diameter squared divided by 4. To calculate arcs (for G2/G3), you need to know the radius of the arc and the section (or angle). Arc circumference is 2 * π * arc radius * percentage of the circle. $\endgroup$
    – 0scar
    Jul 5 '18 at 18:58

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.