
1. 坐标文件到底是个什么东西坐标文件英文叫 Pick and Place File也有人叫它贴片坐标文件、SMT 坐标文件。干过 PCB 生产的兄弟都清楚这是从设计文件走向物理 PCBA 的必经之路。板子画完、Gerber 导出之后下一步就是把元器件的位置信息交给工厂让贴片机知道哪个料该放在哪个坐标上。Altium Designer 从早期版本到 2024 版输出坐标文件的入口一直在File → Assembly Outputs → Generates Pick and Place Files这个路径下。但很多新手第一次点开这个菜单的时候会懵——弹出来的对话框里一堆选项格式选 CSV 还是 TXT单位选公制还是英制要不要包含镜像底层器件这些选项选错了工厂那边轻则打电话跟你确认重则贴出来的板子全偏。坐标文件本质上就是一张表每一行对应一个元器件列里面包含Designator位号、Footprint封装、Mid X、Mid Y、Rotation旋转角度、Layer所在层这几项核心信息。工厂的 SMT 工程师拿到这个文件配合钢网和物料清单就能把贴片程序编出来。所以这个文件的核心诉求就两个坐标要准角度要对。我见过太多案例板子设计得漂漂亮亮结果坐标文件里旋转角度跟工厂的贴片机坐标系对不上整批板子贴出来电容电阻全歪了 90 度。这种问题在打样阶段还能手焊补救到了批量生产就是灾难。所以别小看这个导出动作里面的门道值得花时间搞清楚。这篇文章适合三类人看刚入行的 PCB 设计新手、经常跟 SMT 工厂打交道的硬件工程师、以及想把自己设计流程标准化的老手。我会把 Altium Designer 2024 输出坐标文件的完整流程拆开讲包括每一步为什么这么做、参数怎么选、踩过哪些坑、怎么跟工厂对接。看完你就能直接上手操作不用再去论坛翻零散的帖子。2. 输出前的准备工作与核心参数决策2.1 为什么坐标原点必须重新设置这是我最想强调的一点也是新手最容易忽略的地方。Altium Designer 默认的原点在你创建 PCB 文件时那个绝对零点通常在板子的左下角很远的地方甚至可能是负数坐标。如果你直接导出坐标文件里的 X、Y 值会是一堆很大的数字工厂那边看着就头疼。正确的做法是在导出坐标文件之前手动把原点设置到板子的一个基准点上。通常选板子的左下角或者选一个 Mark 点作为基准。操作方法是Edit → Origin → Set然后点击板子上你想要的基准位置。为什么这么重要因为 SMT 工厂的贴片机有自己的机械坐标系他们需要把你的坐标文件跟他们的设备坐标系做对齐。如果你给的原点是一个很偏的位置工厂工程师就得自己做偏移换算多一道工序就多一个出错的可能。你把原点设在板子左下角工厂拿到之后直接就能用省事又准确。注意设置原点之后板子上所有器件的坐标都会变成相对于新原点的值。设置之前最好确认一下板框是否已经最终确定因为板框一改原点可能就得跟着调。2.2 单位选择公制还是英制Altium Designer 2024 输出坐标文件时单位选项有Metric公制毫米和Imperial英制密尔两种。我的建议是优先选公制。原因很直接现在主流的 SMT 贴片机尤其是国产设备默认都用毫米作为单位。你给英制文件工厂那边还得乘以 25.4 换算虽然计算不复杂但人为换算就有出错的风险。而且国内大部分工厂的工程规范里坐标文件要求就是公制。当然也有例外。如果你合作的工厂明确要求英制那就按他们的要求来。关键原则是跟工厂确认清楚他们要什么单位然后严格按他们的要求输出。不要自己拍脑袋决定也不要两个版本都发过去让人家选这样只会增加沟通成本。2.3 格式选择CSV 与 TXT 的取舍Altium Designer 支持输出 CSV 和 TXT 两种格式。CSV 就是逗号分隔值文件可以用 Excel 直接打开直观易读。TXT 通常是制表符或空格分隔的纯文本。我个人的习惯是输出 CSV。理由有几个第一CSV 可以直接用 Excel 打开检查你能一眼看到所有器件的坐标和角度方便核对第二大部分工厂的贴片编程软件都支持直接导入 CSV第三万一有问题CSV 用文本编辑器也能打开排查通用性最强。不过要注意一个坑CSV 文件用 Excel 打开时如果位号里含有类似日期格式的字符串比如 R1-2 被识别成日期Excel 可能会自动转换格式导致数据错乱。所以检查的时候最好用文本编辑器或者 Notepad 打开看原始内容确认没问题再交给工厂。2.4 底层器件的镜像处理这是一个技术含量比较高的选项。PCB 有顶层和底层之分底层器件在物理世界里的位置是镜像的。Altium Designer 在输出坐标文件时对于底层器件有两种处理方式保持原始坐标标注 Layer 为 Bottom工厂根据 Layer 字段自行处理镜像输出镜像后的坐标直接给出底层器件在镜像坐标系下的位置主流做法是第一种即输出原始坐标并标注所在层。因为工厂的贴片程序会根据层信息自动做镜像处理你提前镜像了反而可能导致双重镜像。但这个规则不是绝对的有些工厂会要求你输出镜像坐标所以还是那句话——提前跟工厂确认。在 Altium Designer 2024 的 Pick and Place 设置对话框里有一个Include Bottom Layer Components的选项勾上之后底层器件也会包含在输出文件中。这个必须勾否则底层器件就丢了。3. Altium Designer 2024 输出坐标文件完整实操3.1 第一步确认 PCB 设计完整性在导出坐标文件之前先做一轮检查。这一步很多人跳过结果导出的文件里缺器件或者多器件到了工厂才发现问题。检查清单如下所有元器件是否都已经放置到 PCB 上没有遗漏在原理图里的是否有器件被误删或者重复放置器件的位号是否唯一没有重复的 Designator封装是否都正确没有出现封装缺失的情况板框是否已经最终确定尺寸不会再改我一般会按快捷键T → OTools → Outputs先看一眼或者在 PCB 面板里逐个检查器件列表。如果设计是从原理图同步过来的建议先做一次Design → Update PCB Document确保原理图和 PCB 完全一致。3.2 第二步设置坐标原点前面已经讲过原点的重要性这里说具体操作。在 PCB 编辑界面点击菜单Edit → Origin → Set光标会变成十字形然后点击你想要作为原点的位置。通常选板子的左下角顶点。设置完成后你可以按CtrlEnd把视图跳回原点位置确认一下是否设置正确。另外在View → Status Bar里可以看到当前光标相对于原点的坐标移动鼠标到板子右下角看看坐标值是否合理应该是正数且跟板子尺寸匹配。实操心得如果你的板子有工艺边或者拼板原点最好设在拼板后的整体左下角而不是单板的左下角。因为工厂贴片是针对整个拼板进行的原点跟拼板对齐更合理。3.3 第三步打开 Pick and Place 设置对话框菜单路径File → Assembly Outputs → Generates Pick and Place Files。点击之后会弹出Pick and Place Setup对话框。这个对话框里有两列左边是Output Formats输出格式右边是Output Options输出选项。在 Output Formats 里你会看到CSV和Text两个选项分别对应逗号和制表符分隔。我通常两个都勾上CSV 给自己检查用Text 给工厂备用。但如果你确定工厂只要一种那就只勾一种避免混淆。在 Output Options 里有几个关键设置Units选 Metric毫米Include Bottom Layer Components勾选Include Mirrored Bottom Layer Components一般不勾除非工厂明确要求3.4 第四步配置输出列与格式细节在 Pick and Place Setup 对话框的下方有一个Output Columns区域这里决定了 CSV 文件里包含哪些列。默认情况下Altium Designer 会输出以下列列名含义是否必须Designator元器件位号必须Footprint封装名称必须Mid X器件中心 X 坐标必须Mid Y器件中心 Y 坐标必须Rotation旋转角度必须Layer所在层Top/Bottom必须Comment注释信息可选Description描述信息可选我的建议是至少保留前六列Comment 和 Description 看工厂需求。有些工厂的编程软件会读取 Comment 列来做物料匹配那就保留如果工厂只用位号和坐标那就可以去掉让文件更简洁。另外注意Rotation列的角度格式。Altium Designer 默认输出的是器件的实际旋转角度范围通常是 0 到 360 度。但有些贴片机的角度定义跟 Altium 不一样比如有的设备是逆时针为正有的是顺时针为正。这个问题在打样阶段就要跟工厂确认清楚批量生产前最好先做一次首件确认。3.5 第五步生成并检查输出文件设置好之后点击OKAltium Designer 会在项目文件夹下生成一个Project Outputs文件夹里面就是坐标文件。文件名通常跟项目名一致后缀是 .csv 和 .txt。生成之后一定要打开检查。我一般用 Notepad 或者 VS Code 打开 CSV 文件重点检查以下几项器件数量是否跟 PCB 上的实际数量一致位号是否有重复或遗漏坐标值是否都是正数如果原点是板子左下角旋转角度是否在合理范围内底层器件的 Layer 字段是否正确标注为 Bottom如果发现器件数量不对最常见的原因是有些器件被设置成了Exclude from Pick and Place。在 Altium Designer 里每个器件都有一个Assembly属性如果某个器件的Exclude from Assembly被勾上了它就不会出现在坐标文件里。这个属性在器件的 Properties 面板里可以查看和修改。4. 跟 SMT 工厂对接的实战经验4.1 工厂到底需要哪些文件很多新手以为给一个坐标文件就够了实际上工厂需要的是一套完整的资料包。通常包括坐标文件CSV 或 TXTGerber 文件包含各层光绘文件BOM 清单物料清单含位号、型号、封装、数量钢网文件通常是 Gerber 里的 Paste 层装配图PDF 格式标注器件位置和位号坐标文件和 BOM 是配套使用的。工厂的工程师会拿坐标文件里的位号去 BOM 里找对应的物料然后把物料信息和坐标信息一起录入贴片程序。所以坐标文件里的位号必须跟 BOM 里的位号完全一致一个字符都不能差。我遇到过一个问题BOM 里写的是 R1、R2、R3坐标文件里因为某个器件被手动改过位号变成了 R01、R02、R03。结果工厂匹配不上打电话来问。虽然最后解决了但耽误了半天时间。所以导出之前务必核对位号的一致性。4.2 角度偏差的排查与修正角度偏差是坐标文件里最常见的问题。表现就是工厂贴出来的板子某些器件的方向跟设计不符。比如设计里电容是横着的贴出来变成竖着了。这个问题的根源在于Altium Designer 的角度定义跟贴片机的角度定义可能不一致。Altium Designer 里器件的旋转角度是相对于器件封装本身的零点定义的。而贴片机的角度零点通常是基于编带方向或者设备自己的坐标系。解决这个问题的标准流程是先打样让工厂按坐标文件贴几块板检查首件看哪些器件的角度不对记录偏差规律比如所有 0603 封装的电容都偏了 90 度在 Altium Designer 里批量修正这些器件的旋转角度重新导出坐标文件再次确认有些工厂会提供他们自己的角度修正表告诉你哪些封装需要加多少度。拿到这个表之后可以在 Altium Designer 里用Find Similar Objects批量选中同封装的器件然后统一调整旋转角度。注意角度修正最好在 PCB 设计阶段就做好不要等到导出坐标文件之后再改。因为坐标文件是设计文件的衍生品改了坐标文件不改设计文件下次导出又回到原样了。4.3 坐标精度与小数位数坐标文件里坐标值的小数位数也是有讲究的。Altium Designer 默认输出的小数位数通常是 4 位比如 12.3456。但有些工厂的贴片机只支持 3 位小数或者 2 位小数。小数位数太多工厂导入时可能会报错或者自动截断。小数位数太少坐标精度不够贴出来的器件可能偏移。一般来说3 位小数微米级精度足够了。毫米单位下3 位小数就是 0.001mm 的精度远远满足贴片要求。如果工厂有明确的小数位数要求可以在 Altium Designer 的输出设置里调整。不过 Altium Designer 2024 的 Pick and Place 设置里没有直接的小数位数选项通常是通过修改输出格式或者后期用脚本处理。如果工厂要求特殊的小数位数最简单的办法是导出后用 Excel 或 Python 脚本做一次格式化。4.4 常见问题速查表问题现象可能原因解决方法坐标文件里器件数量不对有器件被排除在装配之外检查器件的 Exclude from Assembly 属性底层器件坐标不对镜像处理方式跟工厂不一致跟工厂确认是否需要镜像坐标角度偏差角度定义跟贴片机不一致打样确认后批量修正角度位号跟 BOM 对不上位号被手动修改过导出前核对位号一致性CSV 打开乱码编码格式问题用 UTF-8 编码导出或用文本编辑器打开坐标值太大或为负数原点没有重新设置把原点设置到板子左下角工厂反馈文件打不开格式或分隔符不对确认工厂支持的格式CSV 用逗号分隔5. 坐标文件输出后的验证与版本管理5.1 用 Excel 做交叉验证导出坐标文件之后我习惯用 Excel 做一次交叉验证。具体做法是把坐标文件和 BOM 都导入 Excel用 VLOOKUP 函数按位号做匹配检查两边是否完全对应。这个操作看起来简单但能发现很多隐藏问题。比如 BOM 里有一个器件在坐标文件里找不到或者坐标文件里多了一个 BOM 里没有的位号。这些问题在人工检查时很容易漏掉用 Excel 匹配就能一目了然。具体步骤把坐标文件的 Designator 列复制到新表格的 A 列把 BOM 的位号列复制到 B 列用公式IF(COUNTIF(B:B,A1)0,缺失,)检查 A 列中哪些位号在 B 列中不存在反过来再用IF(COUNTIF(A:A,B1)0,多余,)检查 B 列中哪些位号在 A 列中不存在两边都没有缺失和多余说明位号完全匹配。5.2 版本管理与文件命名规范坐标文件跟 PCB 设计文件一样需要做版本管理。尤其是当板子改版之后坐标文件也要跟着更新。如果版本管理混乱工厂用了旧版的坐标文件贴出来的板子就是错的。我的做法是坐标文件的文件名里包含版本号和日期。比如ProjectName_PnP_V1.2_20240615.csv。这样一眼就能看出是哪个版本、什么时候导出的。同时在项目的文件夹结构上也要清晰。我通常这样组织ProjectName/ ├── PCB/ │ ├── ProjectName.PcbDoc │ └── ProjectName.PrjPcb ├── Output/ │ ├── Gerber/ │ ├── PickAndPlace/ │ │ ├── ProjectName_PnP_V1.2_20240615.csv │ │ └── ProjectName_PnP_V1.2_20240615.txt │ └── BOM/ │ └── ProjectName_BOM_V1.2_20240615.xlsx └── Docs/ └── Assembly_Drawing_V1.2.pdf这样工厂拿到资料包之后所有文件都是对应的不会搞混。5.3 跟工厂确认的沟通清单每次发资料给工厂之前我建议按以下清单跟工厂确认一遍坐标文件的单位是公制还是英制坐标文件的小数位数要求底层器件是否需要镜像坐标角度定义是否需要修正文件格式是 CSV 还是 TXT位号命名是否有特殊要求是否需要额外的装配图或钢网文件这份清单看起来繁琐但能避免 90% 以上的沟通返工。尤其是第一次合作的工厂一定要把这些问题问清楚后面就顺畅了。6. 一些容易被忽略的细节6.1 器件的旋转角度基准Altium Designer 里器件的旋转角度是相对于封装的零点定义的。但封装的零点在哪里取决于封装是怎么画的。有些封装把零点放在焊盘中心有些放在器件本体中心有些放在 1 脚位置。这个差异会导致同一个器件在不同封装下的旋转角度不一样。比如一个电阻用封装 A 的时候旋转 0 度用封装 B 的时候可能就要旋转 90 度才能达到同样的物理方向。所以在创建封装的时候就要统一零点的定义规则。我的习惯是所有封装的零点都放在器件的几何中心。这样旋转角度的定义最直观也最容易跟工厂对齐。6.2 多引脚器件的坐标定义对于多引脚器件比如 QFP、BGA、连接器坐标文件里的 Mid X 和 Mid Y 指的是器件的几何中心。这个中心是 Altium Designer 根据封装的边界自动计算的通常是所有焊盘的外接矩形中心。但有些器件的几何中心跟贴片机的拾取点不一致。比如某些连接器贴片机的吸嘴可能吸在器件的某个特定位置而不是几何中心。这种情况下工厂可能会要求你提供额外的拾取点信息或者在贴片程序里手动调整。如果工厂反馈某些器件的贴装位置有偏差先检查一下这些器件的几何中心是否跟实际拾取点一致。不一致的话可能需要在封装里调整零点位置或者跟工厂协商在程序里做补偿。6.3 坐标文件的编码问题CSV 文件的编码格式也是一个坑。Altium Designer 默认输出的 CSV 可能是 ANSI 编码如果位号或注释里包含中文字符用 Excel 打开可能会乱码。解决办法是导出后用 Notepad 打开 CSV 文件确认编码格式。如果是 ANSI转换成 UTF-8 再保存。或者直接在 Altium Designer 的输出设置里看看有没有编码选项2024 版好像没有直接的编码设置需要后期处理。如果工厂的编程软件对编码有要求提前问清楚。大部分工厂用英文位号和注释所以这个问题不常见但一旦遇到就很麻烦。6.4 拼板坐标的处理如果你的板子做了拼板坐标文件的处理方式会有所不同。有两种做法按单板输出坐标工厂自己根据拼板方式做偏移按拼板输出坐标每个单板上的器件都有独立的坐标主流做法是第一种按单板输出。因为拼板方式可能会变工厂拿到单板坐标后根据实际的拼板间距和排列方式做偏移计算灵活性更高。但如果工厂要求按拼板输出那就需要在 Altium Designer 里把拼板后的所有器件都包含进来。这种情况下通常是用Embedded Board Array或者Panelize功能来做拼板然后导出整个拼板的坐标文件。实操心得拼板坐标文件最容易出的问题是器件位号重复。因为每个单板上的位号是一样的拼板后就会出现多个 R1、多个 C1。工厂处理这种情况时通常会在位号前面加前缀来区分比如 R1_1、R1_2。这个规则要提前跟工厂确认好。7. 从坐标文件反推设计问题坐标文件不只是给工厂用的它也是检查自己设计的一个好工具。我经常通过坐标文件发现一些设计上的问题。比如有一次我导出坐标文件后发现有两个器件的坐标完全一样。检查之后发现是封装重叠了两个器件放在同一个位置。这种问题在 PCB 视图里如果不放大看很容易忽略但在坐标文件里一查就出来了。还有一次我发现某个器件的旋转角度是 45 度。正常情况下器件的旋转角度应该是 0、90、180、270 这些正交角度。45 度说明这个器件被误旋转了虽然不影响电气连接但贴片时可能会有问题。后来检查发现是手动拖动时不小心转了角度。所以导出坐标文件之后花几分钟做一次数据检查往往能发现一些隐藏的设计问题。这比等到工厂反馈问题再回头改要高效得多。8. 批量处理与脚本自动化如果你经常需要导出坐标文件可以考虑用 Altium Designer 的脚本功能做自动化。Altium Designer 支持 Delphi Script、VB Script 和 JavaScript可以写脚本自动完成原点设置、输出配置、文件导出等操作。一个简单的思路是写一个脚本自动把原点设置到板框左下角然后按预设的参数导出 CSV 和 TXT 文件最后把文件复制到指定的输出目录。这样每次改完板子跑一下脚本就能得到标准化的坐标文件不用手动点一堆菜单。不过脚本开发需要一定的学习成本如果你只是偶尔导出坐标文件手动操作也够用。但如果你负责多个项目或者团队里有多人协作脚本自动化能显著减少人为错误。Altium Designer 的官方文档里有脚本 API 的说明网上也有不少开源的脚本可以参考。我自己的做法是先用手动操作跑通流程然后把重复性的步骤用脚本封装起来。这样既保证了灵活性又提高了效率。9. 个人经验总结坐标文件这个东西说简单也简单点几下菜单就能导出。但要说复杂里面的细节确实不少每一个细节处理不好都可能导致生产问题。我这些年踩过的坑总结下来就是几条原点要设对单位要统一角度要确认位号要匹配版本要管理。这几条做到了坐标文件基本不会出大问题。另外跟工厂的沟通非常重要。不要假设工厂什么都知道也不要假设自己的文件一定没问题。每次发资料之前按清单确认一遍发完之后主动问一下工厂有没有问题。这种主动沟通的习惯能帮你避免很多不必要的返工。最后分享一个小技巧如果你不确定坐标文件是否正确可以先让工厂用这个文件做一次首件贴装。首件确认没问题了再批量生产。虽然多花一点时间但比批量出问题之后再补救要划算得多。尤其是新板子第一次生产首件确认是必不可少的环节。