news 2026/10/7 1:25:51

KiCAD生产文件导出全流程:Gerber、钻孔、坐标与BOM指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
KiCAD生产文件导出全流程:Gerber、钻孔、坐标与BOM指南

1. 生产文件到底是一包什么东西,先弄明白再点导出

很多人在 KiCAD 里画完板子,点一下导出,把压缩包丢给板厂就完事了,结果过两天收到一封"工程确认"邮件,说钻孔对不上、阻焊层缺失、丝印压焊盘。返工一轮,打样周期从五天变成十天。我自己前几年就吃过这个亏,一块四层板因为阻焊层没导出,硬生生多等了一周。

所以这篇东西先解决一个认知问题:KiCAD 输出生产文件不是"点一个按钮",而是一套有交付标准的动作。板厂要的是能直接驱动光绘机、钻机、贴片机的数据集合,工厂的 CAM 工程师拿到之后只会做两件事:检查、然后上线。你给的东西越标准,他确认得越快;你给的东西含糊,他就得回头找你,时间全耗在沟通上。

这篇文章面向三类人:刚学会 KiCAD 拉线、第一次要下单打样的新手;从别的 EDA 工具转过来、不熟悉 KiCAD 导出逻辑的老手;以及做小批量生产、需要把导出差事流程化的小团队。我会把每一层文件是干什么的、参数为什么这么填、导出后怎么自己验一遍,按我实际的作业顺序讲清楚。看完之后你应该能做到:一块常规双层或四层板,从 KiCAD 到可下单的 Gerber 包,二十分钟内搞定,而且不用麻烦板厂来问。

1.1 Gerber 层文件的组成与命名逻辑

Gerber 是 PCB 行业通用的光绘数据格式,本质上是把每一层铜箔、阻焊、丝印、外形轮廓用矢量指令描述出来。KiCAD 在导出时,是按层逐个生成独立文件的,这一点和某些工具一次性打包不同,理解它很重要,因为你要自己判断哪些层该导出、哪些不该。

一块最普通的双层板,最少需要这几层:

层名(KiCAD 内)输出文件作用是否必须
F.Cu / B.Cu顶层、底层铜箔走线与铺铜必须
F.Mask / B.Mask顶层、底层阻焊开窗必须
F.Silkscreen / B.Silkscreen顶层、底层丝印字符建议
Edge.Cuts板框外形轮廓必须
F.Paste / B.Paste钢网开孔(贴片用)打样可不给,量产必须
F.Adhesive / B.Adhesive点胶层极少用
F.Courtyard / B.Courtyard元件占地范围,仅供 DRC 用不导出

四层板再补上 In1.Cu、In2.Cu 两层内电层。这里有个新手最容易犯的错:把 Courtyard 或者 User.Drawings 之类非制造层一起导出了。这些层里可能有一堆标记线、尺寸标注、备注文字,板厂 CAM 工程师看到会一脸问号,轻则打电话问你,重则当成真实图形做进板子里。我在第一块自制板上就干过这事,把 User.Comments 里的手写备注一起导出去了,好在当时只是打样五片,白白浪费了一百多块钱。

关于命名,KiCAD 有两个选择:一是默认的板名-F_Cu.gbr这种带下划线的长名字,二是勾选Use Protel filename extensions之后的.GTL、.GBL、.GTS、.GBS、.GTO、.GBO、.GKO这套老式扩展名。国内绝大多数板厂两种都认,但小厂的老 CAM 软件对 Protel 扩展名识别更稳。我的习惯是问一句工厂的工程:"你们习惯哪种后缀?"一次问清楚,后面所有订单都省事。如果懒得问,用 Protel 后缀基本不会出错。

1.2 钻孔、坐标、BOM 三件套各自的作用

Gerber 层只能描述二维图形,它没法告诉钻机"这里要钻一个 0.3mm 的孔"。所以钻孔数据必须单独出一个 Excellon 格式文件。这个文件里列出了所有过孔、插件孔、安装孔的坐标和直径,是板厂钻孔工序唯一的依据。KiCAD 会把 PTH(金属化孔,也就是电镀过的过孔和插件焊盘)和 NPTH(非金属化孔,比如螺丝安装孔)分开,你可以选择合成一个文件,也可以分开成两个。

