gcode-nom
Rust 2021 Edition.
A library containing a full set of nom parsers for decoding gcode files.
Both .gcode files and binary .bgcode files are recognized.
Based on this library the workspace contains a series of visualization tools
- gcode2obj - Generates "WaveFront Obj" files.
- gcode2svg - Generates SVG files.
- gcodeExtractThumbs - Extracts the images embedded in a binary-gcode file.
- bgcodeViewer - Generates a report by turning on all the logging and them attempts to parse the file.
I intend the parsers to be as strictly compliant as possible. This is under-going rapid development. Please create issues here, or send me gcode files which expose unimplemented sections.
See nom - "A byte-oriented, zero-copy, parser combinator library"
Changelog
Version 0.6.0 adds supports of G02/G03 "Arc or Circle" commands. Allow a more diverse set of gcode files to be rendered.
Between version 0.4 and 0.5 a major performance misconception was unpicked.
A 9.9MByte file is processed 60 times faster. Now in 1.3secs
[ See the assets folder associated with this repository "gear-holder-print-in-place_04n_022mm_pla_mk4_6h49m.bgcode" ]
Tools
gcode2obj
Generates obj files.
Pass the gcode file into StdIn - the obj file is sent to StdOut :-
If a filename is passed in as a command line parameter then a obj file will be dumped to StdOut.
Which for example can be imported into blender for visualization.
Within blender :-
- This obj has been "Imported".
- Converted into a "Curve".
- Finally a circular bevel object has been applied to make the object solid [ A circle to represent a 0.1mm fibre].
gcode2svg
Generate svg files
How to use
Pass the gcode file into StdIn - the SVG file is sent to StdOut :-
If a filename is passed in as a command line parameter then a svg file will be dumped to StdOut.
gcodeExtractThumbs
Iterates over all the embedded thumbnail block and save the images to disk
bgcodeViewer
Strict checking of binaries. validates blocks checksums, ensures 'block' parameters values are within valid ranges.
Pass the gcode file into StdIn - A summary file is written to StdOut
cd bgcodeViewer
cargo run --release < ../assets/both\ parts.bgcode > summary.txt
Future work
see TODO
Missing implementations
G2/G3 -- Arc have two form II and R. R the less popular form is unimplemented.
G5 - Bézier Cubic Spline Command