1. 交互式BOM插件:PCB设计的效率神器,但有个“小脾气”
如果你和我一样,是个经常用Altium Designer(咱们后面都亲切地叫它AD)画板的工程师,那你肯定对那种繁琐的BOM(物料清单)核对工作深恶痛绝。一个个元件去对位号、查封装,眼睛都快看花了。这时候,交互式BOM插件简直就是救星。它能把枯燥的Excel表格,变成一个在浏览器里可以交互的网页:你点击网页上的一个元件,PCB图上对应的器件就高亮显示;反过来,你在PCB图上选一个器件,网页列表里也会自动定位。这种“指哪打哪”的体验,对于硬件工程师检查PCB、和焊接厂沟通、甚至自己维修调试,都方便得不得了。
我最早是从GitHub上发现这个宝藏工具的,比如 lianlian33/InteractiveHtmlBomForAD 或者 yukaichao/InteractiveHtmlBom-plugin-for-AD 这几个项目,用的人很多。安装也简单,通常就是把下载的脚本文件放到AD的脚本目录里,然后在AD里运行一下,一个漂亮的、带交互功能的HTML文件就生成了。我实测下来,对于提高后期核对效率,效果非常显著,可以说是“用了就回不去”的工具。
但是,就像很多强大的工具都有其特定的使用环境一样,这个交互式BOM插件也有个不大不小的“脾气”。这个脾气,平时你可能遇不到,但一旦触发,就会让你生成的网页完全没法用,所有交互功能失效,只剩下一个静态的、错位的图片和列表。这个触发条件,就是当你的PCB文件里存在 MARK点 的时候。尤其是在AD17这个版本上,这个问题表现得尤为明显和稳定复现。我自己就踩过这个坑,当时急着给工厂发文件核对,生成出来的BOM网页一片混乱,差点耽误事。所以,今天我就把这个问题的来龙去脉,以及我摸索出来的“土办法”和更深层次的解决思路,详细跟大家分享一下。
2. 问题重现:当MARK点遇上交互式BOM,发生了什么?
那么,具体会出现什么问题呢?光说混乱可能不够直观,我来描述一下典型的故障现象。当你在一个包含了MARK点(通常是用于SMT贴片机光学定位的Fiducial Mark)的PCB文件上,满怀期待地运行交互式BOM插件脚本后,脚本看起来一切正常,也会弹出窗口让你选择一些选项,最后生成一个HTML文件。
但当你用浏览器打开这个HTML文件时,问题就来了:
- PCB视图错位或消失:最核心的、本应显示PCB顶层/底层渲染图的区域,可能变成一片空白,或者显示的图像严重错位,只有一小部分,根本无法和下方的元件列表对应起来。
- 交互功能完全失效:你点击网页左侧的元件位号列表(比如C1, R2),右边的PCB图应该高亮对应器件,但此时毫无反应。反之亦然,你点击PCB图上的器件(如果图还在的话),列表也不会滚动定位。
- 网络连接错误提示:有些情况下,浏览器的开发者控制台(Console)里会报出JavaScript错误,常常是跟找不到图像资源或者坐标计算超出范围有关。
这个问题的诡异之处在于,它只和MARK点相关。你的板子再复杂,器件再多,只要没有MARK点,插件工作就非常完美。一旦放了那么几个小小的MARK点,整个生成结果就崩溃了。这感觉就像一颗老鼠屎坏了一锅粥,让人非常郁闷。为了确认,我做了多次对比测试:同一块板子,导出两次。第一次直接导出,失败;第二次,我手动在PCB文件里把几个MARK点删除,然后再导出,成功!这就把问题牢牢锁定在了MARK点身上。
2.1 为什么偏偏是MARK点?—— 深入脚本原理的分析
要解决问题,先得理解问题是怎么产生的。我虽然不是这个插件的原开发者,但通过查看脚本源码和一些调试,大致摸清了它的工作逻辑,也明白了MARK点为何会成为“害群之马”。
交互式BOM插件的工作原理,可以简单理解为以下几个步骤:
- 数据抓取:脚本会读取当前打开的PCB文件,获取所有元件的关键信息,包括位号(Designator)、注释(Comment)、封装、坐标、所在的层(Top/Bottom)等。
- 图像渲染:脚本需要生成PCB的预览图。它并不是简单地对整个PCB界面截图,而是通过AD的内部指令,分别生成顶层和底层


235

被折叠的 条评论
为什么被折叠?