元件坐标文件(Component Placement,常叫 POS 或者 Pick and Place)是给贴片厂用的,里面记录了每个贴片元件的位号、X/Y 坐标、旋转角度、所在的板面。贴片机的编程工程师拿到这个文件,加上你自己的物料,就能直接跑机。注意这个文件有两个关键陷阱:一是坐标原点必须和 Gerber 一致,二是旋转角度的定义各家工厂理解不完全一样,出问题的话返工成本很高。

BOM(Bill of Materials)不是 Gerber 包的一部分,但它是采购和贴片的核心文档。KiCAD 的 BOM 是通过原理图导出的,不是在 PCB 编辑器里导出,这一点很多人第一次会找不到位置。BOM 里至少要包含位号、数量、元件值、封装、以及你自己加的立创编号或者供应商料号字段。

三件套凑齐,才算一个完整的、可以进入生产的交付包。缺任何一个,工厂都得停下来等你。

1.3 一份能直接下单的交付包长什么样

我把自己的交付习惯列出来,你可以直接照抄这个目录结构:

项目名_日期/ ├── gerber/ │ ├── 板名.GTL / .GBL / .GTS / .GBS / .GTO / .GBO / .GKO │ ├── 板名.TXT (钻孔文件) │ └── 板名.gbrjob (Gerber 任务文件,可带可不带) ├── pos/ │ └── 板名-top.csv / 板名-bottom.csv ├── bom/ │ └── 板名_BOM.xlsx └── readme.txt (板厚、层数、阻焊颜色、表面处理、是否拼板)

readme.txt这一步是很多人的盲区。Gerber 里不包含工艺信息,板厚 1.0mm 还是 1.6mm、阻焊黑色还是绿色、表面处理是喷锡还是沉金、要不要阻抗、要不要阻抗测试报告,这些全靠你文字说明。写清楚这一页纸,能省掉至少两封工程确认邮件。我现在的做法是把这些参数直接拼在压缩包文件名上,比如控制板_2层_1.6mm_绿油白字_喷锡_20250401.zip,工厂一眼就看明白了。

2. 动手之前:把板子本身收拾干净

导出只是最后一秒钟的动作,真正决定这批板子能不能一次过的,是导出之前那半小时的排查。我的经验是,导出前花十分钟检查,能省掉三天返工。这一章讲的就是这十分钟该看什么。

2.1 DRC 与丝印、焊盘的排雷清单

第一件事,按一下F8(Update PCB from Schematic),确保 PCB 和原理图完全同步。网表不同步是"板子做出来功能不对"的头号原因,而且它在 Gerber 里是看不出来的,只能靠这一步拦下来。

第二件事,跑Design Rules Checker(检查 > 设计规则检查器)。跑完之后重点看三类报错:

  • 未连接项(Unconnected Items):哪怕只有一根线没连,也要确认是你故意的(比如预留的跳线位)。
  • 间距冲突(Clearance Violation):多数是走线离焊盘太近,板厂能做到的最小间距是有限的,常规工艺 6mil(0.15mm)比较稳,别贪那一点空间。
  • 丝印压焊盘(Silkscreen overlap):这个是"警告"级别,但后果很实际。板厂的常规处理是直接削掉压在焊盘上的丝印,于是你的位号就变成半个字,插件时找元件要找半天。

关于丝印,还有两个细节容易被忽略。一是丝印线宽别低于 0.15mm,低于这个值,丝印工序会有断线或者糊字的风险,尤其是小批量打样。二是位号要重排一次(原理图里"标注 > 标注原理图"),避免出现 R?、C? 这种未命名的位号。带着问号导出的 BOM,采购看了会崩溃。

注意:DRC 里的"警告"不是让你无脑忽略。我的做法是把每一条警告都点开看一眼,确认无害之后才放过。真正的坑往往就藏在"应该没事吧"那句侥幸里。

