#parser #gerber #file #buf-reader #now #gerber-types #gerber-doc

bin+lib gerber_parser

gerber-types crate 的简单 Gerber 解析器

2 个版本

0.1.2 2022年6月29日
0.1.1 2022年6月29日

#1631解析实现


用于 gerber2svg

AGPL-3.0

35KB
437

Gerber-parser

使用 Rust 编写的简单 gerber 解析器,用于与 gerber-types crate 一起使用。

use std::fs::File;
use std::io::{BufRead, BufReader};
use gerber_parser::parser::parse_gerber;

// open a .gbr file from system
let file = File::open(path).unwrap();
let reader = BufReader::new(file);

// Now we parse the file to a GerberDoc 
let gerber_doc: GerberDoc = parse_gerber(reader);

// it is possible to convert to an 'atomic' representation purely 
// in terms of Vec<Command> of the gerber-types crate
let commands:Vec<Command> = gerber_doc.to_commands();

当前状态

⚠️ 注意:此软件包仍在开发中,并未涵盖完整的 Gerber 规范

目前缺失

  • 所有 TDTO 命令
  • 所有 AM 命令
  • LMLRLS 命令
  • SR 命令
  • AB 命令

部分实现

  • TF 和 TA 命令仅支持有限的参数范围;自定义属性会导致错误

此外,文件标题部分的注释(即单位类型声明、格式规范和孔径声明)将在解析后的 Gerber 通过序列化转换回字符串时放置在标题下方。

一般待办事项

  • 使用 Result 使解析更简洁
  • 减少 panic 数量
  • 使错误消息更清晰
  • 所有命令的迷你测试
  • 进行适当的坐标检查(与 格式规范 兼容性)

依赖关系

~4–5.5MB
~100K SLoC