#lego #parser #cad #ldraw

weldr

A Rust 库用于管理 LDraw 文件 (.ldr)

4 个版本 (2 个破坏性更新)

0.3.1 2020 年 12 月 12 日
0.3.0 2020 年 12 月 3 日
0.2.0 2020 年 11 月 16 日
0.1.0 2020 年 11 月 6 日

#2226 in 解析器实现

每月下载量 27 次
用于 weldr-bin

MIT 许可证

86KB
2K SLoC

👨‍🏭 weldr,您最喜欢的积木与 Rust 的链接 🧱

LICENSE Crates.io Version CI Coverage Status Minimum rustc version

weldr 是一个 Rust 库和命令行工具,用于操作 LDraw 文件 (格式规范),这些文件描述了 LEGO®* 零件的三维模型。

📦 weldr 包含库,允许构建利用 LDraw 社区贡献的出色组件数据库的命令行工具和应用程序。

注意:对于二进制命令行工具 ⚙ weldr,请参阅📦 weldr-bin

示例

使用 weldr 包解析包含 2 条命令的单个 LDraw 文件内容

extern crate weldr;

use weldr::{parse_raw, Command, CommentCmd, LineCmd, Vec3};

fn main() {}

#[test]
fn parse_ldr() {
  let ldr = b"0 this is a comment\n2 16 0 0 0 1 1 1";
  let cmds = parse_raw(ldr);
  let cmd0 = Command::Comment(CommentCmd::new("this is a comment"));
  let cmd1 = Command::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!(cmds, vec![cmd0, cmd1]);
}

文档

参考文档

Rust 版本要求

weldr 使用 rustc 版本 1.44稳定版beta 进行测试,尽管可能可以使用较旧版本,但从未进行过测试。

安装

weldr 可在 crates.io 上获得,并可以像这样包含在您的 Cargo 启用项目中

[dependencies]
weldr = "0.3"

然后在您的代码中包含它

extern crate weldr;

技术功能

weldr 利用 nom 解析器组合库有效地解析 LDraw 文件,并将它们转换为内存中的数据结构以供消费。所有解析都在 &[u8] 输入上完成,预期包含符合 规范 的 LDraw 内容。特别是,这意味着

  • UTF-8 编码的输入
  • 接受 DOS/Windows <CR><LF> 和 Unix <LF> 行终止符

版权

当前代码仓库受 MIT 许可证许可。

LDraw™ 是由 James Jessiman 的遗产拥有并授权的商标,该商标不支持、批准或授权此项目。

注:LEGO®是乐高集团的注册商标,该集团不赞助、认可或授权此项目。

依赖项

约2.5MB
约39K SLoC