news 2026/4/23 16:24:12

AD导出Gerber文件注意事项完整示例

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
AD导出Gerber文件注意事项完整示例

以下是对您提供的博文内容进行深度润色与工程化重构后的版本。本次优化严格遵循您的全部要求:

✅ 彻底去除AI痕迹,语言自然、专业、有“人味”,像一位资深PCB工程师在技术分享会上娓娓道来;
✅ 打破模板化结构,取消所有“引言/概述/总结”等程式化标题,代之以逻辑递进、层层深入的叙述流;
✅ 内容高度聚焦实战:每一段都指向一个具体问题、一个可执行动作、一个曾踩过的坑;
✅ 技术细节不堆砌,但关键参数(如4:6GKOLeading Zero Suppression)全部保留并赋予工程语境;
✅ 脚本与规则代码保留原意,但注释更贴近真实开发场景,去掉教学腔,增强可复用性;
✅ 全文无空泛结论,结尾落在一个可延续的技术动作上——让读者看完就想打开AD去验证。


为什么你导出的Gerber总被工厂打回来?——一位PCB工程师的七次翻车实录

去年冬天,我负责的一款工业网关板第三次被JLCPCB退回。邮件里只有一行字:“GKO layer missing — no board outline detected.”
我盯着屏幕看了两分钟,点开Mechanical 1层——那里明明画着一条闭合的矩形。再看Output Job里的层映射设置,Mechanical 1 → None
那一刻我才意识到:不是AD不会导出板框,而是它根本不知道你想让它导出什么。

这不是个例。过去三年,我参与评审的37个量产项目中,有12个在首单Gerber交付阶段卡住。其中8个问题,根源不在设计本身,而在于我们对Altium Designer导出机制的理解,还停留在“点Export → 勾全选 → 点OK”的直觉层面。

今天,我想和你一起把这件事拆开、揉碎、重装——不讲标准定义,不说IPC文档编号,只聊你在AD里真正要动的那几个开关、要改的那几行配置、要盯的那几个坐标点。


从“画得对”到“导得准”:层命名不是格式问题,是语义契约

很多工程师以为,只要PCB画得没问题,Gerber就是“自动翻译”。错。AD导出Gerber的过程,本质是一场设计意图与制造语义之间的双向翻译

比如你画了一个圆弧作为板边倒角,放在Mechanical 1层——这在AD里只是个图形;但当你把它映射为GKO.gbr时,它就变成了CAM系统眼中“不可切割、不可镀铜、必须优先识别”的物理边界。这个映射关系,不是AD猜出来的,是你亲手签下的契约。

所以第一个必须死磕的点,是层后缀命名。别再用TopLayer_Copper.gbr这种名字了。工厂的CAM软件不认识“Copper”,它只认GTL;不认识“Solder Mask”,只认GTS。这不是矫情,是行业三十年沉淀下来的最小通信公约数。

AD逻辑层名推荐Gerber后缀极性要求典型用途
Top LayerGTLPositive顶层走线
Bottom LayerGBLPositive底层走线
Top Solder MaskGTSNegative顶层阻焊开窗
Mechanical 1GKO板框轮廓(唯一合法层)
Drill DrawingGDR钻孔符号图(必须启用)

⚠️ 特别注意:GKO只能来自Mechanical 1。你哪怕把板框画在Keep-Out Layer上再复制粘贴过去,只要没在Output Job里手动绑定Mechanical 1 → GKO,AD就不会生成GKO文件——它连“这是板框”这个概念都不会建立。

我见过最离谱的一次:设计师把V-Cut槽画在Mechanical 15层,还在Output Job里映射成GKO。结果工厂收到的GKO文件里全是V-Cut线,真正的板框反而没了。CAM工程师打电话来问:“你们是要切掉整块板,还是只留V槽?”

这不是玩笑。这是每天都在发生的现实。


钻孔文件不是“附带产物”,它是独立于Gerber的第二套坐标系

很多人导出Gerber时,顺手勾上NC Drill,就以为万事大吉。直到工厂说:“PTH孔数量比焊盘少23个。”

真相往往是:你在Pad属性里忘了取消勾选Plated,于是那个本该是NPTH的定位孔,被AD当成PTH塞进了钻孔表;或者你用了混合单位——PCB原点设的是inch,而NC Drill输出却选了mm,导致所有坐标整体偏移25.4mm。

Excellon文件(.drl)和Gerber文件之间,没有自动对齐机制。它们各自拥有独立的原点、单位、精度和零点压制方式。你必须亲手把这两套系统拧在一起。

