gerber 文件的概念

一、Gerber 是什么?

Gerber 文件是 PCB(印刷电路板)制造行业的标准图形文件格式。

它的本质:

🔥 一种"光绘机绘图指令语言"

本质是:一系列绘图命令

它不是矢量图(虽然结果是图形),

而是"如何绘制图形的指令集"。


二、Gerber 标准

目前主流标准:

✅ RS-274X(现代标准)

这是现在 PCB 工厂通用格式。

特点:

  • 自包含 aperture 定义
  • 支持多种图元
  • 支持极性(正片/负片)
  • 支持宏

❌ RS-274D(老标准)

需要外部 aperture 表文件

现在基本淘汰


三、Gerber 文件本质结构

Gerber 是:

ASCII 文本文件

例如:

复制代码
%FSLAX24Y24*%
%MOIN*%
%ADD10C,0.010*%
D10*
X100000Y200000D02*
X150000Y200000D01*
M02*

四、Gerber 的核心组成

从解析角度,Gerber 文件包含 5 大块:


1️⃣ 文件头参数

例如:

复制代码
%FSLAX24Y24*%
%MOIN*%

FSLAX24Y24

解释:

参数 含义
FS Format Spec
L Leading zero suppression
A Absolute
X24 X 坐标 2 整数 4 小数
Y24 Y 坐标 2 整数 4 小数

这意味着:

复制代码
X123456  => 12.3456

单位

复制代码
%MOIN*%   => inch
%MOMM*%   => mm

⚠️ 你后面必须转换单位


2️⃣ Aperture 定义(非常重要)

复制代码
%ADD10C,0.010*%
%ADD11R,0.050X0.030*%

解释:

语法 含义
ADD10 定义 D10
C Circle
R Rectangle
0.010 直径

等价于:

定义一个画笔


3️⃣ 选择 Aperture

复制代码
D10*

表示:

当前使用 D10 这个画笔


4️⃣ 绘图指令(核心)

Gerber 本质就是这 3 种:

指令 含义
D01 draw(画线)
D02 move(移动)
D03 flash(打孔/盖章)

示例

复制代码
X100000Y200000D02*  // 移动
X150000Y200000D01*  // 画线

相当于:

js 复制代码
moveTo(10,20)
lineTo(15,20)

5️⃣ 文件结束

复制代码
M02*

五、Gerber 支持的图形

RS-274X 支持:

类型 说明
线段 直线
圆弧 G02 / G03
Flash 打一个 aperture
Polygon G36 / G37 区域

圆弧示例

复制代码
G02*
X100000Y100000I5000J0D01*

这类似 SVG:

复制代码
G2 X Y I J

六、Gerber 图层类型

PCB 一块板通常包含多个 Gerber 文件:

文件 含义
.gtl top copper
.gbl bottom copper
.gto silkscreen
.gts solder mask
.gko board outline
.drl drill file

七、Drill 文件(Excellon)

钻孔文件通常是:

复制代码
T01C0.800
X10000Y20000

它不是 Gerber

而是 Excellon 格式

本质也是坐标指令


八、Gerber 的图形逻辑(重点)

⚠️ Gerber 不是"路径文件"

它是:

用画笔扫出来的结果

例如:

一个 0.1mm 线宽的线段

其实是一个长方形区域

如果你直接转 SVG path,

你必须决定:

  • 还原成中心线?
  • 还是转成填充区域?

tracespace 默认输出:

👉 填充区域 SVG


九、Gerber 内部如何解析?

如果你要自己写解析器,流程是:


Step 1:预处理

  • 删除注释
  • 拆分 *
  • 解析 %...% 参数块

Step 2:解析 Header

  • 单位
  • 坐标格式
  • 极性

Step 3:构建 Aperture 表

js 复制代码
{
  10: { type: 'circle', diameter: 0.01 },
  11: { type: 'rect', w: 0.05, h: 0.03 }
}

Step 4:状态机解析绘图

需要维护:

js 复制代码
{
  currentX,
  currentY,
  currentAperture,
  interpolationMode, // linear / arc
}

Step 5:构建几何图形

你要决定:

  • 输出 path
  • 输出 polygon
  • 输出 boolean union 结果

这就是 tracespace 在做的事情。


十、Gerber 与 SVG 的本质区别

Gerber SVG
指令语言 结果描述
基于画笔 基于路径
有单位 px
有极性 没有

十一、Gerber 与 GCode 的关系

有趣的是:

Gerber 和 GCode 本质非常像:

Gerber GCode
D01 G1
D02 G0
G02 G2
G03 G3

但:

Gerber 是绘图

GCode 是刀具路径


十二、你现在要注意的关键问题

你必须思考:

1️⃣ 是否保留线宽?

如果不保留,你会丢失铜箔宽度

2️⃣ Drill 如何处理?

必须转为:

复制代码
G0 X Y
G81 Z-...

3️⃣ 单位如何统一?

Gerber 可能 inch

SVG 是 px


十三、相同用途的文件格式

PCB 制造常见格式:

格式 用途
Gerber 铜层、丝印
Excellon 钻孔
ODB++ 整套制造数据
IPC-2581 新一代标准
DXF 有些厂支持

十四、如果你要写自己的简化解析器

你可以只支持:

  • 线段
  • 圆弧
  • Flash
  • 不支持宏

就能解析 80% Gerber 文件


十五、总结一句话

Gerber 本质是:

用"画笔"扫出来的图形描述语言

而不是:

中心线矢量路径文件


相关推荐
Love Song残响1 天前
影视工厂渲染优化指南:提升效率与降低成本的实用策略
图形渲染
John_ToDebug6 天前
像素的生命之旅:深度解析Chrome渲染管线的完整架构
chrome·架构·图形渲染
3DVisionary10 天前
掌控发动机“心脏”精度:蓝光3D扫描在凸轮轴全尺寸检测中的应用
3d·图形渲染·汽车发动机·精密测量·蓝光3d扫描·凸轮轴检测·形位公差
玖釉-13 天前
探索连续细节层次(Continuous LOD):深入解析 NVIDIA 的 nv_cluster_lod_builder
c++·windows·图形渲染
玖釉-13 天前
核心解构:Cluster LOD 与 DAG 架构深度剖析
c++·windows·架构·图形渲染
玖釉-16 天前
深入浅出:渲染管线中的抗锯齿技术全景解析
c++·windows·图形渲染
ysn1111117 天前
兰伯特和半兰伯特光照模型
图形渲染
OCKHrYfK17 天前
微网优化调度:Matlab + Yalmip 实现之旅
图形渲染
成都渲染101云渲染666617 天前
渲染速度慢怎么办?如何将 Maya 渲染速度提升成百上千倍(通用方法)
人工智能·图形渲染·blender·maya·houdini