2.2 叠层、板厚与阻抗参数怎么定

叠层信息在 KiCAD 里通过Board Setup(板设置)> Physical Stackup配置。这里的重点不是 KiCAD 能算多准,而是你要和板厂说清楚。因为同一块四层板,不同板厂的压合结构不一样(半固化片型号、铜厚、介质厚度都不同),阻抗能不能做到你要的 ±10%,取决于工厂的叠层能力。

我的实际做法是:设计阶段按常规参数走线,比如 50 欧姆单端阻抗,在 1.6mm 四层板上通常对应 6mil 线宽配 6mil 到目标层的介质厚度。导出之后,我在 readme 里注明"J1 到 U1 之间需要 50Ω 阻抗控制",让板厂按他们的叠层去微调线宽。不要自己算完了就锁死,因为工厂一定会按自己的工艺微调,你配合他反而更快。

板厚方面,1.6mm 是默认值,也是最便宜的选项。做薄板(0.8mm、1.0mm)成本会略高,而且要看工厂有没有现货板材。特殊板厚下单前问一句,能避免"下完单被告知做不了"的尴尬。

2.3 原点设置:一个最容易被忽略的前置动作

这个动作只有两步,但漏掉它,贴片厂一定会来找你。

第一步,在 PCB 编辑器里点放置 > 钻孔/放置文件原点(Drill/Place File Origin),把原点放到板子的左下角,最好是对齐板框。第二步,导 Gerber、导钻孔、导坐标时,都选择"绝对原点(Absolute)",别用页面原点(Page Origin)。

为什么要这么做?因为贴片机的编程逻辑是:以原点为基准计算每个元件的相对位置。如果你用页面原点,而页面原点在板子外面很远的地方,坐标值就会变成一堆大数值,有些贴片厂的软件处理超大坐标时会精度丢失,贴出来整体偏移。我遇到过最离谱的一次,贴片厂反馈说"你们的坐标全是正的,但我们机器要求相对板框",最后只能重新导出。现在我把设置原点定成导出流程的第一步,再也不会忘。

3. Gerber 与钻孔文件的导出全过程

准备工作做完,正式开工。KiCAD 的导出入口有两个:图形界面的文件 > 绘图(Plot),以及命令行的kicad-cli。这一章先讲图形界面,因为它是理解参数含义的基础;命令行放到后面单独讲。

3.1 绘图对话框里每一项参数怎么填

打开文件 > 绘图,会弹出一个对话框。里面的参数看着多,其实分四组,我按我的填法逐条说。

输出目录:单独建一个gerber子目录,别和工程文件混在一起。混在一起的结果就是打包的时候漏层,这种错误在电脑上很难发现,因为文件名长得都差不多。

绘图格式:选Gerber。同目录下还有 PostScript、SVG、DXF、PDF、HPGL 等选项,那些是做文档和机械加工用的,不要拿去给板厂。

层选择:按 1.1 节的表勾选。这里有个省事的小技巧,勾选完常用层之后,可以保存成一个自定义的"图层组",下次直接调用。四层板的勾选顺序建议固定成:铜层 → 阻焊层 → 丝印层 → 钢网层 → 外形层,从上到下过一遍,不容易漏。

选项区,逐个说:

  • 绘制边框和标题栏:不勾。勾了之后板框外会多出一圈图纸边框和标题栏文字,板厂看到会来问你这是不是要铣掉的图形。
  • 绘制封装参考号和值:建议不勾。这两个是显示在铜层或者丝印层的辅助文字,正常生产不需要。如果你的丝印层已经单独放了位号,就更不该勾。
  • 从丝印中减去阻焊:建议勾上。这个选项的作用是自动把压在焊盘上的丝印切掉,避免上面说的削字问题,属于 KiCAD 的贴心功能。
  • 使用 Protel 文件名扩展:按 1.1 节的结论决定。
  • 使用 X2 格式的 Gerber 属性:建议勾。X2 格式会在文件里嵌入网络名、元件位号等属性信息,某些板厂的 CAM 软件能直接读取,减少人工比对。老厂不认也没关系,不影响图形。
  • 生成 Gerber 任务文件(.gbrjob):可选。它描述了层结构,属于加分项,勾上不亏。
  • 钻孔标记:选"无"或者"实际尺寸"。选"小"会在 Gerber 里画一个示意小圆,虽然可选忽略,但有些老 CAM 会误读,我一般直接选"无"。

