Skip to content

martinfrances107/gcode-nom

Repository files navigation

gcode-nom

Rust 2021 Edition.

crates.io Documentation

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 a issue in the associated git repository.

See nom - "A byte-oriented, zero-copy, parser combinator library"

Changelog

Version 0.6.0 adds supports of G02/G03 "Arc or Circle" commands. Allowing 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 :-

cd gcode2obj
cargo run --release -- < ./assets/benchy.gcode > benchy.obj

If a filename is passed in as a command line parameter then a obj file will be dumped to StdOut.

cd gocode2obj
cargo run --release -- ../assets/X\ 6x6_0.15mm_PLA_MK3S_1h55m.gcode > X.obj

Which for example can be imported into blender for visualization.

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

gcode2svg

Generate svg files

Benchy in Blender

How to use

Pass the gcode file into StdIn - the SVG file is sent to StdOut :-

cd gcode2svg
cargo run --release -- < ./assets/benchy.gcode > benchy.svg

If a filename is passed in as a command line parameter then a svg file will be dumped to StdOut.

cd gocode2svg
cargo run --release -- ../assets/X\ 6x6_0.15mm_PLA_MK3S_1h55m.gcode > X.svg

gcodeExtractThumbs

Iterates over all the embedded thumbnail block and save the images to disk

cargo run --release  --  ../assets/both\ parts.bgcode

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 forms "IJ" and "R". "R" the less popular form is unimplemented.

G5 - Bézier Cubic Spline Command

Releases

No releases published

Packages

No packages published

Languages

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy