#gcode #parser-combinator

app gcode2obj

[Wavefront obj] Visualization tool for inspecting a g-code file

5 releases (3 breaking)

new 0.4.0 Mar 26, 2025
0.3.0 Mar 17, 2025
0.2.0 Feb 15, 2025
0.1.1 Dec 27, 2024
0.1.0 Dec 26, 2024

#131 in Visualization

Download history 68/week @ 2024-12-20 236/week @ 2024-12-27 45/week @ 2025-01-03 22/week @ 2025-01-10 130/week @ 2025-02-14 10/week @ 2025-02-21 9/week @ 2025-02-28 100/week @ 2025-03-14 59/week @ 2025-03-21

169 downloads per month

MIT license

3.5MB
2.5K SLoC

gcodeToObj

Rust 2021 Edition.

crates.io Documentation

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.

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.

Benchy in Blender Lego bricks

Within blender :-

  1. This obj has been "Imported".
  2. Converted into a "Curve".
  3. Finally a circular bevel object has been applied to make the object solid [ A circle to represent a 0.1mm fibre].

Performance

Currently 9.9MByte bgcode file can be processed into a 16MBytes obj file in 1m13secs.

[ See the git repository associated with this project... assets/gear-holder-print-in-place_04n_022mm_pla_mk4_6h49m.bgcode ]

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.

Dependencies