5

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?

0scar
  • 32,029
  • 10
  • 59
  • 135
t. gl.
  • 53
  • 3

1 Answers1

7

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

0scar
  • 32,029
  • 10
  • 59
  • 135
  • 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? – t. gl. Jul 05 '18 at 18:39
  • @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. – 0scar Jul 05 '18 at 18:58