ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Altium Designer高效导出BOM与PDF:从原理图规范到OutJob固化

Altium Designer高效导出BOM与PDF:从原理图规范到OutJob固化 上周带了个新人让他把一块控制板的BOM表和原理图PDF整理出来发工厂结果Excel打开乱码、位号排序乱七八糟、PDF还少了两页。折腾了一下午最后我叫他别急着点“导出”先把原理图里那些元件属性理顺再说。后来我意识到AD导出BOM表、导出PDF这件事看着是个“输出动作”实际上真正决定能不能用的是输出之前那些没人愿意看的规范。这篇文章就把我在嵌入式硬件项目里用Altium DesignerAD做资料交付的完整套路拆开讲从原理图属性规范、BOM导出路径对比、到Smart PDF出图再到用OutJob把整件事固定成一套模板。适合刚接触AD的硬件工程师也适合已经画了几块板子但一直靠“手动整理”交付文件的同行。1. BOM能不能用源头在原理图属性1.1 先别急着找导出按钮先检查元件参数很多人第一次导BOM打开Reports菜单点一下“Bill of Materials”看到Excel里有几十行数据就觉得搞定了。但真正发到采购手里问题全出来了。最典型的同一颗10K电阻有人原理图里Value写“10K”有人写“10000”有人写“103”还有人写“10kΩ”。AD会非常“诚实”地把这些全都当成不同器件在BOM里拆成四行。工厂一看就头大采购更不知道你到底要哪一种。所以做BOM的第一道工序不是导出是“查户口”。你需要双击原理图上的元件打开Properties面板把元件库里的参数一个一个对一遍。我自己的习惯是每个元件必须确认四个字段Value、Description、Footprint、Supplier Part Number。Value表示标准电气值比如“10K”“100nF”Description表示完整型号信息方便采购定位Footprint严格按公司封装命名规范写Supplier Part Number如果有就填上物料编码没有就留空等采购反馈后补录。这里有个新手容易忽略的点AD图纸上看到的元件型号文字不一定对应Value字段。很多老器件库里Comment字段才是显示在图纸上的那个字Value反而是隐藏的。所以在导出BOM前先把底层参数面板打开确认你选中的列真的对应到源头字段否则导出来的表和你眼睛看到的图纸对不上后续排查会非常痛苦。1.2 编译工程让AD先告诉你哪里有问题原理图不是画完就能导BOM的。至少要做一次工程编译让AD做一次全局一致性检查。操作路径是Project → Compile PCB Project编译完成后Messages面板会列出所有警告和错误。常见问题包括位号重复、元件缺少封装、网络悬空、原理图库找不到对应器件。这些看上去和BOM无关其实关系非常大。举个例子位号重复如果不去管AD在导出BOM时会以“同一个元件”的逻辑来处理很可能把两块完全不同的电路并成一行数量就错了。又比如元件缺少FootprintBOM导出来后Footprint那一列是空的到了贴片厂那边机器贴装程序根本没法做。编译就是一次提前体检比事后发现缺料再返工划算得多。编译通过之后我通常还会做一步在原理图里“Tools → Annotate Schematics”重新按顺序给位号编号。这样可以保证位号从左上到右下、按页数递增BOM里看起来更整齐。这个动作要在画完图纸、准备出资料之前做不要等BOM生成了再回头改元件。1.3 确定BOM到底以哪些字段为准原理图里每个元件可以挂一堆参数但BOM不是参数越多越好。发到工厂的BOM列太多反而干扰判断。我自己在AD里维护一套“BOM主字段”原则是这样的Designator位号必须唯一分区有序Footprint封装统一到公司封装命名规范Value主标称值阻容感二极管三极管都用它Description完整描述比如型号、耐压、精度、材质Supplier Part Number唯一物料编码作为采购和ERP对接的桥梁。Value和Comment不要混用。很常见的混乱就是库作者在Value里写了“10K”在Comment里又写了个“0603 1%”导出BOM时不知道以哪个为准结果一个器件出现两行。我现在的做法是Value只放标称值Comment在大多数情况下不放工程信息留给图纸标注用BOM里根本不引用Comment列。这块想明白了后面导出才省心。否则你每次导BOM都要在对话框里调列、调分组下次新工程又全部重来。2. 三种AD导出BOM的路径我分别怎么用2.1 Reports Bill of Materials功能最全的正规军正式交付给采购、贴片厂、以及存档用的BOM我都是在AD里走“Reports → Bill of Materials”生成。这是AD自带的最完整的BOM工具几乎能把你想要的所有字段都塞进一张表里。操作上要注意几个关键区域。左边“Columns”控制哪些列会出现在BOM里Designator、Footprint、Value这些默认有其他自定义参数需要通过“Add”按钮加进来。右侧“Grouped by”是合并同类项的关键把Footprint、Value、Description、Supplier Part Number这几列拖进去作为分组依据AD就会把相同规格的元件合并成一行Designator自动变成“R1, R2, R3, ...”Quantity变成合并后的总数。很多新人看不懂“Grouped by”和“Columns”有啥区别我用一句话解释Columns决定这张表长什么样Grouped by决定哪些行可以合在一起。比如你有100颗0603的100nF电容它们的Value都是100nF封装都是0603如果不在Grouped by里加这两列AD会认为是100个不同器件给100行加了分组之后就变成1行、数量100位号全部列出来。这才是工厂真正愿意看到的BOM。导出时我一般选“Excel”格式xls或xlsx不要选CSV后面会讲为什么。勾选“Open Exported”让AD导出后自动用Excel打开先扫一眼数量对不对再发出去。2.2 快速复制粘贴临时询价和口头沟通够用除了正式BOM日常还有一类需求采购说“你大概给我个数我先看看库存够不够”。这种时候如果再开Reports对话框去配置一遍显然有点慢。我常用的方式是直接在原理图编辑器里按CtrlA全选所有元件然后CtrlC复制切到Excel里直接CtrlV粘贴。这个操作会把元件当前表格里的属性和坐标一起粘贴出来作为临时清单完全够用。要注意的是这种方式导出的内容是“所见即所得”的受当前原理图“元件表格”视图影响不同PCB封装、隐藏参数未必都会带出来。所以它只适合做参考不适合作为正式生产资料。另外还有一种“夹带”方式在Smart PDF向导里勾选把BOM合并进PDF主图是原理图最后几页自动跟着一个元器件清单。这种PDF适合发给自己人快速评审不适合作为采购表因为没法编辑。但好处是图纸和物料清单一个文件发给谁都不用担心“只发了图忘了BOM”。2.3 Component Quick Report单页/单模块检查很有用有时候我只需要确认某个模块用了哪些器件不需要整块板的BOM。这时用Reports → Component Quick Report最快。它会针对当前图纸或者你选中的元件生成一个简单的弹出式清单。这个功能不能替代完整BOM但在画图过程中随手检查“这一页放了几颗电阻”“某个接口的退耦电容有没有漏”非常方便。还有个小技巧在Reports → Bill of Materials的左上角Scope选项里可以选“Project”或“Sheet”。如果你只想导出当前一页原理图的BOM就选Sheet输出范围会立刻收窄。这个功能在大型多页项目里尤其好用生产测试有时只需要某个板卡的料单不用整机。3. 交付工厂前最容易翻车的几个BOM细节3.1 中文乱码和字体问题先说说中文乱码。不少工程师的习惯是导出CSV然后Excel双击打开结果中文全变成“锟斤拷”之类的乱码。Adobe? 不对说AD这边。AD生成的CSV文件在不同版本里编码规则不完全一样老版本可能是ANSI或者带BOM的UTF-8Windows中文系统下Excel双击打开时会按系统默认编码去解两边不对上就乱了。我的解决办法很简单导出BOM统一用Excelxls/xlsx别用CSV。AD导出Excel格式是通过OLE写结构化数据Excel打开很少出乱码。如果必须用CSV那就不要双击打开在Excel里用“数据 → 从文本/CSV”导入并把文件原始编码手动指定为UTF-8或中文简体预览正常后再加载。PDF里的中文乱码又是另一回事。Smart PDF导出后如果到别人电脑上看中文字符变成方块基本是字体嵌入没勾。在Smart PDF向导的“PDF设置”里有一项“Embed TrueType Fonts”务必勾选。另一个“Use Substitution Fonts”不要勾否则AD会用替代字体渲染中文很可能走样。做了这两步跨平台打开PDF都不会翻车。3.2 位号合并和排序规则位号排序是BOM里一个经常被忽略却很容易被工厂吐槽的点。AD默认的位号顺序往往不是数字上的“R1, R2, R3, ...”而是按照图纸放置顺序来的可能出现“R1, R10, R11, R2, R20”这样的排法。这在BOM里很难看也不方便核对。要根治得从位号源头下手。在原理图里用Tools → Annotate Schematics设置按“按位置编号”让AD按图纸从上到下、从左到右重新给元件排位号编译后再导出BOM排序就正常了。如果项目已经定型不想动位号也可以在Excel里加辅助列把位号中的数字部分提取出来排序。但这是补救不如在设计阶段就把位号编好。还有一个实战细节位号合并后一行的内容可能非常长尤其在电容阵列或电阻排阻里一行几十个位号很正常。有些工厂内部系统单格长度有限制超过一定字符会截断。我的处理是在Excel里用公式把位号按数量拆成多列或者让工厂提供他们系统的导入模板我按他们的要求输出。不要嫌麻烦这个细节能避免很多“到底有没有R57这颗料”的扯皮。3.3 阻容值的“一物多名”电阻、电容、电感三种元件最容易出现一物多名。同一个10K电阻不同工程师可能有四种写法10K、10000、103、10kΩ。AD里它们就是四行哪怕是同一盘料工厂备料时也会当成四种材料询价。最后要么采购买到重复库存要么工厂嫌你清单不专业。我建议每个团队都建立一套“标称值书写规范”直接写进器件库设计规范里电阻使用工程单位简写K和M大写不写单位时默认欧姆例如10R、10K、1M电容统一用uF、nF、pF不用三位数字码例如100nF而不是104电感和电阻规则一致例如1uH、10uH避免写“10000pH”这种怪异写法。还要考虑精度。同样是10K电阻1%和5%在物料上是两个料号在BOM里如果只看Value会合并成一行。所以我推荐库中用额外参数记录Tolerance并且在BOM导出时把Tolerance列为分组字段之一。别省这一步很多项目后期量产时才发现“BOM显示数量对但采购买回来的精度不对”。3.4 封装字符串不一致如果说阻容值是“一物多名”那封装就是“一名多写”。我在项目里见过AD库里同时存在“0805”“C0805”“0805_B”“RES-C0805”四种写法它们物理上可能都是同一款封装但在BOM里会被分成四行。更麻烦的是封装字符串同时会被贴片机的CAD/CAM系统用来识别站位。如果BOM里写“0805_B”而PCB封装名字叫“0805”哪怕实体器件是一样机器编程人员也要费劲核对。所以我强烈建议在所有AD工程里强制使用同一个封装命名规范只允许出现一个标准写法其他一律不用。公司级器件库应该把这个规则落到库里而不是靠画板的人自觉。导出BOM后我还习惯在Excel里做一次透视表把“Footprint”列为行看一眼有没有“看起来相同但名字不同”的行。如果出现说明库里数据需要清理这个动作在项目初期做最划算。4. 用Smart PDF输出图纸以及从PCB导出装配PDF4.1 Smart PDF向导的正确配置AD里导出原理图PDF正确方式不是“打印”而是菜单File → Smart PDF。这一步走的是AD自己的打印引擎和项目框架能把多张原理图打包成一个PDF自动生成书签还能带上打印标记。向导第一步选择输出范围。我通常选“当前项目”这样所有原理图都会导出来如果只改了一页可以只选当前Sheet提高出图效率。第二页要点在于设置颜色选彩色分辨率为300dpi足够用于评审如果正式归档可以选600dpi但文件体积会增加不少。最关键的是两个选项Generate PDF bookmarks和Embed TrueType Fonts。书签生成后PDF左侧目录可以直接跳转到每一页原理图多页图纸翻起来非常方便。字体嵌入前面说过解决中文乱码问题。最后确认一下“Printer Scale”是Fit to page不然某些图纸比例会不对页面边框也可能会被裁掉。4.2 多页图纸页码与书签控制有些项目原理图十几页如果没有在图纸模板里正确设置页码导出的PDF页码会和设计文档里的“第几页共几页”对不上。AD的原理图图纸模板支持通过SheetNumber和SheetTotal两个参数来自动填充标题栏页码。在工程菜单的Document Options里可以确认这两个参数是否正确链接生成的PDF的页面顺序通常按AD内部的Sheet Order排序也就是你在Projects面板里看到的顺序。如果发现PDF里图纸顺序和你想的不一样不需要重新画图在工程项目面板里拖动文档顺序再重新生成一次Smart PDF就行。这个细节经常被忽略但发给客户或合作的模具工程师时页码错乱会显得非常不专业。4.3 从PCB导出装配PDF原理图PDF给电气评审用PCB装配PDF给焊接、测试、结构核对用。装配PDF上要能看到元件丝印、焊盘位置和位号最好按顶层和底层分开出。AD里的标准路径是File → Fabrication Outputs → Assembly Drawings。在弹出的配置里Output选项里面选PDF图层选择里把“Top Overlay”“Top Layer”“Multi Layer”都加上顶层装配图就齐了底层则把“Bottom Overlay”“Bottom Layer”“Multi Layer”加上。我可以同时生成顶层和底层两个PDF发焊接工厂时他们直接拿去对着摆件效率高很多。如果你只是想快速看一张也可以走File → Print Preview。PCB编辑器的打印和Word不同必须在“Board Layers”里指定要打印哪些层再通过打印机虚拟到PDF。打印机选“Microsoft Print to PDF”比例选1:1这样导出的PDF可以拿去做1:1尺寸检验确认结构孔和边缘器件位置是否合理。5. 把整套导出流程固化到OutJob一键搞定5.1 为什么用OutJob我在前面讲了那么多手动操作步骤但说实话我在实际项目里并不是每次都要把Reports对话框打开一遍。成熟的做法是新建一个OutJob文件把BOM、PDF、Gerber、NC Drill这些交付物全部定义在里面每次画完板子后只需要点一下“Generate Content”所有文件按模板批量生成。这样做最直接的好处是“可复制”。一个公司如果有多个嵌入式硬件项目每个项目的交付物结构应该一致。OutJob文件保存下来之后新工程只要把Source Document切过去就能复用小到列顺序、大到输出路径的整套配置。再也不用担心这次导BOM忘了勾“Open Exported”下次又漏了Smart PDF字体设置。5.2 配置方法和几个关键选项配置OutJob的步骤不复杂File → New → Output Job在配置面板里选择源文档为当前PCB工程然后“Add New Report → Bill of Materials”添加BOM输出“Add New PDF → PDF”添加PDF输出。如果你需要Gerber和钻孔文件也可以一起加进来。重点在BOM输出那一项需要选择你之前调好的模板或者直接在里面重新配置列、分组和排序。每次调整后建议点一下“Generate Content”试跑确认输出的Excel、PDF都在你想要的文件夹里。文件路径在OutJob里可以设置成.project/outputs/之类的固定目录配合版本号命名规则交付资料会很整齐。还有一种做法是把OutJob输出点和PCB工程生成属性绑定配合服务器端的发布功能可以实现“一键发布”。但我不建议第一次就上自动化先在本地单机把模板跑顺确认BOM里的每一个列、PDF里的每一个书签都符合预期再考虑批量发布。5.3 往公司ERP和采购系统延伸的思路当BOM导出变得稳定后真正给公司创造价值的是把它和ERP或采购系统对接起来。其实AD本身不直接连ERP但我可以在元件库参数里维护好Supplier Part Number然后在BOM导出模板里把这一列固定放进去。采购拿到Excel后用自己的系统模板一映射就能自动产生请购单。这一步做到位后设计、采购、仓储三方看到的是同一个物料编码。原理图改了料重新生成一次OutJobBOM就自动更新采购系统那边重新导入即可。如果公司有二次开发能力还可以用AD的DelphiScript写脚本一键把OutJob生成的BOM做格式转换甚至拆分出“SMT贴片料清单”和“结构件清单”。但我个人的建议是先把基础流程做扎实不要一上来就写一堆脚本不然脚本和流程不匹配维护成本反而比手工导BOM还高。最后聊几句我现在的习惯板子画完打样前我固定会做三件事原理图编译通过、Reports导出一份Excel格式BOM、Smart PDF导出一份带书签的原理图PDF。如果是需要焊接工厂装配的板子还会从PCB再出一份顶层和底层的装配PDF。三个动作现在都挂在同一个OutJob里文件名带项目代号和版本号输出到固定目录做完后自己快速翻一遍。整套流程十分钟以内能跑完但以前动不动就是一小时的“整理资料”时间再也没出现过。如果你正在被BOM导出后的乱码、位号、一物多名这些问题折磨不需要急着找什么高级插件先从原理图参数规范化开始把Reports和Smart PDF用明白再上OutJob固化。这套方法对几块板的样品阶段和几百K批量生产都适用区别只是元件库规范的颗粒度不同而已。
返回列表