Few years i was working with Machinekit and did use their feature called “Velocity extrusion” - basically it’s a combination of “Presure Advance” + Automatic extrusion and i really like it because you can fully control extrusion without any calculations.
This feature allow me to do following fun advanced stuff:
- Manually, in real time, draw with plastic just by specifying coordinates.
- Create dynamic G-Code by using subroutines directly inside of machine.
- Control amount of retraction/stringing during build process.
- Easily do some test scenario without Slicer.
- Work in 4 coordinates, xyz-cartesian + 1 rotational.
- Get some performance boost because G0 move with Zhop can have greater corner velocity than G1
- Utilize “Canned Cycle”, “Threading Cycle”
- Work in different planes
- Get fully portable G-Code independend from extruder
Automatic extrusion was working following way:
There was a clear separation of G0 and G1 codes
G0 was used just for movement, G1 was used only for extrusion moves,
but each G1 command didn’t have any E-steps (it contain only xyz or more axis coordinates), amount of plastic was calculated automatically base on previously defined output cross section which can be changed by G-Code.
For example if you wish to get 0.5mm wide extrusion on 0.3 Z height you would specify it directly 0.5*0.3=0.15 or set it via heigh and width separetly.
When system did extrusion move with G1 it was calculating E-steps automaticaly for required distance. There was a posibillity to add automatic retract/un-retract on each switch from extrusion to movent modes.
There is some plugins for Cura to to post-process usual g-code to this kind of code and i also build post-script for Fusion360, but it’s usual slices in 2D.
I already build this functionaliity in Klipper but it’s not cleanly isolated in separate module. So here i’m trying to collect some feedback how much people want this feature, if community have interest in this feature - i will refactor it and propose to push it to Klipper.
Thanks.