
1. 先搞清楚镜像层到底在镜像什么1.1 为什么需要镜像层PCB 出 Gerber 时镜像这个词几乎是每个画板子的人都会碰到的但真正把它讲清楚的人不多。最常见的一个场景就是底层丝印。你在 Bottom Overlay 上放一个 GND 标记正面看它是反的只有翻到背面看才是正着的。如果你的产品底面正好朝外或者需要在背面露出字符标识工厂在丝印工序里就需要一张“从背面看可读”的底层字符图。Gerber 文件本身并不知道哪一面是正面它存的只是坐标集合。想让底层字符在视觉上正过来就必须在导出时对底层做一次坐标反射也就是我们说的镜像。第二个常见场景是阴阳板。某些低成本小板子为了节省板材会在一张板卡里同时排布正面朝上和背面朝上的两个子板。背面朝上的那个子板其全部底层图形都需要以镜像形式输出否则拼板后方向就反了。这种事情通常在 Layout 阶段会处理但如果布局已经冻结、改动成本高就会要求在导出环节用镜像解决。第三个容易被忽略的是对齐一致性。镜像并不只是“把某个图层左右颠倒”那么简单。如果一块六层板的 Gerber 里五层是正向输出只有底层丝印单独做了镜像那工厂在 CAM 阶段把各层叠在一起对孔位时大概率会出现坐标对不上的报警。原因是底层丝印的坐标经过反射后和钻孔层、底层铜层之间不再共享同一套坐标关系。所以真正实操中“整组配套层一起镜像”比“单独镜像某一层”要常见得多。1.2 镜像和翻转不是一回事新手经常把“翻转板子”和“镜像图形”混为一谈。翻转是视角变化你把板子从桌子拿起来翻到背面看左右关系反了但板子本身的几何坐标一点没变。镜像则是把图形上的所有坐标按照某个轴做反射变换。前者是你看板子的方式变了后者是文件数据本身变了。我习惯用一个透明卡片的例子来解释。你在一张透明片上从左到右写下 A、B、C正面读就是 ABC。把透明片反过来从背面看你看到的是 C、B、A这就是翻转视角。如果你想得到一张胶片让它放在灯光下从正面看就能直接读出 CBA那你就需要把原来的图形做一次镜像变换把所有点沿中轴翻过去生成一份新的坐标。Gerber 的镜像层级操作做的就是后面这件事。在 Altium 里这两者对应两个完全不同的入口PCB 编辑器里的 VB 快捷键只是让你从底面观察板子不影响任何输出文件而真正改变 Gerber 文件坐标的是 Gerber Setup 对话框里层列表中的 Mirror 选项。很多人搞反就是因为先按了 VB发现屏幕上字符都正了就以为导出的文件也会是正的。实际不是屏幕显示和文件坐标是两套系统。2. 22.11 版本后 Gerber 输出到底变了什么2.1 早期版本怎么操作镜像Altium 22.11 之前的版本比如 AD20、AD21 时代Gerber Setup 的 Layers 页里有一个非常显眼的 Mirror 选项。我当时学这个功能流程大概是打开 Gerber Files 对话框选择 Layers 标签页在需要镜像的层前点开下拉选项或者直接勾选 Mirror点确认生成。界面比较直白找得到就不是大问题。那个年代还有个特点Gerber 输出配置跟随着 PCB 文档走版本之间差异也不大。只要项目模板里配好了一次镜像设置后续同系列板子基本都能继承。公司内部做标准化 Output Job 后镜像这件事更像是一次性的配置工作不太需要每次重设。老版本的风险反而是误触。有些人只是临时预览不小心把某一个底层文件勾上了镜像结果整批 Gerber 里就那一层是反的CAM 检查时很难发现到产线对位时才会暴露。2.2 22.11 之后哪里容易踩坑22.11 版本开始Altium 对 Gerber 输出引擎做了一轮重构顺带把界面里很多列的显示方式改成默认精简模式。最直观的变化是打开 Gerber Setup 的 Layers 页层列表只显示层名和 Plot 这类核心列Mirror 列直接藏了起来。第一次看见这个界面的工程师十有八九觉得新版把镜像功能删了。另一个容易踩坑的是 Gerber X2 格式成了默认选项。Gerber X2 在文件头会写入更多层属性信息但它本身并没有一个标准的“镜像”字段。旧工程里保存的镜像状态通过旧 Output Job 迁移到新版本时映射并不可靠。我实测过的结果是有些层勾过的镜像在新版本里被静默忽略有些层干脆丢失了输出属性。如果你公司里的模板没有同步更新同一个人、同一个板子在不同版本电脑上出的 Gerber 甚至方向都可能不一致。坐标格式的默认值也变过。22.11 之后Advanced 页里的默认单位、前导零/后导零、精度设置跟老版本默认值不完全一样。镜像计算依赖精确坐标一旦精度低一位底层孔位和顶层孔位在 CAM 里可能就差出几个 mil。这种问题在正常层上不明显因为大家坐标都是正向但镜像层经过反射后轻微误差会被放大更容易在钻孔对齐时暴露。2.3 先给结论功能并没有删虽然界面变了、默认格式变了但逐层镜像的功能还在。入口只是被收进列设置里需要手动把 Mirror 列调出来。具体做法是在 Layers 页的层列表表头右键在弹出菜单里勾选 Mirror 列。勾出来之后每个输出层旁边都会出现一个可勾选的格子。如果你做完这一步发现还是没有或者这个工程是从老版本迁移来的最稳妥的办法是把 Output Job 删掉重建。不要试图在旧配置上打补丁。新版对旧输出配置的兼容性并不是百分之百重建之后重新设置一遍反而能避免很多隐藏问题。我处理过好几个“镜像莫名失效”的案例最后都是重建 Output Job 解决的。3. 镜像层导出的 4 个可行方案3.1 方案一Gerber Setup 层列表直接勾镜像首选这是最正规、最可控的方法也是我现在最常用的方式。第一步在 PCB 编辑器里打开 File - Fabrication Outputs - Gerber Files。第二步切到 Layers 页在层列表的表头区域右键把 Mirror 列显示出来。如果你是 22.11 之后的默认界面这步是必须做的不做就看不到任何镜像入口。第三步在需要镜像的层行勾选 Mirror。这里需要特别强调不要只勾一层。如果你想让整套底层都以“从底面看图”的方式输出那么 Bottom Copper、Bottom Solder、Bottom Overlay、Bottom Paste 这几层应该一起勾选。如果只勾了 Bottom Overlay到底勾不勾 Bottom Copper取决于你和工厂怎么约定但至少要把配套的阻焊和字符同时处理掉。第四步确认坐标原点和格式。我建议在 Advanced 页把 Format 设置成 2:5单位按公司规范选毫米或英制。不要用默认最小化设置里的 2:3精度不够镜像翻转后小焊盘很容易偏位。第五步生成文件。生成后不要急着发先打开 CAM 工具或者 Altium 自带的 Gerber 查看器把镜像过的层和钻孔层叠在一起选几个特征位置量一下坐标确认没有单层错位。这里有个我自己的习惯凡是做过镜像的层文件名一定加上后缀。Altium 默认会用层名作为文件名一部分但你可以通过 Output Job 的 Naming 设置改成自定义格式比如底层丝印写成 OVL_BOT_M别人拿到文件一看就知道这层是镜像过的。这能省下大量沟通成本。3.2 方案二先用底部视图确认方向再出镜像这个方案不算真正改动 Gerber 输出但能帮你避免方向搞反。适合那种“我完全不记得底面字符当前方向对不对”的情况。在 PCB 编辑器里按 VBAltium 会从底面显示板子。这个时候你再看 Bottom Overlay 上的字符就是板子真正从背面看到的样子。如果文字显示是反的说明当前底层在正向坐标系里是反的导出时大概率需要镜像如果文字已经是正的说明你屏幕上看到的就是“从背面正确阅读”的结果是否还要镜像就得看工厂接收习惯。你还可以顺手测量一些参考坐标。比如记录一个角落定位孔在底面视图里的坐标然后回到 Gerber 设置里勾选对应层镜像后再生成然后检查生成的 Gerber 里这个孔位的坐标是否和你眼睛看到的方向一致。这个方法能帮你建立“视图方向”和“文件坐标”之间的对应直觉用几次之后就不会再搞反。之前在论坛看到一个朋友的案例他把 VB 之后看到的字符方向当成了 Gerber 文件的最终方向结果样板回来后字符全部反了。原因就是 Altium 的底面视图会自动帮你把文本按可读方向渲染但导出的 Gerber 是纯坐标不会自动做这个处理。所以这个方案更多是定位问题用不是替代方案一。3.3 方案三用 CAM 工具做二次镜像有些场景下问题不出在 Altium而是工厂 CAM 环节。比如你从外部拿到一个别人的 PCB 源文件源工程已经丢失只剩一份 Gerber这时候想在 Altium 里改设置根本没有对象只能在文件层面补救。操作大概是把导出的底层文件导入 CAM 工具比如 Altium 自带的 CAMtastic或者免费的一些 Gerber 查看器都可以。选择该文件执行编辑-镜像-按 X 轴或 Y 轴翻转再另存为一个新文件。注意镜像轴的选择要看你和工厂的约定一般以左下角原点做水平翻转比较常见。这个方案的优势是不动 PCB 源文件只对交付文件做后期加工。劣势也很明显容易漏层。底层铜镜像了、底层阻焊忘了结果交货时坐标对不上。而且一旦出厂的是旧版 Gerber这个操作是不可逆的你只能另存副本不能覆盖原文件。所以我只在极特殊情况下用这个方法比如某个文件是别人给的、源工程找不到只能在 Gerber 层面补救。3.4 方案四用脚本 / Output Job 做批量镜像如果你管理的是一整套输出规范比如公司所有板子都要出两套 Gerber一套正向、一套镜像备查那就不要每次手工点。把 Output Job 配置好配合脚本可以做到一键出两套。Output Job 可以添加两个 Gerber 输出通道分别指向不同的输出目录。每个通道对应一份 Gerber Setup 设置其中一个通道把 Mirror 列全部勾上另一个通道保持正向。这套配置保存到工程模板里之后打开任何一个新工程按一下 Process Outputs 就能同时生成两套文件。如果项目多到连 Output Job 都不想手工改可以考虑写一个很小的 DelphiScript 批处理脚本。大致逻辑是遍历某个文件夹下的所有 PCB 文档逐个打开修改 Gerber Setup 里的层镜像属性再执行输出。Altium 的脚本接口里Gerber 设置是通过 IOutputJob 和 IOutput 等对象操作底层接口在不同版本间有些变化这里不展开完整代码。稳妥的做法是先在你自己的环境里录制一次手工操作生成脚本再改循环部分这样能避开很多接口不兼容的坑。4. 实操记录与参数验证4.1 一次完整的镜像导出过程我在一个模拟项目 X 上完整走一遍给大家参考。板子是四层板顶层、内层 2、内层 3、底层客户要求出底面镜像的一套文件用于反面字符工艺。我的操作顺序是先打开 Gerber Files 对话框在 Layers 页显示 Mirror 列然后勾选 Bottom Copper、Bottom Solder、Bottom Overlay、Bottom Paste 这四层同时把钻孔文件里的 Drill Drawing 和 Drill Guide 也打开。为什么钻孔也要一起出因为在 CAM 里验证镜像层时必须拿钻孔层和底层铜互相对坐标否则你看不出镜像是否真的生效。勾完之后我在 Advanced 页把单位选成毫米格式选 2:5尾零填充选择 Suppress trailing zeroes输出目录单独建了 out_dir_gerber_mirror。生成完成后我打开 CAM 查看器导入各个光绘文件把 Bottom Copper 的镜像层和 Drill 文件叠在一起在某一块 BGA 区域选了一个孔查看它在两个文件里的坐标是否一致。正常情况下应该是一致的因为 Altium 在镜像底层的同时会保持镜像层和非镜像钻孔层的相对位置。结果一致就可以放心发出去如果发现某层没勾或者坐标差了一个奇数倍格点马上回去重出。4.2 验证镜像正确性的三个手段第一个手段是文本方向检查。在 CAM 工具里把镜像过的底层丝印放大看字符串是否左右反了。假如设计里你本来写的是 AB出图后是 BA那说明镜像生效如果出图后还是 AB你就得考虑是不是该层没勾上或者这个文件本来就是从旧工程里带出来的非镜像备份。第二个手段是对齐检查。把镜像层和非镜像层的同一条板边对比看它们是否都沿着原点对齐。正常情况下板边、定位孔、工艺边都应在同一坐标范围内。如果你看到某个文件整体跑了半个板子那基本是镜像轴选错或者原点设置不一致导致的。第三个手段是回读检查。Altium 也可以把生成的 Gerber 文件导入回 PCB Editor作为一个临时板子来看。操作是 File - Import - Gerber导入镜像过的文件后选中某个参考点观察它相对原点是否处于预期位置。这个方法能把最终文件结果直接叠加到原设计上比在 CAM 里纯看坐标更直观也更容易发现问题。我在这一步上的经验是验证不要偷懒。误差在屏幕上肉眼很难看出来但 CAM 里的坐标显示是精确到小数点后四位的。每次出完 Gerber我至少会抽查三组关键坐标包括一个板角、一个定位孔、一个靠近中心的器件焊盘。相对误差超过 0.02mm 的都会重新排查绝不往下游发。5. 常见问题与排查实录为了让这部分可以直接查阅我整理了一个常见问题表。问题现象可能原因优先排查方法22.11 之后找不到镜像勾选项Mirror 列默认被隐藏在层列表表头右键显示 Mirror 列勾了镜像但叠加后层错位只勾了部分层没有做整套镜像将底层铜、阻焊、字符、钻孔配套一起镜像出图后字符方向仍然反的镜像轴选择不对或看的是非镜像备份文件先 VB 查看背面确认期望方向再重出从旧工程打开后镜像丢失新旧输出引擎不兼容重建 Output Job按新版重新设置底层孔位和顶层孔位 CAM 里对不上坐标格式精度太低或不同层用了不同格式统一 Advanced 页格式为 2:4 或 2:5镜像后的丝印文字可读但铜箔图形反了镜像的是整个层而不仅仅是文字明确需求是“只镜像字符”还是“整套层镜像”第二条是个非常高发的问题。很多项目里底层字符在 PCB 界面上看是正的用户就觉得“我已经处理好了”出 Gerber 时只勾了底层丝印镜像没管底层铜和钻孔。结果工厂 CAM 一叠层发现底层丝印和底层铜错位最终成品字符压到了焊盘上。字符压焊盘不是绝对不行但如果事先没沟通很容易被当成设计失误来回扯皮。再说一个我遇到过多次的坑多人协作时的版本混乱。A 同事在 22.11 工程里生成了一份镜像 GerberB 同事拿到手后觉得不对直接在文件夹里改了后缀复制了一份完全没重新生成。最后送到板厂的文件名和内容完全对不上。我的建议是镜像文件作为交付物时最好在文件名里带上工程项目名称、板卡版本、版本号和增量号并且由一个人统一发出不要用共享文件夹裸奔。最后是坐标原点的坑。镜像时如果 PCB 原点设置不在板框左下角镜像后的板框可能会跑到负象限。大多数 CAM 工具对负坐标也能处理但部分工厂的下游设备或拼板脚本对负值敏感会导致拼板时整体偏差。我通常会在出 Gerber 前把原点重新放到板框左下角或者在 Advanced 页里勾选 Keep PCB origin保证所有输出文件的起始坐标一致。结尾收个经验这些年和镜像层打交道我最大的体会是版本更新不可怕真正费时间的是旧经验失效后不得不重新踩坑。22.11 之后 Altium 的界面更干净代价是很多原来一眼可见的选项被藏了起来。只要记得去层列表表头右键调出 Mirror 列再按“底层配套层整套镜像”的原则操作大方向就不会错。如果你正在做的板子恰好需要两类 Gerber 同时交付不妨提前把 Output Job 存成模板一正一反两个通道都配好以后每次只要改板名和版本号就行。这一步前期花二十分钟后面能省下几十次重复劳动。镜像这件事说穿了就是坐标变换理解了它后面再遇到类似“某一层方向不对”的制造问题你都能很快推回去。