weldr is a Rust library and command-line tool to manipulate LDraw files (format specification), which are files describing 3D models of LEGO®* pieces.
This repository is a Cargo workspace composed of the following packages:
Package | Version | Description | Path |
---|---|---|---|
📦 weldr |
The weldr Rust library | lib/ |
|
📦 weldr-bin |
The ⚙ weldr command-line tool |
bin/weldr/ |
The weldr
library allows building command-line tools and applications leveraging the fantastic database of pieces contributed by the LDraw community.
Parse the content of a single LDraw file containing 2 commands:
use weldr::*;
#[test]
fn test_weldr() {
let cmd0 = CommandType::Comment(
CommentCmd{ text: "this is a comment".to_string() }
);
let cmd1 = CommandType::Line(LineCmd{
color: 16,
vertices: [
Vec3{ x: 0.0, y: 0.0, z: 0.0 },
Vec3{ x: 1.0, y: 1.0, z: 1.0 }
]
});
assert_eq!(
parse_raw(b"0 this is a comment\n2 16 0 0 0 1 1 1"),
vec![cmd0, cmd1]
);
}
The ⚙ weldr
command-line tool is an executable to manipulate LDraw files and convert them to other formats (currently: glTF 2.0 only).
Convert an LDraw file to a glTF 2.0 file:
weldr convert gltf 5-8cyli.dat --output 5-8cyli.gltf
The format is:
weldr <COMMAND> <INPUT>
You can get the list of commands with weldr --help
. Currently only the convert
command is implemented for the gltf
(glTF 2.0) format.
weldr convert [OPTIONS] gltf <INPUT>
The official LDraw catalog of parts is available at https://library.ldraw.org/library/updates/complete.zip. When using it, use the --catalog-path
to specify the location where it was downloaded, to allow ⚙ weldr
to resolve files and all their sub-file references. By default the current working directory is used.
LDraw™ is a trademark owned and licensed by the Estate of James Jessiman, which does not sponsor, endorse, or authorize this project.
*LEGO® is a registered trademark of the LEGO Group, which does not sponsor, endorse, or authorize this project.
Licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE2 or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
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.