Expand description
§g-win
g-win is a G-code parsing crate for Rust, built with winnow. It aims to maximize compatibility by preserving unrecognized commands for later processing, ensuring compatibility across environments and handling of features like macros and templating.
§Table of Contents
§Design
-
Preserves Unrecognized Commands: Stores any unrecognized or custom commands as strings in place.
-
Custom Command Handling: Easily add rules to parse any command.
-
Lightweight: Minimal API designed to streamline implementation.
§Installation
Add g-win to your Cargo.toml:
[dependencies]
g-win = "0.1.0"
Then, run:
cargo build
§Usage
§Parsing G-code
All G-code file information is stored in the GCodeModel struct. The parser is implemented through the FromStr trait, returning a result of the type Result<GCodeModel, GCodeParseError>.
use g_win::GCodeModel;
let gcode = "
G21 ; Set units to millimeters
G90 ; Absolute positioning
M107 ; Fan Off
G28 ; Home
G1 Z15.0 F9000 ; Move Z Axis up
MCustomCommand ; This is a custom command
";
let gcode: GCodeModel = gcode.parse().expect("failed to parse");
println!("{:?}", gcode);
§Handling Unrecognized Commands
g-win stores unrecognized or custom commands as Command::Raw(String), preserving their original content.
§License
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE)
- MIT license (LICENSE-MIT)
at your option.
§Contribution
Contributions are welcome! Please submit a pull request or open an issue for suggestions and improvements.
-
Fork the repository.
-
Create a new branch:
git checkout -b feature/your-feature-name. -
Commit your changes:
git commit 'Add some feature'. -
Push to the branch:
git push origin feature/your-feature-name. -
Open a pull request.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
Modules§
Structs§
- Counter
- G1
- Struct to store G1 params as optional strings
- GCode
Line - Struct to store a single line of gcode, with an id, command, and comments
- GCode
Model - Struct to store all information for a .gcode file, specifically calling out relative vs absolute positioning and extrusion and with a counter to generate line ids
- Id