BOM(Bill of Material,即物料清单)是一种以数据格式描述产品结构的文件,包含了产品所有零部件的型号、名称、原材料种类和数量等相关信息,是企业销售、计划、设计、生产、供应、核算、产品维护等工作环节的重要依据。
BOM 信息框架
在产品设计阶段,工程师通过 SolidWorks
以自定义属性的形式为 CAD 模型赋予了一些基础信息,通过它们可以建立起基本的 BOM。为了存储这些零部件基础信息,在程序中创建了 BomInfo()
类:
1 |
|
软件 UI 与功能
使用 QT Designer
设计了 BOM 生成软件的用户界面,并使用 Python
编写了业务逻辑。
如图所示,用户可指定装配体文件路径、是否保存缩略图、缩略图保存路径、产品总套数等信息。界面右上方的 运行
按钮用于触发遍历装配体特征树及获取缩略图的功能模块,导出
按钮用于触发将 BOM 信息保存为 .xlsx
或 .xml
格式文件的功能模块。同时,在软件的运行过程中,运用多线程编程在软件的主窗口中动态实时显示当前运行状态等信息。
遍历 SolidWorks 装配体的特征树
BOM 是基于产品结构及其零部件所包含的信息建立的,因此需要基于产品总装配体的 CAD 模型来获取产品的结构以及零部件的基础信息。
本文以遍历 SolidWorks
装配体模型的特征树的方法来获取这些信息。该方法无需预先绘制产品总装配体的工程图,能够保留特征树的顺序与层级,并且支持直接对零部件模型进行操作,更为灵活和自由。
模块核心代码如下:
1 |
|
获取零部件的缩略图
BOM 中通常只包含文字信息而不具备预览零部件模型的功能,这导致了在成本估算、坯料预投、物料清点等工作环节中经常需要将 BOM 对照 CAD 模型逐个查找,甚至于“望文猜图”,给相关工作带来了诸多不便。
因此,有必要获取零部件的缩略图并将其加入 BOM 表格中。
虽然 SolidWorks API
提供了 SaveBMP()
函数用于保存模型的位图,但该方法获取的缩略图色彩失真严重、清晰度低,无法满足需求。因此通过将模型另存为 png
文件的方法获取其缩略图。核心代码如下:
1 |
|
值得一提的是,为了获得最好的效果,需要适当调整 SolidWorks 软件窗口的长宽比例,并在 系统选项 - TIF/PSD/JPG/PNG
中勾选 移除背景
和 屏幕捕获
。
将 BOM 信息写入 Excel 表格
使用 openpyxl
模块将 BOM 信息写入了 .xlsx
文件,并根据零部件的信息分别赋予了其对应的样式。
当用户选择保存缩略图时,自动导出的 Excel
表格效果图如下:
当用户选择不保存缩略图时,自动导出的 Excel
表格效果图如下:
以上两图均未作任何手动处理。
模块核心代码如下:
1 |
|
将 BOM 信息写入 XML 文件
使用 xml
模块将 BOM 信息写入 .xml
文件。文件内容示例如下:
1 |
|
模块核心代码如下:
1 |
|