How is the E argument calculated for a given G1 command? 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: