news 2026/5/9 11:02:24

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/5/3 18:53:59

F-23 双麦回音消除模块:60dB 消回音 + 低功耗,音频设备的降噪利器

F-23双麦阵列模块:60dB超强消回音&#xff0c;全场景清晰通话 在智能门禁、车载通话、远程会议等场景中&#xff0c;回音干扰、环境噪音、设备适配难一直是音频产品的痛点。今天给大家分享一款高性价比的语音处理方案 ——F-23 双麦阵列回音消除模块&#xff0c;用专业 DSP 芯片…

作者头像 李华
网站建设 2026/5/6 20:28:44

初学者如何上手BERT?智能填空镜像快速部署入门必看

初学者如何上手BERT&#xff1f;智能填空镜像快速部署入门必看 1. 这不是“读论文”&#xff0c;而是真正能用上的中文语义填空工具 你有没有试过在写文案、改作文&#xff0c;或者教孩子学古诗时&#xff0c;卡在一个词上半天想不出最贴切的表达&#xff1f;比如看到“春风又…

作者头像 李华
网站建设 2026/4/23 23:31:17

MinerU金融报表提取实战:结构化表格识别部署教程

MinerU金融报表提取实战&#xff1a;结构化表格识别部署教程 在金融行业&#xff0c;每天都要处理大量PDF格式的财报、研报、审计报告和监管文件。这些文档往往包含多栏排版、复杂表格、嵌入图表和数学公式&#xff0c;传统OCR工具提取效果差、结构丢失严重&#xff0c;人工整…

作者头像 李华
网站建设 2026/5/6 7:29:31

cv_unet_image-matting模型可以替换吗?UNet架构扩展性分析与升级教程

cv_unet_image-matting模型可以替换吗&#xff1f;UNet架构扩展性分析与升级教程 1. 为什么需要替换cv_unet_image-matting模型&#xff1f; 在实际使用中&#xff0c;你可能已经注意到这个图像抠图WebUI虽然开箱即用、界面友好&#xff0c;但背后运行的cv_unet_image-mattin…

作者头像 李华
网站建设 2026/5/8 11:16:01

新手教程:如何正确添加NES ROM到Batocera整合包

以下是对您提供的博文内容进行 深度润色与工程化重构后的版本 。本次优化严格遵循您的全部要求: ✅ 彻底去除AI痕迹 :语言自然、口语化但不失专业,像一位资深嵌入式游戏系统工程师在技术分享; ✅ 打破模板化结构 :删除所有“引言/概述/总结”等刻板标题,以真实开…

作者头像 李华