填完之后,点"绘图",KiCAD 会在指定目录里生成一堆文件,同时弹出一个"图纸信息"列表,告诉你每层生成成功还是失败。这个列表必须看一眼,失败的那层通常是因为该层是空的,如果你确认该层本来就该有内容,那说明有问题了。

3.2 钻孔文件:格式、单位与原点

钻孔文件在文件 > 制造输出 > 钻孔文件里。参数看起来更专业,其实关键就四个。

格式:选Excellon。这是全球通用格式,没有第二个选项。

单位:毫米(mm)。国内工厂习惯毫米,用英寸虽然也能读,但多一层换算就多一份误差风险。

零点格式:选十进制格式(Decimal format),不要选"抑制前导零"或者"抑制后置零"。这是老式数控机床留下来的历史包袱,现在的工厂软件都支持十进制,选十进制最直观、最不容易出歧义。之前有朋友用了"抑制前导零",结果工厂读出来的孔位整体偏移了一点点,查了两天才发现是格式问题。

钻孔原点:绝对(Absolute),和 2.3 节设置的原点保持一致。

另外两个勾选项:

  • PTH 和 NPTH 分开成两个文件:如果板子上有非金属化安装孔,建议分开。有些板厂会默认所有孔都做电镀,分开之后就不会搞混,安装孔被镀上铜会导致螺丝短路或者装不进去。
  • 生成钻孔图:可选,生的是给人看的图纸,不是给机器用的数据。自己留档挺有用。

点"生成钻孔文件"之后,会多出一个.drl(用 Protel 后缀则是.TXT)。这个文件绝对不能漏,我在 1.2 节说过,它是钻孔工序的唯一依据。我见过有人只发了 Gerber 就下单,结果板厂默认"没有钻孔数据",直接按 Gerber 里画的焊盘中心盲钻,结果过孔没镀铜,整批报废。

3.3 导出后的自检:用 Gerber 查看器逐层核对

导出完不等于结束,必须自己先看一遍。KiCAD 自带的Gerber 查看器(GerbView)就够用,也在开始菜单里。

打开之后,把刚才导出的所有文件一次性全部加载进去,然后把层叠显示打开。核对顺序我固定成四步:

  1. 看板框:Edge.Cuts 应该是完整闭合的一圈。如果哪里断了,板厂铣外形的时候会有毛刺甚至切错,这是最严重的问题之一。
  2. 看铜层与钻孔对齐:把钻孔文件叠在铜层上面,所有过孔应该正好落在焊盘中心。如果整体偏移,说明原点设置不一致;如果个别偏移,说明那个封装本身有问题。
  3. 看阻焊层:阻焊开窗应该比焊盘略大一圈,通常是单边 0.05mm 左右。如果某个焊盘完全没有开窗,贴片的时候焊不上去。
  4. 看丝印:位号应该在元件旁边,不压焊盘、不超板框、字号别太小。

这四步走完,五分钟都用不了,但它拦下来的问题往往就是"整批报废"级别的。GerbView 还有个隐藏用法:文件 > 导出到 PCB,可以把 Gerber 反向还原成一个 PCB 文件。我自己做过一次实验,把别人给的 Gerber 还原出来,能验证数据完整性,也能看到原本封装的位置关系,挺有意思。

提示:如果工厂提供了在线 DFM 检查工具,把 Gerber 包传上去跑一遍也是好办法。等于多一个人帮你看,而且不花钱。这一步和本地自查不冲突,两个都做最稳妥。