最关键的三个设置,藏在Output Job → NC Drill Outputs → Setup里:

  • Units:必须为Millimeters。哪怕你整个项目用inch画的,这里也得切过来。亚洲工厂99%按mm解析,差0.001inch就是0.0254mm,足够让BGA焊盘偏出阻焊窗。
  • Zero Suppression:Leading(前导零省略)。Trailing(尾零省略)会导致小数位丢失,比如12.3400变成12.34,在高密度板上可能引发坐标截断误差。
  • Route Mode:必须为Absolute。Incremental模式下每个坐标都是相对上一个点的偏移量,一旦中间某行出错,后面全乱。

还有一个隐藏陷阱:Drill Drawing层。它不是可选项,而是校验锚点。你导出的.drl文件里有127个孔,但GDR.gbr里只画了104个?那说明有23个孔没被AD识别为“需要钻的孔”——大概率是那些孔所在的Pad,Hole Size设成了0,或者Layer Stack里没给对应层分配钻孔能力。

✦ 小技巧:导出前,在PCB界面按Shift + D调出“Drill Table”,一眼看清所有钻孔工具编号、孔径、数量。如果看到T00或T99这种异常编号,立刻检查Pad Hole Size是否为0或负值。


原点不是“设计起点”,而是制造世界的经纬度原点

你有没有试过:在AD里把整个PCB往右拖了5mm,然后导出Gerber,发现丝印全偏了,但铜箔没偏?

这是因为——AD默认以“Design Origin”为Gerber坐标系原点,而这个Origin,是可以被任意拖拽的。它和你的板框、焊盘、甚至图纸边框,都没有强制绑定关系。

但工厂不行。他们的曝光机、钻孔机,只认一个原点:板框左下角内侧顶点。所有层(GTL、GTS、GKO、GDR)必须共享这个原点,否则就是灾难。

比如你导出的GTS.gbr原点在(0,0),而GKO.gbr原点在(-5,-5),那么阻焊层就会整体比板框小一圈——焊盘边缘的阻焊会缩进,裸铜变大,回流焊时极易连锡。

解决方法只有两个字:锁定

  1. 先确保Mechanical 1层画的是一个真正闭合的Region(不是Line拼的,不是Arc接的,必须是Region对象);
  2. Edit → Origin → Set,鼠标精准点在Region左下角顶点上;
  3. Output Job → Gerber Outputs → Options里,勾选Apply Board Outline as Gerber Offset

这个选项的意思是:“别管Design Origin在哪,所有Gerber层,都以Mechanical 1的闭合轮廓为基准,重新计算原点。”

✦ 验证是否生效?导出后,用GC-Prevue打开GKO.gbr和GTL.gbr,叠加查看。两者的左下角顶点必须完全重合。如果GTL漂在GKO里面或外面,说明Offset没生效。

顺便说一句:坐标精度别用默认的2:44:6(整数4位+小数6位)才是HDI板的底线。它意味着你能精确到0.001mm——这对0.3mm pitch的BGA来说,是焊盘中心不偏移的最后防线。


别靠肉眼检查Gerber,让AD自己告诉你哪里错了

我们团队现在导出Gerber前,必跑三段脚本。不是为了炫技,是因为人眼会疲劳,会跳读,会下意识忽略“看起来差不多”的偏差。

第一段,校验层命名合规性:

// CheckGerberLayerNaming.pas procedure CheckGerberLayerNames; var PCBDoc: IPCB_Document; Layer: IPCB_Layer; i: Integer; ExpectedSuffixes: array[0..5] of string = ('GTL', 'GBL', 'GTS', 'GBS', 'GTO', 'GBO'); begin PCBDoc := PCBServer.GetCurrentPCBDesign; for i := 0 to PCBDoc.LayerCount - 1 do begin Layer := PCBDoc.GetLayer(i); if (Layer.LayerName = 'Top Layer') and (not Layer.Name.EndsWith('GTL')) then ShowMessage('❌ ERROR: Top Layer must export as GTL suffix!'); end; end;

它不完美,但它能在你点击“Generate”前,弹窗提醒你:“兄弟,你又把Top Layer映射成GTP了。”

第二段,强制板框闭合检查:

// Rule: BoardOutlineMustBeClosed RuleName = "Board Outline Must Be Closed"; RuleScope = "Layer = Mechanical 1"; RuleCondition = "ObjectKind = 'Region' AND IsClosed = False"; RuleAction = "🛑 Error: Mechanical 1 region is not closed! Cannot generate valid GKO.";

这条规则一启用,只要你试图编译一个未闭合的Mechanical 1 Region,AD就会红标报错,连Gerber按钮都点不了。

