Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/buserror/gcodepp

gcodepp is a reprap GCODE postprocessor and optimizer
https://github.com/buserror/gcodepp

Last synced: 3 days ago
JSON representation

gcodepp is a reprap GCODE postprocessor and optimizer

Awesome Lists containing this project

README

        

gcodepp -- GCODE postprocessor and optimizer
=======

gcodepp is a tool that takes a GCODE file a used for reprap, parses it,
and passes it thru a series of filters that can rewrite bits of it for
specific tasks.

The idea is to allow "specialization" of gcode generation for specific
printer models without having to complicate slicer programs like [Slic3r](http://slic3r.org/)
or [repsnapper](https://github.com/timschmidt/repsnapper).

*This is work in progress* it had had a lot of testing with output from both these slicer
applications, but little else.

The tool is made to be easy to hack, and the parser is very, very fast, one if the goal
is to make a library out of it eventually, and make a host 'spooler' software with it.

Some debate exists because that sort of specialisation is seen by many as belonging in the
firmware; I strongly disagree, the firmware will never have a 'view' of a whole layer (or more)
and the history of (2D) printer drivers clearly demonstrate that 1) the printer driver
doesn't belong in the application, 2) the printer driver is responsible to generate
device specific output from a basic, generic intermediate format 3) The printer is slaved
to that format.
In other words, we need a stage between the Slicer and the Firmware, and there is room there
for a tool that would involve printer descriptions and 'optimize' the output for that specific
hardware.

Antijerk filter
---------------
![Antijerk1](https://github.com/buserror-uk/gcodepp/raw/master/img/antijerk1.png) ![Antijerk2](https://github.com/buserror-uk/gcodepp/raw/master/img/antijerk2.png)
This filter slows down head movements using the speed of the head, and the angle of
the next segment (the sharpness of the next turn). It will split long movements so only
the last part is used as slowdown, and can also slowdown sequences of small "jerky"
moves like very small infills.

The default setting of the filter is not to try to split long extruded moves, as it
sometime introduce artifacts dues to the difference in flow rates.
The default mode works really well as is tho, and will allow you to jack up the "movement only"
speed of your printer by a large amount. Here I use 170mm/s without any visible loss of
precision.

Antidot Filter
--------------
![Antidot1](https://github.com/buserror-uk/gcodepp/raw/master/img/antidot1.png) ![Antidot2](https://github.com/buserror-uk/gcodepp/raw/master/img/antidot2.png)
The antidot tries to remove spurious extrusion 'dots' as sometime generated by [Slic3r](http://slic3r.org/)
Most of the time it tries to make sharp angles "sharper" by adding extra spurious dots on them,
and most of the time it makes the print a lot worse than without them!
The filter just recognize spurious small extrusion and remove them from the output.

Cleaner Filter
--------------
This filter is ran last on the pipeline, and optimizes the GCode generation by removing
spurious coordinates. The gcode is also stripped of commends, and is 'compressed' by
removing trailing zeros from coordinates, so X1.0000 becomes X1