4. 贴片坐标、BOM 与拼板工艺的额外处理

如果你的板子要上贴片机,光有 Gerber 还不够。这一章讲的是"从光板到成品板"路上另外三个必须整理的东西。

4.1 元件坐标文件(POS)的导出要点

入口是文件 > 制造输出 > 元件放置文件。参数里最要紧的三项:

格式:选CSV。部分工厂也接受 ASCII 文本,但 CSV 拿 Excel 打开就能核对,沟通成本最低。

单位:毫米。理由和钻孔文件一样。

使用钻孔/放置文件原点:勾上。这就是 2.3 节埋下的伏笔,勾了之后坐标基准才和 Gerber、钻孔完全一致。

导出的文件里通常有这些列:位号、元件值、封装、X 坐标、Y 坐标、旋转角、所在板面。核对的重点是旋转角。不同 EDA 工具对"0 度"的定义方向不一样,KiCAD 的定义和某些工厂的贴片机默认定义可能差 90 度。最稳的办法是先小批量试贴十片,确认方向没问题再上量。我现在的习惯是,第一次合作的新贴片厂,一定先做十片的"验证批",一百来块钱的事,能省掉整批返工。

另外,要不要分顶层和底层两个文件,看工厂要求。有的是分开给,有的是给一个文件带"层"这一列,问一句就行。

4.2 BOM 导出与字段整理

BOM 从原理图编辑器导出,不是 PCB 编辑器。KiCAD 默认的 BOM 导出走的是脚本或者内置的 CSV 导出(不同大版本菜单位置不太一样,一般在工具 > 生成 BOM或者文件 > 制造输出 > BOM附近),出来的 CSV 是"每个元件一行",需要你自己按值分组。

我更推荐的做法是:导出原始明细,然后在表格软件里自己整理成"分组 BOM",也就是相同型号的元件合并成一行,数量相加,位号并列。整理后的样子大概是:

位号数量值封装备注
C1,C2,C5,C84100nF040250V X7R
R1,R4210k04021%
U11主控QFN-32需确认货期

封装这一列必须写清楚尺寸和引脚间距,比如"0402"、"SOP-8"、"QFN-32_5x5mm_P0.5mm"。只写"贴片电容"是没用的,采购和工厂都要靠这一列去对应物料。我吃过一次亏,封装写了"0603"但实际是"0603 宽体",贴片机吸嘴选错了,一批板子上的元件全部虚焊,返工花了半天。

还有一个进阶做法:在原理图元件属性里提前加好LCSC 或者其他供应商的料号字段,导出 BOM 时一起带出来。这样采购拿到表格直接可以下单,不用再一个个查。小团队做量产的时候,这个习惯能省下大量来回。

4.3 拼板、工艺边与 Mark 点的落地做法

板子尺寸小的时候(比如 30mm × 20mm),单板打样成本高、贴片也不方便,通常要拼板。KiCAD 自身没有专门的拼板工具,实际有两条路:一是直接在 PCB 编辑器里复制粘贴单板,排成阵列;二是用独立的拼板工具生成。

复制粘贴这条路,关键在"复制的对象是什么"。如果你用的是"特殊粘贴",会连网络一起复制,容易出现网络名冲突或者 DRC 报错;如果用普通粘贴,则只复制图形,网表不跟着走。我一般复制之后立刻跑一次 DRC,把新增的报错清干净,再手动补上线。

拼板必须加的两样东西:

  • 工艺边:在板的上下或者左右加一条 5mm 到 8mm 宽的边料,用于贴片机的传送轨道夹持。工艺边和板之间用V-CUT或者 **邮票孔(mouse bites)**连接。V-CUT 适合直的边界,邮票孔适合异形或者需要分板应力的场合。注意邮票孔要做成 NPTH 孔,直径一般 0.5mm 左右,孔间距 0.8mm 到 1.0mm。
  • Mark 点(基准点):贴片机的视觉定位用。通常在对角位置各放一个,直径 1.0mm 的实心铜盘,周围留出 2mm 左右的阻焊开窗,不能被丝印或者走线干扰。Mark 点必须放在 Copper 层上,而且要在阻焊层开窗,只画个圆在丝印层是不起作用的。

