王鹏云,高长水
(南京航空航天大学 机电学院,南京 210016)
基于UG8.5的自动BOM模块开发
王鹏云,高长水
(南京航空航天大学 机电学院,南京 210016)
为了提高模具设计人员的工作效率,在UG8.5软件的基础上,使用VS2010平台开发了注塑模具自动BOM(Bill of Material)模块。该模块能够在装配情况下自动遍历检索模型下所有的零部件,生成符合特定格式的BOM表格文件。同时用户还可以根据需要,让程序生成某些指定零件的BOM。对于部分非装配的零部件程序可以自动的识别和区分。常用的采购标准件可以直接测量得到标准件的采购规格。最后生成的表格,程序可以自动进行格式设置,能够快速的生成供用户直接交付打印的BOM表格。
自动BOM;UG8.5;注塑模
UG软件由于其强大的三维建模、仿真和分析功能,被广泛的应用在各行各业。在模具制造行业,特别是注塑模具方面更是被广泛应用。UG被广泛应用的一个重要原因就是其提供了一个快捷方便的二次开发接口,用户可以根据自己的需要在软件本身功能的基础上开发更多符合企业自身设计规范的功能。在注塑模具行业,模具设计结束之后,对于模具设计人员来说,制作模具BOM表,一直是一个费时费力又很容易出错的内容。虽然有些学者或者研究人员已经通过UG二次开发制作出自动BOM的相关程序,但是非定制的程序很难适应企业自身的各种设计规范和标准。南京某注塑模具设计企业为了提高设计人员的设计效率和准确性,提出了在UG8.5软件的基础上开发自动BOM功能的需求,希望通过开发出来的自动BOM模块取代传统的人工在模型中逐个零件进行测量并且填写表格的工作,从而减少或者避免人工制作BOM表格过程中出现的各种差错。
对于企业来说,模具设计人员众多,希望通过二次开发在模具设计结束之后自动生成BOM,那么一个重要的前提就是规范模具设计人员的设计流程,要求他们设计出来的产品必须严格的符合某些规定。因此制定良好的模具设计规范是模具自动BOM能够实现,和后期模具设计自动化实现的前提。
该注塑模具设计企业在提出模具设计自动化的同时也制定了相应的设计规范,这为后期模具设计自动化提供了很好的基础。对于模具设计自动BOM来说,规范中对于零件的命名部分和装配方式是最重要的。如果零件能够命名一个合理的零件编码,那么零件编码就可以包含很多BOM中需要出现的信息,例如零件名称、物料分类、零件材质和硬度。下面是我们本次采取的零件命名规则:
模具编号-零件编号-版本号HG15060565-002-01R07
在模具设计规范中也明确制定好了,每一个零件编号对应的零件名称和物料分类,零件材质和硬度等信息。根据制定好的设计规范,使用Excel表格制作BOM数据文件,数据文件表格如图1所示。
选择使用Excel表格来存储这些数据文件的原因主要有两个:1)为了程序编写完毕之后,方便用户后期根据自己的需要进行必要的修改,例如零件名称、零件材质和零件硬度这些信息。2)由于程序数据库文件比较小,如果使用数据库,要求客户端电脑必须安装必要的数据库配置软件,增加了软件安装和使用的复杂性。
图1 自动BOM数据库文件
通过对设计部门以往三维模型装配图和设计人员手工编写的BOM表的比较分析,我们发现BOM表格中除了一些固定的表头格式和结尾格式之外,每条数据的结构如图2所示。在这些内容中,通过零件模型来测量的部分是整个程序开发设计的难点,同时也是人工来进行操作和设计的最繁琐的部分。通过数据库检索部分相对简单,我们只需要拿到零件编号,然后对零件编号进行解析,根据解析的内容,从数据库文件中查找对应的部分即可。
图2 BOM数据信息结构
3.1 功能定义
本基于UG8.5开发的自动BOM模块有以下五个功能:
1)自动从模型中提取BOM信息;
2)用户可以根据需要选择需要出BOM的零件;
3)某些非装配的零部件(螺丝、顶针和垫圈等)可以自动识别和区分;
4)某些常用的采购标准件(螺栓、推杆、弹簧等等)可以自动测量并填写标准件的采购规格,例如直推杆(EPH4-150);
5)程序在BOM表格生成之后,自动的进行表格的格式处理,打印设置等等处理,使生成的表格可以直接交付打印,方便快捷。
3.2 功能设计
自动BOM模块的设计目的是简化BOM设计流程,降低手工BOM的出错率。自动从模型中提取BOM信息,一方面简化用户的操作,另一方面能够避免用户在测量模型尺寸或者填写BOM表格时出现不必要的错误。这一部分是自动BOM程序设计的重点。
由于设计师设计的模具,有时候需要进行修模和改模,而修模和改模时并不是所有模具上的零件都需要重新采购和加工,只有需要改动的零件需要重新选择设计。因此能够根据用户需要选择性的生成部分模型的BOM表格也能够极大的提高用户使用的便捷性。
对于螺栓、推杆和弹簧等零件,由于在模型中这类零件使用的数量较多,单个命名和装配比较繁琐,因此设计师们习惯同类零件统一命名,放在一个部件中。对于这类非装配的零部件,模块可以自动识别和区分,同时自动测量尺寸,自动计数并且合并尺寸相同的零部件。
采购标准件,模块自动根据零部件的编码识别零部件的分类,测量规格必要的尺寸,生成指定零件的采购规格。生成的表格通过程序内置的格式处理和打印设置,使自动生成的BOM表格完全符合设计师们的日常设计习惯,方便设计师们快速使用。
4.1 整体概述
本次程序的设计我们采用Microsoft Visual Studio 2010作为开发工具,使用VB.Net作为开发语言。一方面UG提供了完整的VB.Net开发帮助文档,另一方面VB.Net可以和Excel进行无缝交互融合,因此最终选择使用VB.Net作为开发语言。同时在.Net平台下开发的应用,不需要区分64位和32位版本即可在客户机上直接运行,方便用户使用。
4.2 零件属性的读写操作
本次对于自动BOM的设计,是后期整个模具设计自动化的重要内容之一。后期需要进行工程图自动标注的设计。因此把零件属性作为一个中转站,先把必要的信息写入到零件属性,再通过读取零件属性写入到Excel表格,最终把每个零件的BOM信息完整的保存在零件文件上。在后期制作工程图时,特别填写标题栏时,需要的模型信息,我们可以直接从零件属性中读取出来。
零件属性的读写操作主要用到两个函数:SetUserAttribute()和GetUserAttribute()。通过这两个函数,我们可以把模具零部件模型的有用信息永久的保存在模型上。
4.3 重要零件尺寸规格的测量
根据设计部门的模具设计规范,模具零件大概可以分为以下几个类别:加工标准件、采购标准件、滑块、顶针/司筒、标准模架配件、模仁和镶件。其中加工标准件只需要测量型材尺寸即可,可以直接使用类Tooling.StockSizeBuilder之后添加Body就可以直接得到零件的型材尺寸。
滑块类零件也需要得到一个型材尺寸,但是由于滑块类零件的坐标系很多都是倾斜的,如果直接使用上面的方式测量,很容易得到错误的型材尺寸,例如图3所示,但是我们期望的测量方式如图4所示。我们在这里采用的策略是,测量零件的所有平面,查找零件的面积最大的那个平面,使用这个最大平面的法向量作为Z轴,在最大的平面上查找最长的直线边,作为X或者Y轴。确定坐标系之后,使用这个确定的坐标系方向,来测量零件的尺寸,如图4所示。使用这个规则,经过试验,一年的所有产品中会偶尔出现一个不符合该规则。
图3 错误测量方式
图4 正确测量方式
采购标准件尺寸规格的测量是整个程序中最繁琐的部分,因为对应于每个采购标准件,需要测量的尺寸较多,大部分尺寸又没有一个统一的测量规则。因此我们需要针对每一种零件写专用的测量尺寸规格的代码。并且很多零件尺寸的拾取规则比较繁琐,测量尺寸需要的对象没有明显的特征,通常很难从众多的对象中拾取。下面以MISIMI台阶推杆的EHSE这类零件作为例子来简单的讲解关于采购标准件规格的测量。
图5 MISIMI台阶推杆规格图
图6 MISIMI台阶推杆型号
从图5和图6关于台阶推杆尺寸的设定可知,台阶推杆的尺寸规格由以下四个尺寸组成:D公称直径(第二阶台阶的直径)、L推杆总长度、P第三阶台阶的直径、N总长度减去第三阶台阶的长度。图7通过流程图的方式简单的介绍了台阶推杆尺寸规格中每个尺寸的测量过程。
图7 台阶推杆尺寸测量流程
在整个测量工作中,最主要的任务是筛选出需要测量的对象。例如测量第三节圆柱面的直径,最主要的任务就是从零件所有面中筛选得到最小的圆柱面这个对象。测量对象在整个测量过程中我们主要用到的是面对象和边界对象。面对象的筛选主要用到特征:类型、面积、边界的类型和数量等。边界对象的筛选主要用到特征:类型、长度、所在面的类型和面积等。在某些难以区分的情况下我们会考虑使用面的法向量、边界的方向向量和某些特征尺寸来进行筛选。
尺寸的测量部分主要测量距离、直径、角度和面积等内容。测量距离和直径可以使用NXOpen. MeasureDistance类添加测量对象。测量面积可以使用NXOpen.MeasureFaces类。测量角度则使用NXOpen. MeasureAngle。以上三个类在使用的过程中直接添加测量对象,设置测量方式和精度即可成功测量得到必要的尺寸。
4.4 BOM生成流程简介
进入程序之后,首先遍历所有零件,解析每个零件的名称,拿到零件编号,查找数据库中对应零件名称、物料分类、零件材质和硬度,同时测量型材尺寸,将这些信息写入到每一个零件的属性中去。然后第二次遍历所有零件,根据零件编号,对不同的零件进行不同处理,例如普通的加工零件则直接读取零件属性,写入Excel表格,生成一条数据。对于普通采购标准件,测量零件的必要尺寸信息,然后再读取零件属性,写入Excel表格,生成一条数据。对于非装配件(推杆,螺丝和弹簧等)则得到零件体的个数,进入更深一层循环,测量每一个零件体的尺寸,每一个零件体都在Excel表格中生成一条新的数据。待所有的零件都在Excel表格中生成数据完毕之后,根据零件编号排序Excel表格,然后合并同类项,把相同零件编号和尺寸规格一模一样的直接合并。表格数据处理完之后,进行格式设置,例如字体,边界线等内容的处理。最后进行错误检查,对于非常明显的错误,把错误信息所在单元格的背景色改为红色,提示用户注意检查。这里最容易出错的地方就是尺寸规格部分,因此错误检查主要是对测量的尺寸规格这一项进行检查,如果得到的尺寸非常不规范,就认为这个尺寸有问题,需要设计人员检查。
在这里关于最后的错误检查,这一部分主要是为了减少设计人员的工作量。因为就算程序可以自动出BOM表格,但是也很难保证整个BOM表格是100%的正确。因此在BOM生成结束之后,设计人员肯定需要进行一些简单的检查。有些比较常规的错误,程序能够进行判断的,则在程序里面进行判断,同时把错误信息所在单元格的背景色改为红色,提示需要人工检查。这样设计人员在BOM生成完成之后只要重点注意一下有红色提示部分即可。
4.5 自动生成实例
图8是设计部门完成装配之后的三维模型文件,图9是使用自动BOM模块生成的BOM清单文件。
图8 装配模型文件
图9 自动生成的BOM表格
通过自动BOM模块的开发,极大的提高了该企业模具设计部门设计人员的效率。一个中等复杂的模具,如果通过原始的方式来进行BOM表格的设计,一个普通的设计人员最少需要1~2个小时才能完全结束一张BOM表格的制作,中间还十分容易出错。现在使用自动BOM模块,一个复杂的模具正常情况下1分钟之内即可自动生成,加上设计人员后期的检查修改时间,最多15分钟完全可以完成一张BOM表格的制作。该模块充分利用UG软件提供的开发接口,简化BOM制作流程,缩短了设计周期,降低了出错率。
[1] 董正卫,田立中,付宜利.UG/Open API编程基础[M].北京:清华大学出版社,2002.
[2] 胡卫卫,王华昌,李建军.UG平台下注射模CAD系统BOM表功能的开发[D].武汉:华中科技大学材料学院,2010.
[3] 黄勇,张博林,薛运锋.UG二次开发与数据库应用基础与典型范例[M].北京:电子工业出版社,2008.1.
Development of automatic BOM software based on UG8.5
WANG Peng-yun, GAO Chang-shui
TP391.72
:B
1009-0134(2017)01-0094-05
2016-05-03
江苏省前瞻性联合研究项目(BY2016003-08)
王鹏云(1991 -),男,河南洛阳人,硕士研究生,研究方向为自动化软件开发和制造车间生产仿真与优化。