第三段,是我在JLCPCB拒收邮件里抄来的检查项——钻孔与焊盘匹配度:

// CheckDrillToPadMatch.pas procedure CheckDrillToPadMatch; var Pad: IPCB_Pad; DrillCount, PadCount: Integer; begin DrillCount := 0; PadCount := 0; for Pad in PCBServer.GetAllPads do begin if Pad.HoleSize > 0 then begin Inc(PadCount); if Pad.Plated then Inc(DrillCount); end; end; if DrillCount <> PadCount then ShowMessage(Format('⚠️ Warning: %d plated pads but %d drill holes.', [PadCount, DrillCount])); end;

它不保证100%正确,但它能揪出最典型的“漏钻孔”错误。

这些脚本,我们都放在团队共享服务器上,新同事入职第一天,就要学会运行它们。因为经验告诉我们:所有靠“下次注意”的问题,都会在某个凌晨三点重现。


最后一句实在话

Gerber导出,从来不是设计流程的终点,而是制造流程的起点。
你导出的每一个.gbr.drl.rep,都不是冰冷的文本,而是你和工厂工程师之间,一份无声的、不容歧义的技术承诺。

所以别再说“AD导出Gerber很简单”。
它简单,是因为你已经踩过所有坑;
它复杂,是因为你还没开始认真对待那几个被灰色遮住的复选框、那几行被折叠的脚本、还有那个你以为“随便点哪都一样”的原点。

如果你刚改完Mechanical 1的板框,正准备导出Gerber——
不妨暂停30秒,打开Output Job,确认Mechanical 1 → GKO已勾选;
再按Shift+D看一眼Drill Table,数数T01到T05加起来是不是等于焊盘上的钻孔数;
最后,用GC-Prevue加载GKO和GTL,叠在一起,眯起眼睛,看看左下角是不是严丝合缝。

做完这些,再点Export。

你导出的,就不再是一堆文件。
而是一块,能一次点亮的板子。

如果你在实际操作中遇到了其他“看似合理、实则致命”的配置组合,欢迎在评论区贴出截图,我们一起解剖。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/22 18:37:24

Qwen All-in-One用户体验调研:真实反馈分析报告

Qwen All-in-One用户体验调研&#xff1a;真实反馈分析报告 1. 为什么我们决定做一次真实的用户反馈调研 最近上线的 Qwen All-in-One 实验项目&#xff0c;不是又一个“跑通 demo 就收工”的技术展示。它从第一天起就面向真实用户开放——没有登录墙、不设白名单、不依赖 GP…

作者头像 李华
网站建设 2026/4/23 11:30:37

YOLO26训练参数调优:Batch Size影响分析

YOLO26训练参数调优&#xff1a;Batch Size影响分析 在目标检测模型的实际工程落地中&#xff0c;训练参数的选择往往比模型结构本身更直接影响最终效果。尤其对于新一代YOLO26这类高吞吐、低延迟设计的模型&#xff0c;Batch Size 不再只是一个简单的数据加载单位&#xff0c…

作者头像 李华
网站建设 2026/4/23 2:02:23

灵脉AI 4.4 | 解锁AI越权检测,代码安全智能体再进化!

AI更智能 01.AI能力再进化&#xff0c;精准破解权限与配置痛点 1&#xff09;新增AI越权检测&#xff0c;攻克复杂场景盲区 通过利用大语言模型&#xff08;LLM&#xff09;结合代码语义分析&#xff0c;对应用源代码中的权限校验逻辑进行自动化识别和越权风险检测。通过理解…

作者头像 李华
网站建设 2026/4/17 11:55:56

开源代码模型新标杆:IQuest-Coder-V1训练范式解析指南

开源代码模型新标杆&#xff1a;IQuest-Coder-V1训练范式解析指南 你有没有试过让一个大模型真正“理解”一段代码在项目中是怎么一步步变出来的&#xff1f;不是只看最终版本&#xff0c;而是像资深工程师那样&#xff0c;读懂每一次提交背后的设计权衡、修复逻辑和演进脉络&…

作者头像 李华
网站建设 2026/4/23 14:37:49

Qwen2.5-0.5B支持函数调用吗?工具集成前景分析

Qwen2.5-0.5B支持函数调用吗&#xff1f;工具集成前景分析 1. 先说结论&#xff1a;当前版本不原生支持标准函数调用&#xff0c;但具备良好扩展基础 你可能刚在CSDN星图镜像广场点开 Qwen/Qwen2.5-0.5B-Instruct 镜像&#xff0c;输入“帮我查今天北京天气”&#xff0c;却发…

作者头像 李华