还有一点:拼板之后,元件坐标文件也要按拼板的阵列导吗?多数情况不用,贴片厂可以自己按单板坐标加偏移。但拼板的 Gerber 必须是拼好的整版。这两者的关系第一次做容易搞混,问一句工厂的工程就清楚了。

5. 踩过的坑:常见问题与排查速查

前面讲流程,这一章讲故障。下面这张表是我自己踩过、也被别人问过的问题汇总,基本覆盖了九成以上的导出事故。

现象最可能的原因排查方法
板厂说缺少某一层绘图对话框里没勾选,或勾了但该层为空打开 Gerber 查看器,逐层加载,缺哪层一目了然
钻孔和焊盘整体错位Gerber 用绝对原点、钻孔用页面原点检查两处原点设置是否一致,重新导出
铜箔图形左右镜像误选了镜像输出,或者把底层当顶层用在查看器里叠三层对比,底层的文字应该是反的才算正常
某个焊盘没有阻焊开窗该焊盘的阻焊层被手动改过,或者被丝印减去的选项影响单独加载阻焊层放大检查
丝印缺字、被削掉一半丝印压在焊盘上,板厂自动削除回到 PCB 把位号挪开,或用"从丝印中减去阻焊"提前处理
非金属化孔被镀了铜PTH 和 NPTH 没有分开导出重新导出并勾选分开,同时在 readme 里注明
贴片整体偏移坐标文件原点和 Gerber 不一致统一用钻孔文件原点,重新导出坐标
贴片元件方向反了旋转角定义差异先试贴十片验证,必要时在表格里统一加 90 度
板子外形有多余的线条User 层或者图纸边框被一起导出了检查勾选列表,取消非制造层

5.1 层缺失、镜像与焊盘丢失

这三类问题占了我早期事故的绝大部分,它们的共同点是在 PCB 编辑器里完全看不出来,因为屏幕上显示的是正常的,只有导出之后才会暴露。

层缺失最好查,用 Gerber 查看器把所有文件加载一遍,看列表有没有少。但要注意一个迷惑现象:如果某一层是空的,KiCAD 有些版本会直接不生成文件,而不是生成一个空文件。比如你双面板的底层丝印只放了一个位号,导出的文件可能是正常的;但如果底层丝印一个东西都没有,那就可能压根不生成文件。这时候不用担心,工厂也不需要有内容。

镜像问题相对少见,但后果严重。判断方法很简单:底层的丝印文字在查看器里看起来是反的(镜像的),这是正确的,因为从底层往上看本来就是反的。如果底层的文字看起来正着,那反而说明你导出时把底层镜像翻转了。这个逻辑第一次接触会绕,多叠几次就形成肌肉记忆了。

焊盘丢失一般不是导出问题,而是封装本身的问题。有些第三方封装库里的焊盘层设置不完整,比如只有 Paste 层没有 Cu 层。DRC 有时候也不报,导出后才露馅。我的做法是尽量用 KiCAD 自带的官方库,第三方库导入后一定逐个检查焊盘的层设置。

5.2 钻孔与焊盘错位、槽孔识别问题

钻孔错位的原因前面说过,九成是原点不一致。剩下的一成里,有一半是**槽孔(Slot)**的问题。

槽孔就是长条形孔,比如 USB 接口两侧的固定槽、某些连接器的定位槽。KiCAD 支持在焊盘属性里设置"椭圆形"或者自定义形状来生成槽孔。但不同版本的 Excellon 格式对槽孔的编码方式不一样,有些板厂的老软件会把槽孔识别成两个普通圆孔,甚至直接忽略。

我的处理办法有两个:一是导出钻孔文件时用Excellon 的 G85 槽孔格式(如果版本提供这个选项),兼容性更好;二是在 readme 里明确写"板上共有 X 个槽孔,尺寸分别是……",让工厂的 CAM 工程师人工确认一遍。加一句话的事,能避免机械加工阶段出错。

