gcode2obj 0.6.0

[Wavefront obj] Visualization tool for inspecting a g-code file.
gcode2obj-0.6.0 is not a library.

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.

Benchy in Blender Lego bricks gears

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].

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.