从设计到制造:手把手教你用 Altium Designer 正确导出 Gerber 文件
你有没有遇到过这样的情况?辛辛苦苦画完PCB,信心满满地把文件发给板厂,结果收到回复:“丝印反了”、“缺钻孔图”、“单位不对导致缩放”……一顿排查才发现,问题出在Gerber 输出设置上。明明只差最后一步,却因为一个勾选项搞砸了整个打样周期。
别担心,这几乎是每个硬件工程师都踩过的坑。而解决它的关键,就是真正理解——如何正确、规范地从 Altium Designer(AD)中导出 Gerber 文件。
今天我们就抛开晦涩术语和模板化流程,像老工程师带徒弟一样,一步步讲清楚这个“看似简单实则暗藏玄机”的核心操作。不靠截图也能懂,重点全在逻辑里。
为什么是 Gerber?它到底是什么?
先说个事实:你的 PCB 工厂根本看不懂.PcbDoc文件。他们需要的是能直接驱动光绘机、钻孔机的“机器语言”。这就是 Gerber 的作用——它是连接你电脑里的设计与现实世界电路板之间的“翻译官”。
它不是图片,而是一套指令集
很多人误以为 Gerber 是一张张“图片”,其实不然。它是一种基于文本的矢量描述格式(标准为RS-274X),记录的是:
- 每条走线从哪到哪
- 焊盘多大、什么形状
- 阻焊层哪里要开窗
- 丝印文字怎么摆放
这些信息被分解成坐标 + 光圈(D-code)的组合命令,就像 CNC 加工路径一样精确。例如这段代码:
%ADD10C,0.3*% → 定义一个直径0.3mm的圆形光圈 D10* → 调用这个光圈 X100000Y80000D02* → 移动到(100,80)位置(准备画) X105000Y80000D01* → 画一条线到(105,80)看到没?这不是图像渲染,而是“动作序列”。所以哪怕输出时少了一个层,或者极性弄反了,做出来的板子就可能完全无法使用。
AD 中导出 Gerber 的本质:一场精准的数据打包
你在 AD 里点几下鼠标生成的.gbr文件,并不是“自动完成”的魔法,而是一个高度可配置的数据转换过程。我们必须主动告诉软件:
- 哪些层需要输出?
- 数据精度要多高?
- 单位是毫米还是英寸?
- 是否包含钻孔符号表?
- 层的极性是否正确(尤其是电源层)?
如果这些问题没处理好,再完美的布局布线也白搭。
实战全流程详解:9步到位,零差错输出
下面我以实际工作流的方式,带你走完一次完整的 Gerber 导出全过程。每一步都附带“为什么这么做”的解释,而不是机械地复制菜单路径。
第一步:输出前必做 —— DRC 和设计冻结
别急着点“导出”,先问自己三个问题:
- 所有网络都连通了吗?
- 器件之间有没有间距违规?
- 板框是不是闭合的?
打开Tools → Design Rule Check,运行完整检查。任何红色标记都必须解决。这是底线。
✅ 小贴士:建议启用“Report All Clearances”选项,确保不会漏掉微小短路风险。
同时确认当前版本是你打算投产的最终版。一旦开始输出,就不要再修改原理图或PCB。
第二步:进入制造输出界面
菜单路径如下:
File → Fabrication Output → Gerber Files注意!这里不要用“Quick Reports”或其他快捷方式,我们要的是完整可控的输出配置。
弹出的对话框有多个选项卡,我们逐个击破。
第三步:General 设置 —— 决定数据“长相”的基础参数
这三个设置直接影响工厂能否正确读取你的文件:
| 参数 | 推荐值 | 说明 |
|---|---|---|
| Units | Millimeters | 国内主流厂家偏好公制,避免单位混淆 |
| Format | 2:5 | 两位整数+五位小数,兼顾精度与兼容性 |
| Zero Suppression | Trailing zeros | 去除末尾无意义的0,提升可读性 |
⚠️ 特别提醒:如果你选了2:4格式但工厂默认2:5,可能导致坐标偏移0.1mm以上!尤其对BGA类器件是致命问题。
第四步:Layers 映射 —— 哪些层该输出?
这才是最关键的一步。常见的输出层包括:
- ✅ Top Layer / Bottom Layer(信号层)
- ✅ Top Solder Mask / Bottom Solder Mask(阻焊层)
- ✅ Top Silkscreen / Bottom Silkscreen(丝印层)
- ✅ Mechanical 1(板框轮廓)
- ✅ Keep-Out Layer(禁止布线区,辅助定位)
🔔 注意事项:
- 如果你用了内电层(Power Plane),它们通常是负片(Negative)输出,即用“挖空”来表示连线。
- 在 Advanced 选项中务必确认“Layer Polarity”设为 Negative,否则会变成全铜皮!
对于普通双面板,一般不需要输出 Testpoint 或 Internal Plane 的正片形式。
第五步:Apertures 光圈设置 —— 默认即可
选择Embedded apertures (RS274X),这意味着所有光圈定义都会嵌入到每个 Gerber 文件内部,无需额外提供.apt文件。
这是现代标准做法,几乎所有厂商都支持。除非对方明确要求外置光圈文件,否则绝不更改此项。
第六步:Advanced 高级选项 —— 避坑关键区
这里有三个容易出错但又常被忽略的设置:
| 选项 | 推荐设置 | 含义 |
|---|---|---|
| Mirror layers | ❌ 不勾选 | 防止丝印镜像翻转(常见错误来源) |
| Include unconnected mid-layer pads | 视需求 | 多层板盲埋孔设计时启用 |
| Plot layer labels | ✅ 可勾选 | 每个文件顶部标注层名,方便识别 |
📌 经验之谈:曾有个项目因误勾“Mirror layers”,导致所有丝印文字反向印刷。板子回来后只能靠贴标签补救,成本翻倍。
第七步:Drill Drawing —— 让工厂知道“孔在哪”
虽然钻孔数据主要由 NC Drill 文件提供,但很多厂家仍希望在 Gerber 中看到钻孔图示(Drill Drawing),用于视觉核对。
勾选Generate drill drawings,并选择参考层(如 Mechanical 1),系统会自动生成带钻孔符号表的图纸。
💡 提示:你可以提前在机械层画好基准点或对齐标记,帮助工厂快速定位。
第八步:点击 OK,生成文件
确定所有设置无误后,点击 OK。AD 会提示你选择输出目录。
完成后你会看到类似以下文件:
Gerber_Output/ ├── TopLayer.gbr ├── BottomLayer.gbr ├── TopSolderMask.gbr ├── BottomSolderMask.gbr ├── TopSilkScreen.gbr ├── BottomSilkScreen.gbr ├── Mech1.gbr ├── DrillDrawing.gbr ├── NC Drill.txt └── GerberJob.rp其中.rp是报告文件,记录了每一层的输出状态,建议保留归档。
第九步:必须验证!用 Gerber Viewer 自查一遍
永远不要相信“我以为是对的”。一定要亲自加载查看。
推荐工具:
- GC-Prevue(免费,Windows,轻量高效)
- ViewMate by Pentalogix(功能强,适合复杂板)
- 在线工具: https://www.pcbonline.com/gerber-viewer.htm
加载所有层后,重点检查:
| 检查项 | 问题表现 | 如何发现 |
|---|---|---|
| 缺失层 | 某一层完全空白 | 查看文件列表是否齐全 |
| 丝印反向 | 文字镜像显示 | 对比原始PCB视图 |
| 阻焊开窗过大 | 焊盘周围绿油太多或太少 | 放大观察Solder Mask层 |
| 板框断裂 | 边缘不闭合 | 使用Viewer的轮廓检测功能 |
| 极性错误 | 电源层显示为实心而非镂空 | 负片应呈现“挖洞”效果 |
发现问题?回去改设置,重新输出,再验证。直到万无一失。
常见问题与“救命”方案
❌ 问题1:丝印全部反了!
原因:不小心勾选了 “Mirror layers”。
修复方法:回到 Advanced 选项卡,取消勾选,重新输出对应层。
✅ 预防措施:创建团队统一模板,锁定该选项。
❌ 问题2:工厂说没有钻孔信息
真相:你只导出了 Gerber,忘了 NC Drill 文件!
补救步骤:
1. 菜单 →File → Fabrication Output → NC Drill Files
2. 设置单位与格式一致(同样是 mm + 2:5)
3. 输出.drl文件并一同打包发送
⚠️ 注意:有些工厂要求 Excellon 1 或 2 格式,可在设置中切换。
❌ 问题3:Gerber 打开是空白一片
可能原因:
- 没有勾选要输出的层
- 当前PCB文档中该层根本没有图形
- 机械层编号错误(比如你想输出 Mech1,却勾了 Mech2)
排查思路:
1. 回到 Layers 选项卡,确认勾选正确
2. 切换回PCB编辑器,按L键打开 View Configurations,检查目标层是否有内容
3. 确保板框是在你指定的那个机械层上绘制的
❌ 问题4:坐标错乱,整体缩小10倍
典型症状:BGA 引脚全部挤在一起。
根源:单位或格式不匹配!
比如你输出的是2:4,但工厂按2:5解析,相当于小数点多算一位。
解决方案:
1. 在压缩包中加入一个README.txt文件,写明:All Gerber files are in MILLIMETERS. Format: 2:5 (leading zeros suppressed). No scaling required.
2. 提前与板厂沟通确认其接受格式
进阶技巧:让输出不再重复劳动
当你频繁打样或多版本迭代时,手动设置太耗时间。以下是两种提效方式:
方法一:使用 OutJob 模板实现一键输出
Altium 的Output Job File(.OutJob)可以保存完整的输出配置,包括:
- Gerber 设置
- NC Drill 输出
- 装配图(Assembly Drawings)
- 坐标文件(Pick and Place)
- BOM 表格
创建一次后,以后只需双击运行,即可批量生成全套生产资料。
🧩 团队协作建议:将
.OutJob文件纳入 Git 管理,确保所有人使用相同输出标准。
方法二:脚本自动化(适用于企业级流程)
对于大型项目或 CI/CD 流程,可用 Delphi Script 实现无人值守输出:
procedure ExportGerberFiles; var FDO: TFabricationDocumentationOutput; begin if PCBSystemOptions = nil then Exit; FDO := TFabricationDocumentationOutput.Create; try FDO.OutputDirectory := 'Outputs/Gerber'; FDO.GerberSettings.Unit := gerUnitsMillimeters; FDO.GerberSettings.Format := fmt2_5; FDO.GerberSettings.ZeroMode := zmodTrailingZeros; // 添加必要层 FDO.GerberSettings.AddLayerToFile(pcblayerTopLayer); FDO.GerberSettings.AddLayerToFile(pcblayerBottomLayer); FDO.GerberSettings.AddLayerToFile(pcblayerTopSolderMask); FDO.GerberSettings.AddLayerToFile(pcblayerBottomSolderMask); FDO.GerberSettings.AddLayerToFile(pcblayerTopSilkScreen); FDO.GerberSettings.AddLayerToFile(MechanicalLayer(1)); FDO.GenerateDocumentation; ShowMessage('✅ Gerber 文件已生成!'); finally FDO.Free; end; end;这类脚本可集成进构建系统,实现“提交代码 → 自动生成制板文件”的闭环。
最后的忠告:别让细节毁掉努力
Gerber 输出虽只是设计流程的最后一环,但它决定了你前面几十小时的心血能否顺利落地。
记住这几个原则:
- 命名清晰:用
TOP_CU.gbr、BOT_SMD.gbr这类名字,比GERBER1.GBR强十倍。 - 打包完整:除了 Gerber,一定要包含钻孔、坐标、BOM、叠层说明。
- 沟通前置:不同板厂有不同的偏好,提前问清楚再动手输出。
- 自我验证:不看 Gerber Viewer 就发文件 = 开车不系安全带。
- 建立模板:一次标准化,终身受益。
当你下次按下“Generate”按钮时,希望你能感到踏实而不是忐忑。因为你知道,每一个参数背后都有它的意义,每一次输出都是对工艺的尊重。
而这,正是优秀硬件工程师的底气所在。
如果你在实际操作中遇到了其他奇怪问题,欢迎留言交流,我们一起拆解解决。