还有一种情况是孔壁太薄。比如一个 0.3mm 的孔周围焊盘只有 0.1mm 的环宽,工厂的钻孔公差就会把焊盘钻掉。经验值:焊盘外径至少要比孔径大 0.25mm(也就是单边 0.125mm 环宽),低于这个值就要问工厂的工艺能力了。

5.3 与板厂、贴片厂沟通的文件命名与话术

技术问题之外,还有一类"软"问题:怎么和工厂说清楚你要什么。我的经验是,文件命名比正文说明更有效,因为工程人员是先看文件名再看内容的。

命名规范我固定成这样:项目名_层数_板厚_阻焊颜色_字符颜色_表面处理_数量.zip。举例:电源板_4层_1.6mm_黑油白字_沉金_10片.zip。一个文件名把九个关键参数说全,工厂拆包之前就知道该上哪条线。

如果板子有特殊要求,我在邮件正文里按这个顺序写:先是板子基本信息,然后是特殊工艺(阻抗、盲埋孔、特殊板材),最后是交期要求。一次把话说全,不要挤牙膏式地一封封补。工厂的工程每天处理几十个订单,来回三次他就把你排到最后了。

贴片厂的沟通重点不一样:先确认坐标文件的原点和角度定义,再确认 BOM 里的封装是否都能识别,最后确认元件的来料方式(是你们提供,还是工厂代购)。元件代购要提前确认货期,我遇到过一次 U1 的主控芯片货期八周,板子做完了在那儿等芯片,白白压了一个月的库存。

6. 把导出流程自动化:命令行与一键打包

手工点一遍流程,熟练之后十几分钟,但如果是经常改版、频繁打样的项目,一天导五六次也够烦的。KiCAD 从 7.0 开始提供了比较完整的命令行工具kicad-cli,可以把整个导出流程写成脚本。

6.1 kicad-cli 常用命令速查

下面这几条是我日常用得最多的,参数名在个别版本之间可能有出入,用--help确认一遍再跑,这是个好习惯。

# 导出 Gerber,指定层 kicad-cli pcb export gerbers \ --output ./output/gerber/ \ --layers F.Cu,B.Cu,F.Silkscreen,B.Silkscreen,F.Mask,B.Mask,Edge.Cuts \ --subtract-soldermask \ ./board.kicad_pcb # 导出钻孔文件 kicad-cli pcb export drill \ --output ./output/gerber/ \ --format excellon \ --drill-origin absolute \ --units mm \ --generate-map \ ./board.kicad_pcb # 导出元件坐标 kicad-cli pcb export pos \ --output ./output/pos/ \ --format csv \ --units mm \ --use-drill-file-origin \ --side both \ ./board.kicad_pcb # 从原理图导出 BOM kicad-cli sch export bom \ --output ./output/bom/bom.csv \ --fields "Reference,Value,Footprint,Description" \ ./board.kicad_sch # 顺手出一个 3D 模型,方便发给结构同事 kicad-cli pcb export step \ --output ./output/3d/ \ --subst-models \ ./board.kicad_pcb

跑完这五条,输出目录里就是一套完整的交付素材。相比手工点,命令行的好处是参数固化了,不会出现"这次忘了勾某个选项"的问题。而且它天然适合放进版本管理,改了什么一眼能看到。

6.2 一键生成交付包的脚本思路

把上面的命令包进一个 Shell 脚本,再配上自动打包,就是一套完整的自动化流程。思路是这样的:

