OK I totally get it now.
here is an explanation how you can understand this, this may be useful for someone that is coming from CNC milling background.
In fact we have a very simple situation here. 3D printer is just a 4 axis machine.
Only it works slightly different from what you may be used to.
We have standard 3 axis XYZ system for toolhead movement and we have 4-th axis E, that is the extruder.
XYZ work in standard absolute mode and G1, G2 and rest of movement commands work just as in any 3axis machine. F, as always specifies feed rate, that is speed of linear movement of the toolhead.
E, the 4-th axis, works a little bit different, as it is also linear axis moving in mm, but it always work in incremental mode.
So any E command causes filament to move of specified distance during current movement.
So in fact controller is feed with a series of standard commands for 4 axis system
for example:
G1 X100 Y20 Z50 E3 F100
now it is quite simple to understand, XYZ movement of the toolhead is executed at feed of F100 and during the time required to travel XYZ distance E axis (extruder) will extrude 3mm of filament.
What will be the physical effect of such movement, neither controller, nor the printer it self does not care.
It is the pre processor (slicer) that does all the math and takes in to account other user input like line weight, layer height, max volumetric flow of the filament, etc.
Than for each XYZ movement that is required to produce expected shape, slicer calculates required volume of filament, and than in the end length of the filament, that needs to be pushed through the extruder during this particular movement.
And exports all of that in simple set of commands for the controller
G1 X Y Z E
G2 X Y Z E
…
…
And it is the same when there is a command for the extruder it self only. So for instance filament purge or retraction.
In such case slicer will export a command to move only E axis, but in such case linear speed appropriate for toolhead movement in 3D space will most likely not be appropriate for the extrusion rate that is feasible.
Thus slicer also explicitly sets F for this particular move.
G1 E10 F10
And resets it again when next move of the toolhead is to take place.
So in fact it is super easy, and I couldn’t figure this out not expecting this is so simple.
I thought, I do not really know why, that it is the printer that takes care of some high level control of the extrusion process.
But now I know, and had made a step forward.
Cris.