在电路设计这块, 目前还绕不开 gerber 文件的工程交互, 所以来了解一下.
目前官网的文档gerber-layer-format-specification-revision-2022-02_en.pdf.
gerber 文件是一个ascii码的命令文档, 格式比较简单,主要命令有下面这些
命令 |
名称 |
说明 |
G04 |
注释 |
对文档生成没有影响 |
MO |
模式 |
设置单位是 毫米(mm) 还是英尺(inch) |
FS |
格式 |
指定坐标格式, 比如用10进制 |
AD |
画板定义 |
使用D命令进行绘画 |
AM |
画板宏 |
定义一个画板模板 |
Dnn(nn>=10) |
自定义会话 |
自定义会话编码 |
D01 |
绘画操作 |
|
D02 |
移动点到目标位置 |
|
D03 |
复制 |
复制目标到指定位置 |
G01 |
|
设置线型绘画模式 |
G02 |
|
设置到顺时针圆弧绘画模式 |
G03 |
|
设置到逆时针圆弧绘画模式 |
G75 |
|
G75必须在定义了一个圆弧绘制后定义 |
LP |
极化 |
|
LM |
镜像 |
|
LR |
旋转 |
|
LS |
缩放 |
|
G36 |
|
语句块开始,如轮廓定义 |
G37 |
|
语句块结束 |
AB |
绘画语句块 |
|
SR |
分步重复 |
|
TF |
|
设置文件属性 |
TA |
|
设置画板属性 |
TO |
|
设置对象属性 |
TD |
|
删除属性 |
M02 |
|
结束 |
- 基本约束
-
坐标
-
角度
-
单位设置格式
MO = '%' ('MO' ('MM'|'IN')) '*%';
如: %MOMM*%
建议使用 MM, IN以后可能会不兼容.
-
格式定义
FS = '%' ('FS' 'LA' 'X' coord_digits 'Y' coord_digits) '*%';
coord_digits = /[1-6][5-6]/;
如: %FSLAX36Y36*%
下面的数字就是3+6的模式, 即X123123456表示123.123456, Y23456为0.023456.
一般都是定义 MM 和6位精度, 坐标也可以使用符合, 默认是正数, 必须要有数字, 0也不能省.
-
AD 命令
AD = '%' ('AD' aperture_ident template_call) '*%';
template_call = template_name [',' parameter {'X' parameter}*];
aperture_ident 画板编号 x 在[10, 2^32-1] 之间, D00-D09用于特殊功能.
template_call 通过指定参数调用模板确定一个画板形状.
如果定义大小为0, 那么该画板无效. 圆可以定义为0,
如: %ADD10C,.025*%
和 %ADD10C,0.5X0.25*%
.
命令 |
形状 |
参数 |
C |
圆 |
直径[,孔] |
R |
正方形 |
X,Y,[,孔] |
O |
椭圆形 |
X,Y[,孔] |
P |
多边形 |
外径, # 边数[,旋转[,孔]] |
-
AM 命令
画板模板命令可以定义复杂的图形,并且重复多次调用在AD中.
AM = '%' ('AM' macro_name macro_body) '%';
macro_name = name '*';
macro_body = {in_macro_block}+;
in_macro_block =
|primitive
|variable_definition
;
variable_definition = (macro_variable '=' expression) '*';
macro_variable = '$' positive_integer;
primitive = primitive_code {',' par}*
par = ',' (expression);
主要参数说明:
参数 |
说明 |
macro_name |
模板名称 |
macro_body |
模板体 |
Variable definition |
变量定义 |
Primitive |
原始形状 |
Primitive code |
原始标识 |
Parameter |
参数 |
样例:
%AMTriangle_30*
4,1,3,
1,-1,
1,1,
2,1,
1,-1,
30*
%
Primitive
编码 |
名称 |
参数 |
0 |
注释 |
|
1 |
圆 |
显示,直径,CX,CY[,旋转] |
20 |
端点直线 |
显示,线宽,SX,SY,EX,EY,旋转 |
21 |
中心直线 |
显示,线宽,线长, CX,CY,旋转 |
4 |
外接线 |
显示,#子点数,SX,SY,其他点…,旋转 |
5 |
多边形 |
显示,#边数, CX,CY,直径,旋转 |
7 |
辐射圆环弧 |
CX,CY,外径,内经,缺口间隙,旋转 |
显示 - 0 隐藏, 1 显示
旋转 - 逆时针为正