#!/usr/bin/env bash set -e PROJ="board" DATE=$(date +%Y%m%d) OUT="./release/${PROJ}_${DATE}" mkdir -p "$OUT/gerber" "$OUT/pos" "$OUT/bom" "$OUT/3d" kicad-cli pcb export gerbers --output "$OUT/gerber/" \ --layers F.Cu,B.Cu,F.Silkscreen,B.Silkscreen,F.Mask,B.Mask,Edge.Cuts \ --subtract-soldermask "${PROJ}.kicad_pcb" kicad-cli pcb export drill --output "$OUT/gerber/" \ --format excellon --drill-origin absolute --units mm "${PROJ}.kicad_pcb" kicad-cli pcb export pos --output "$OUT/pos/" \ --format csv --units mm --use-drill-file-origin "${PROJ}.kicad_pcb" kicad-cli sch export bom --output "$OUT/bom/bom.csv" \ --fields "Reference,Value,Footprint" "${PROJ}.kicad_sch" cd "./release" && zip -r "${PROJ}_${DATE}.zip" "${PROJ}_${DATE}" echo "打包完成:release/${PROJ}_${DATE}.zip"

set -e是关键,任何一条命令失败就立刻停,避免生成一个"看起来完整其实缺一半"的包。这个坑我踩过:某次钻孔导出失败了,但脚本继续往后跑,最后打了个包发给工厂,第二天才被发现。

关于脚本,还有两点实战建议。一是把日期写进目录名,这样每次生成的包不会互相覆盖,出问题能回溯。二是在打包前加一步自动核对,比如检查gerber目录里文件数量是否等于预期层数,少了就报警退出。三行代码,能拦住大部分低级错误。

如果你用 Git 管理工程,还可以把这个脚本挂到持续集成里,每次提交自动生成一包生产文件作为产物。新手可能觉得没必要,但当你一周改三版、每版都要打样的时候,这种自动化能明显降低出错概率。社区里最近也有一些把 KiCAD 操作接入 AI 助手工作流的玩法(比如通过 MCP 这类协议,让助手直接调用导出命令),本质上还是调用同一套命令行,只是入口更顺手了。有兴趣可以了解一下,但底层逻辑还是这一章讲的东西。

6.3 版本差异与升级时要注意的地方

KiCAD 这两年版本迭代比较快,社区里讨论新版本的消息也多。升级的时候有三件事要注意:

第一,菜单名称和位置会变。绘图对话框在不同大版本里的选项组织有明显变化,比如"从丝印中减去阻焊"这类选项可能挪到别的位置。照着一篇老教程找不到按钮的时候,先检查版本号,别怀疑人生。

第二,导出参数的默认值可能变。有些版本默认打开 X2 格式,有些默认关闭;钻孔的零点格式默认值也调整过。所以每次升级之后,一定拿一块已经量产过的板子重新导一次,和老包对比。文件数、层名、大小都对得上,才说明升级没影响流程。

第三,文件格式的向后兼容是单向的。新版本存的工程文件,旧版本通常打不开。所以团队协作时,大家的版本最好统一,或者至少确认一下最低版本。我见过因为版本不一致,同事打开工程后封装全丢的情况,虽然不至于丢数据,但也够折腾一阵子。

我的习惯是:大版本升级前先备份整个工程目录,然后在虚拟机里装新版本跑一遍完整导出流程,确认无误之后再换到主力机上。看着麻烦,但比"升级当天发现流程跑不通"要轻松得多。

最后分享一个我一直在用的小技巧:在工程目录里放一个release文件夹,并且把它加进.gitignore。每次导出都往里面丢,定期清理旧的。这样工程目录本身保持干净,历史交付包又随时能翻出来对照。上次一块板子做了三次改版,靠这个文件夹里的三份旧包,五分钟就定位出是哪次改动引入了问题,比翻聊天记录找压缩包快多了。

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

基于Web停车场管理系统:JAVA源码、数据库SQL与论文整合实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/7 1:24:16

RISC-V MCU子系统设计:ITCM、DTCM与Slave-AHB接口的工程实践与避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/7 1:24:11

单片机控制板异常排查六步法:从电源到干扰全流程指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/7 1:24:11

FSDB波形生成与截取实战:vfast原理、fsdb_filter命令与跨工具链兼容

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/7 1:23:41

错排问题详解:从递推公式到通项公式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/7 1:23:41

动态规划背包问题全解析:从01背包到多重背包的优化与细节

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华