7 releases (4 breaking)
new 0.5.1 | Apr 13, 2025 |
---|---|
0.5.0 | Apr 1, 2025 |
0.4.0 | Mar 26, 2025 |
0.3.0 | Mar 17, 2025 |
0.1.1 | Dec 27, 2024 |
#116 in Visualization
392 downloads per month
3.5MB
2.5K
SLoC
gcodeToObj
Rust 2021 Edition.
A G-code visualization tool written in rust
A nom based parser, outputs a "Wavefront Obj" file which can be imported into blender for visualization.
Both .gcode files and binary .bgcode files are accepted.
Performance
Currently 9.9MByte bgcode file can be processed into a 16MBytes obj file in 1.5secs.
[ See the git repository associated with this project... assets/gear-holder-print-in-place_04n_022mm_pla_mk4_6h49m.bgcode ]
How to use
Pass the gcode file in as 'StdIn' and the program will send the obj file to 'StdOut' :-
cargo run --release -- < ../assets/benchy.gcode > benchy.obj
Binary ".bgcode" files must be passed in by filename :-
## Binary bgcoode files must be passed in as an argument because they are not utf-8 encoded
cargo run --release -- ../assets/both\ parts.bgcode > both.obj
Here the obj files are imported in to blender and processed.
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].
Future work
-
Make this nom-parser a "streaming / zero copy" parser. So only a small fragment of the large files is memory.
-
I have only tested against gcode files that use absolute positioning.
-
I must test with code than uses relative positioning.
-
Convert "G5 - Bézier Cubic Spline" commands into the equivalent "obj" spline by defining a basis matrix. Support is not universal I could fall back to a series of line segments.