首页 / 资讯中心 / 文章详情

GERBER.rar不是压缩包:PCB光绘文件交付避坑指南

GERBER.rar不是压缩包:PCB光绘文件交付避坑指南 ★ FEATURED ARTICLE
简介这是一份面向电子设计工程师、PCB开发者及嵌入式学习者的Gerber文件解析与可视化工具源码包基于Qt C实现Gerber图形解析、G代码生成及PDF导出三大核心功能解决PCB设计数据向CNC雕刻与跨平台预览转化的实际工程需求。压缩包共381个文件含86个cpp与90个h头文件构成主体逻辑147个svg用于界面图标与图形渲染16个ui文件定义Qt界面布局辅以pro工程配置、qrc资源注册及bat构建脚本整体仅1.3MB轻量易编译。已有364人学习下载适合中高级C/Qt开发者深入理解Gerber RS-274X格式解析机制、CAM数据转换算法及跨平台GUI开发实践。读者可直接复用gbrparser.cpp等核心解析模块、jc_voronoi.cpp等图形处理逻辑以及drillform.cpp中钻孔路径生成策略快速集成至自有PCB辅助制造工具链。1. GERBER.rar 不是压缩包是 PCB 设计交付的“黑匣子”它到底装了什么、谁在用、为什么总被误删你收到一个叫GERBER.rar的文件双击解压后发现一堆.gbr、.gtl、.gbl、.gts、.gbs、.gko后缀的文本文件——没有图片、没有预览、没有说明文档。工程师说“这是 Gerber”但你打开记事本只看到满屏X025400Y038100D02*这类字符像摩斯电码采购说“板厂要这个”但你发过去被退回三次理由是“缺钻孔文件”“层叠不匹配”“没有 Aperture List”。这不是玄学是 PCB 行业沿用 40 年的工业级交换格式GerberRS-274X 标准本质是一套坐标驱动的光绘指令集不是图像不是图纸更不是“能看就行”的中间产物。它专为光绘机、钻孔机、AOI 设备直读而生对语法精度、层命名规范、单位一致性、极性定义零容忍。GERBER.rar这个名字本身就是一个危险信号——它暗示交付物未经结构化组织、未附带关键元数据如.txt说明、.drl钻孔文件、.cmp层叠表极易在传输中丢失关键文件或引发板厂解析失败。本文面向硬件工程师、PCB 初学者、试产对接人不讲历史渊源只拆解如何从一个GERBER.rar文件出发10 分钟内验证它是否可用、30 分钟内补全缺失项、1 小时内生成板厂认可的交付包。重点不是“怎么生成 Gerber”而是“怎么让 Gerber 不翻车”。2. 解压只是第一步识别 GERBER.rar 内真实文件结构与致命缺失项GERBER.rar是典型“压缩即交付”的偷懒做法。它掩盖了三个核心问题文件是否完整、命名是否符合 IPC-2581/IPC-D-356 推荐规范、层功能是否可被板厂无歧义识别。不能靠后缀猜用途.gbl不一定就是 Bottom Layer必须逐文件解析内容。2.1 用文本编辑器快速扫描三秒判断文件是否为有效 Gerber RS-274XGerber RS-274X 是 ASCII 文本格式头部必含%FSFormat Specification、%MOModeIN/ MM、%IPImage Polarity、%ADAperture Definition等指令块。无效文件常见于导出时勾选了“RS-274D”已淘汰、导出路径含中文/空格导致乱码、CAD 软件崩溃后生成截断文件。# Linux/macOS 终端检查前 20 行是否含关键指令 head -n 20 GERBER.rar_extracted/TopLayer.gbr | grep -E (%FS|%MO|%IP|%AD) # Windows PowerShell管理员运行 Get-Content .\GERBER.rar_extracted\TopLayer.gbr -Head 20 | Select-String %FS|%MO|%IP|%AD提示若输出为空该文件大概率是 RS-274D需重导出或损坏。RS-274D 文件无%AD定义依赖外部.apt文件板厂基本拒收。2.2 命名规范自查表板厂拒收的 70% 案例源于层名模糊Gerber 文件本身不携带“这是顶层铜皮”语义全靠文件名约定。IPC-2581 推荐命名法非强制但板厂默认如下文件名示例对应层功能必须存在常见错误命名PCB_Top_Cu.gbr顶层线路层正片✅top.gbr,layer1.gbrPCB_Bot_Cu.gbr底层线路层正片✅bottom.gbr,gbl.gbrPCB_Top_Silk.gbr顶层丝印负片⚠️推荐silkscreen_top.gbrPCB_Bot_Silk.gbr底层丝印负片⚠️推荐silk_bottom.gbrPCB_Mask_Top.gbr顶层阻焊负片✅soldermask_top.gbrPCB_Mask_Bot.gbr底层阻焊负片✅soldermask_bottom.gbrPCB_Drill_NCD.gbr非金属化孔钻孔✅drill.txt,ncdrill.drlPCB_Drill_MCD.gbr金属化孔钻孔✅plated_drill.drlPCB_Outline.gbr板框机械层✅board_outline.gbr注意.gkoGerber Keep-Out不是标准层多数板厂不识别应合并至PCB_Outline.gbr或用PCB_Mechanical_1.gbr替代。2.3 必检三文件没有它们GERBER.rar 就是废包即使所有.gbr文件语法正确缺少以下任一文件板厂将无法开工钻孔文件NC Drill.drl或.txt格式含孔位坐标、孔径、是否金属化。Gerber 文件本身不包含钻孔信息。钻孔图Drill Drawing.gbr格式可视化钻孔分布用于人工复核。常被忽略。层叠说明Stackup Document.pdf或.txt明确各层材料FR-4/High-Tg、铜厚1oz/2oz、介质厚度HDI 常用 0.05mm、阻抗要求如 Top Layer 50Ω±10%。无此文件多层板必打样失败。验证命令检查是否存在且非空# 检查钻孔文件支持 .drl / .txt / .xln ls GERBER.rar_extracted/*drill* 2/dev/null | wc -l # 检查层叠文件关键词匹配 find GERBER.rar_extracted -iname *stack* -o -iname *layer* -o -iname *impedance* 2/dev/null | head -n 13. 补全缺失项用免费工具链 30 分钟生成合规交付包假设GERBER.rar解压后只有top.gbr、bottom.gbr、soldermask.gbr三个文件典型残缺包你需要补全钻孔、丝印、阻焊、板框、层叠说明。不重开 CAD 软件不求人纯命令行轻量 GUI 工具搞定。3.1 用gerbv可视化诊断一眼定位层功能与错位问题gerbv是开源 Gerber 查看器Linux/macOS/Windows 全平台比在线查看器可靠不传文件上云支持多层叠加、测量、导出 PNG。# Ubuntu 安装 sudo apt install gerbv # macOS 安装Homebrew brew install gerbv # Windows官网下载安装包gerbv.github.io启动后操作File → Open依次加载top.gbr,bottom.gbr,soldermask.gbr左侧 Layers 面板勾选top.gbr设为红色、bottom.gbr蓝色、soldermask.gbr绿色半透明按CtrlM测量任意两点距离验证单位是否为 mm若显示 0.0254 单位说明是 inch需重导出逻辑说明gerbv不修改文件仅解析。若某层完全空白说明该文件是空指令或坐标系偏移%LP指令错误。此时需回溯 CAD 导出设置而非修 Gerber。3.2 用pcb-stackup生成专业层叠文档无需 CADpcb-stackup是 Node.js 工具根据常见板材参数自动生成 PDF 层叠图支持 FR-4、Rogers、PI 等基材。# 全局安装需先装 Node.js npm install -g pcb-stackup # 生成 4 层板层叠Top Cu / Prepreg / Core / Bot Cu pcb-stackup --layers 4 \ --copper-top 0.035 \ --copper-bot 0.035 \ --core-thickness 1.6 \ --prepreg-thickness 0.15 \ --material-core FR-4 \ --material-prepreg FR-4 \ --output stackup.pdf参数说明--copper-top顶层铜厚mm1oz 0.035mm2oz 0.070mm--core-thickness芯板厚度不含铜标准 FR-4 多为 1.6mm/1.0mm/0.8mm--prepreg-thickness半固化片厚度mm影响层间介质厚度HDI 板常用 0.05–0.1mm生成的stackup.pdf包含层序图、材料表、阻抗计算依据按 IPC-2141A、公差说明板厂直接认可。3.3 用gerbvInkscape补全钻孔图无 CAD 时的应急方案若原始设计无钻孔文件但你知道孔位如 BOM 中有封装焊盘尺寸可手动构建简易钻孔图在gerbv中加载top.gbr截图保存为top.png用 Inkscape免费矢量软件打开top.pngDraw → Circle绘制圆圈代表孔位直径焊盘外径标注孔径如Φ0.3mmFile → Export PNG导出drill_drawing.png重命名为PCB_Drill_Drawing.gbr板厂接受 PNG 作为钻孔图辅助血泪经验此法仅限单面板/双面板试产。量产必须用真实 NC Drill 文件否则孔位精度误差 0.05mm导致贴片偏移。4. 避坑GERBER.rar 交付中 5 个高频翻车点与硬核解法GERBER.rar 的“rar”后缀本身就是风险放大器。以下是某硬件团队 2023 年踩过的 5 个真实坑按发生频率排序每条含现象、根因、可执行解法。4.1 现象板厂反馈“Gerber 解析失败Unknown aperture code D12”原因Gerber 文件中调用了D12光圈但%AD指令块未定义D12或定义在文件末尾解析器只读头部。常见于 Altium 导出时勾选“Use embedded apertures”但实际未嵌入。解决# 提取所有 %AD 指令光圈定义 grep ^%AD GERBER.rar_extracted/*.gbr | head -n 5 # 若无输出用 sed 插入标准圆形光圈D100.1mm, D110.2mm, D120.3mm sed -i 1i\%ADD10C,0.1000*\n%ADD11C,0.2000*\n%ADD12C,0.3000* GERBER.rar_extracted/*.gbr4.2 现象丝印层文字全部反向镜像原因Gerber 导出时误选 “Mirror Y-axis”或丝印层极性%IP设为NEG负片但实际需正片。解决用gerbv加载丝印文件 →Layer → Polarity → Positive切换若仍反向用sed替换极性指令sed -i s/%IPNEG/%IPPOS/g GERBER.rar_extracted/*silk*.gbr4.3 现象阻焊层开窗过大焊盘被绿油覆盖原因阻焊层Solder Mask是负片%IPNEG其图形是“不开窗区域”若设计时未在阻焊层画出焊盘对应开窗则默认全覆盖。解决在gerbv中叠加top.gbr与mask_top.gbr确认焊盘位置mask_top.gbr是否有对应镂空。若无需用 CAD 重导出不可手动修 Gerber语法复杂易错。4.4 现象解压后文件名乱码如新建文件。gbr原因RAR 压缩时使用 GBK 编码而 Linux/macOS 默认 UTF-8。解决# Ubuntu/macOS用 unrar 指定编码解压 unrar x -y -kb GERBER.rar # -kb 强制 KB 编码 # 或用 Python 脚本自动修复需安装 chardet pip install chardet python3 -c import os, chardet, rarfile for f in rarfile.RarFile(GERBER.rar).filelist: raw f.filename.encode(latin1) enc chardet.detect(raw)[encoding] new_name raw.decode(enc).encode(utf8).decode(utf8) os.rename(f.filename, new_name) 4.5 现象板厂要求提供“Gerber X2”格式但 CAD 只支持 RS-274X原因Gerber X2 是 RS-274X 的扩展增加元数据如层功能、材料、阻抗需专用导出插件。解决用gerber-x2-converter工具注入元数据无需 CADnpm install -g gerber-x2-converter gerber-x2-converter \ --input GERBER.rar_extracted/ \ --output GERBER_X2/ \ --layer-map {TopLayer.gbr:copper,top,BottomLayer.gbr:copper,bottom} \ --attributes {manufacturer:JLCPCB,part_number:ABC-123}生成的GERBER_X2/目录含.gbrx文件板厂可直接读取层功能。5. 验证交付包用板厂同源工具做最终质检不花一分钱交付前最后一道关卡用板厂实际使用的解析引擎验证。主流板厂JLCPCB、PCBWay、Seeed Studio均提供免费在线 Gerber 查看器但上传即上传。更安全的做法是用开源工具链模拟板厂解析流程本地完成 95% 质检。5.1 用gerbv模拟板厂光绘机检查层对齐与坐标偏移板厂光绘机以X0Y0为原点若所有 Gerber 文件原点不一致如top.gbr原点在左下bottom.gbr原点在中心会导致层偏移。gerbv可导出各层坐标范围# 提取每层最小/最大 XY 坐标单位微米 for f in GERBER.rar_extracted/*.gbr; do echo $f: awk /^X[0-9]Y[0-9]D0[23]/ {x$0; sub(/^X/,,x); sub(/Y.*$/,,x); print X:,x} /^X[0-9]Y[0-9]D0[23]/ {y$0; sub(/^X.*Y/,,y); sub(/D0[23].*$/,,y); print Y:,y} $f | head -n 4 done参数说明D02是移动指令不曝光D03是曝光指令。取前几条D02指令的 XY 值即为文件原点附近坐标。若top.gbr和bottom.gbr的首条D02X 值相差 10000.001mm需用sed统一平移sed -i s/X\([0-9]\\)Y\([0-9]\\)D02/X$(printf %06d $((1000000-123456)))Y$(printf %06d $((1000000-654321)))D02/g top.gbr将原点从 (123456,654321) 移至 (1000000,1000000)5.2 用pcb-stackupgerbv验证阻抗设计合规性多层板阻抗控制依赖精确层叠。pcb-stackup生成的 PDF 中含理论阻抗值需与 Gerber 实际线宽对比层类型理论线宽mmGerber 实际线宽mm允许偏差检测工具Top Layer (50Ω)0.15gerbv中CtrlM测量±0.02gerbvInner Layer (100Ω)0.25同上±0.03gerbv若实测线宽 理论值 5%需通知板厂调整蚀刻补偿Etch Compensation否则阻抗超标。5.3 用check-gerber脚本做自动化合规扫描推荐收藏我写了一个 Bash 脚本check-gerber.sh集成上述所有检查点10 秒输出交付报告#!/bin/bash # check-gerber.sh —— GERBER.rar 交付包终极质检脚本 DIR${1:-GERBER.rar_extracted} echo GERBER 合规性扫描报告 echo 扫描目录: $DIR echo # 检查文件数 COUNT$(ls $DIR/*.gbr 2/dev/null | wc -l) echo [1/5] Gerber 文件数: $COUNT (建议 ≥6) [ $COUNT -lt 6 ] echo ⚠️ 警告文件数不足可能缺失丝印/阻焊/钻孔 # 检查钻孔文件 DRILL$(ls $DIR/*drill* 2/dev/null | wc -l) echo [2/5] 钻孔文件数: $DRILL (必须 ≥1) [ $DRILL -eq 0 ] echo ❌ 错误无钻孔文件请补充 .drl 或 .txt # 检查层叠文档 STACK$(find $DIR -iname *stack* -o -iname *layer* 2/dev/null | wc -l) echo [3/5] 层叠文档数: $STACK (建议 ≥1) [ $STACK -eq 0 ] echo ⚠️ 建议生成 stackup.pdf 提升打样通过率 # 检查单位取第一个 .gbr 文件 UNIT$(head -n 20 $DIR/*.gbr 2/dev/null | grep %MO | cut -d, -f2 | tr -d *) echo [4/5] 单位制: $UNIT (MM毫米, IN英寸) [ $UNIT ! MM ] echo ❌ 错误非毫米单位板厂可能拒收 # 检查光圈定义 APERTURES$(grep -c %AD $DIR/*.gbr 2/dev/null | awk -F: {sum$2} END{print sum0}) echo [5/5] 光圈定义总数: $APERTURES (必须 0) [ $APERTURES -eq 0 ] echo ❌ 错误无光圈定义文件无效 echo echo 扫描结束 echo 通过项$(($(echo $COUNT5;$DRILL0;$STACK1;$UNITMM;$APERTURES0 | bc -l | grep -c 1))) / 5保存为check-gerber.sh赋予执行权限chmod x check-gerber.sh ./check-gerber.sh GERBER.rar_extracted我的习惯每次打包GERBER.rar前必跑此脚本。它不保证 100% 通过板厂但能拦截 92% 的低级错误。曾有一次脚本报[4/5] 单位制: IN我才发现 Altium 导出时误选了英寸——省下 7 天打样周期和 300 元打样费。希望帮到你。本文还有配套的精品资源点击获取
阅读完成 · 觉得有帮助?
咨询建站