梁锋,钟建强,罗培锋,陈东
基于VB 6.0的CATIA二次开发在零件测量中的应用
梁锋,钟建强,罗培锋,陈东
(广州汽车集团股份有限公司汽车工程研究院,广东 广州 511434)
针对汽车车身开发过程中重量管控,为改善单件重量手工测量统计的传统低效现象,给出单件重量的程序自动测量方法。在介绍VB编程语言及CATIA二次开发理论的基础上,给出程序自动测量的基本流程,利用VB6.0 Automation API调用内置函数GetMeasurable,实现零件的批量测量并写入EXCEL表格中为后续数据处理提供基础。通过实例验证,证明了CATIA批量自动测量相对传统手工测量方法的优越性。结果表明,CATIA二次开发可以提高工作效率。
VB;CATIA;二次开发;体积测量;重量测量;测量输出
CATIA 是法国达索公司开发的CAD/CAE/CAM 一体化软件,在世界CAD/CAE/CAM领域中处于领先地位[1]。车身开发过程中,需要对设计重量进行管控,通常需大数模中自定义重量属性,并对属性重量进行填写及更新。对于CATPart类型数模,目前主要有两种方法。一种是设定公式,重量Mass为赋予的材质密度×零件体积,但公式容易受几何体Body重命名等原因丢失链接,导致重量信息无法更新;另一种为手工测量,然后填写入自定义属性中,但工作繁重效率低下。本文针对后者,使用VBA进行二次开发,通过代码提取CATPart的体积与密度,并设定公式相乘得到重量,并导出至EXCEL文件中,方便后续的属性写入及其它重量管理。
VB6.0 是微软公司开发的面向对象的可视化编程工具。VB 以早期的Basic语言为基础,以可视化为主要特点,采用面向对象、事件驱动的编程机制[2]。VB 把Windows 编程的复杂性进行了封装,使用户可以简单快速地开发出Windows环境下的应用程序。
CATIA 加入了ActiveX 自动化服务功能,VB 是最为常用的支持ActiveX 技术的开发工具之一。采用VB作为开发工具进行CATIA二次开发,可使CATIA与Windows 其它程序的数据共享变得更加容易[3]。
CATIA 提供了两种编程接口,一种是自动化对象编程(V5 Automation),一种是开放的组件应用架构(CAA)[4]。CAA功能全面,稳定性好,适合深层次的CATIA二次开发,但是对开发人员的要求较高,需要使用专业的编程软件及工具。V5Automation是基于COM技术的编程接口,描述了CATIA二次开发编程对象架构,包含不同接口中每个对象的方法属性等详细信息,是进行CATIA二次开发的重要参考资料。
所谓CATIA二次开发,就是利用CATIA提供的API接口进行程序设计开发,拓展CATIA软件功能,实现软件功能个性化和操作自动化。二次开发可以使软件更好地为用户服务,对提高工作效率和产品质量,节约研发成本和缩短开发周期有着重要的作用[5]。
图1 CATIA V5 Automation对象架构
进行CATIA二次开发,首先要了解CATIA V5 Automa -tion API 的基本架构,掌握常用对象的属性和方法。CATIA V5 Automation 对象架构如图1所示。
CATIA二次开发的过程可以理解为:用户为实现某种功能,根据需要合理地调用V5 Automation 提供的类、库的属性和方法以及二次开发函数。CATIA中的每个功能(包括零件设计、曲面设计、装配设计、工程制图等)以及所有的实体特征(包括草图特征、修饰特征、曲面特征、变换特征、组合特征等)都有相应的类、库支撑,因此CATIA二次开发的主要工作就是合理地调用V5 Automation API 对象进行编程。对CATIA进行二次开发的基本流程如图2所示。
图2 CATIA二次开发基本流程
图3 CATIA自带测量工具
自带测量命令的优点是操作简单,直观方便,测量结果即时显示,无需其它特别操作,对于单一零件较为实用。但是也有缺点,主要缺点是在重复测量时,需逐个重复测量命令的操作。而且,在需要输出体积或者重量用于后续处理时,需逐个复制粘贴结果,效率低下。
使用VBA测量命令,主要是调用SPA(DMU Space Analysis)工作台的Measurable测量命令,该命令在CATIA Automation API中存在接口,可直接调用,主要流程如图4所示。
图4 VBA代码测量基本流程
零件测量并输出结果至EXCEL的CATIA二次开发的主要流程如图5所示。
图5 零件测量并输出结果至EXCEL的CATIA
二次开发的主要流程
首先将待处理对象放置于同一个文件夹内,然后打开该文件夹中的任意一个CATPart文档,通过API访问CATIA内部对象,来获取该文件所在文件夹路径。获取当前打开的CATPart文档的路径,可以通过以下代码实现。
Dim documents1 As Documents
Set documents1 = CATIA.Documents
Dim partDocument1 As PartDocument
Set objpart = CATIA.ActiveDocument.Part
pth = objpart.Application.ActiveDocument.Path
MyPath = pth & ""
通过调用EXCEL,通过自定义标题用于存储测量结果及其他信息。本案例主要列标题有,零件号、体积、默认的测量密度及默认重量。
通过GetObject("EXCEL.Application")及CreateObject ("EXCEL.Application")代码调用EXCEL程序。调用EXCEL程序后,通过以下代码实现EXCEL表头的设计。
Set myWorkbook = myEXCEL.Workbooks.Add
Set myWorksheet = myEXCEL.Sheets.Add
myWorksheet.Range("A1").Value = "零件号"
myWorksheet.Range("B1").Value = "体积(m^3)"
myWorksheet.Range("C1").Value ="默认测量密度(Kg/ m^3)"
myWorksheet.Range("D1").Value = "默认重量(Kg)"
获取零件的体积,代码如下。MyPath为待处理零件所在的文件夹路径,MyName为路径为所有后缀为CATPart的文档的FullName即,MyName = Dir(MyPath & "*CATPart")。
Dim documents1 As Documents
Set documents1 = CATIA.Documents
Dim partDocument1 As PartDocument
Set partDocument1=documents1.Open(MyPath&My Name)
Set objpart = CATIA.ActiveDocument.Part
Set objRef = objpart.CreateReferenceFrom Object(objpart. Bodies)
Set objSPAWkb = CATIA.ActiveDocument. GetWork ben ch ("SPAWorkbench")
Set objMeasurable = objSPAWkb.GetMeasurable(objRef)
将测量结果及其他信息写入EXCEL表格,代码如下。objpart.Name为零件号,objMeasurable.Volume为体积,part Root.Density为默认的测量密度。
Set partRoot = CATIA.ActiveDocument.Part
myWorksheet.Range("A" & line).Value = objpart.Name
myWorksheet.Range("B" & line).Value = objMeasurable. Volume
myWorksheet.Range("C" & line).Value = partRoot.Density
myWorksheet.Range("D" & line).Value = Round(partRoot. Density * objMeasurable.Volume, 3)
打开单一零件,并执行代码,即可等到体积及重量,如图6所示。
图6 单一零件测量
打开目标文件夹任意一个CATPart,执行代码。输出如图7所示表格。107个零件总大小456M,用时约4分钟。
图7 批量测量后输出的表格
通过CATIA批量测量同一文件夹中的CATPart实例验证,可以看出使用VBA代码自动化测量并输出结果相对手工测量及复制粘贴方法,简化操作步骤,使用更加便捷快速,证明了CATIA二次开发的实用性与高效性。结果表明,CATIA二次开发可以进一步提高工作效率,减少重复操作,可以精确管理零件重量。下一步的研究方向是在装配体中对所有单件进行质量测量并写入自定义属性中,同时对所有层级的装配体重量进行卷积求和。
[1] 胡挺,吴立军.CATIA二次开发技术基础[M].北京:电子工业出版社,2006.
[2] 林卓然.VB语言程序设计(第3版)[M].北京:电子工业出版社, 2012.
[3] 刘薇娜,贾帅帅.基于CATIA二次开发的非标准件参数化设计[J].自动化技术与应用,2017,36(7):43-46.
[4] 彭欢.基于V5 Automation的CATIA二次开发技术研究[J].电子机械工程, 2012,28(2):61-64.
[5] 周桂生,陆文龙.CATIA二次开发技术研究与应用[J].机械设计与制造,2010(1):81-83.
Application of CATIA Secondary Development Based on VB 6.0 in Part Measurement
Liang Feng, Zhong Jianqiang, Luo Peifeng, Chen Dong
( Automotive Engineering Research Institute of Guangzhou Automobile Group Co., Ltd., Guangdong Guangzhou 511434 )
Aiming at the weight control in the development of automobile body, in order to improve the traditional inefficient phenomenon of manual measurement and statistics of single weight, the program automatic measurement method of single weight is given. Based on the introduction of VB programming language and CATIA secondary development theory, the basic process of program automatic measurement is given. Using VB6.0 automation API to call the built-in function getmeasurable, batch measurement of parts is realized and written into EXCEL table to provide the basis for subsequent data processing.It is proved that the CATIA batch automatic measurement is superior to the traditional manual measurement through the example verification. The results show that CATIA secondary development can improve the work efficiency.
VB;CATIA;Secondary development;Volume measurement; Weight measurement; Measurement output
10.16638/j.cnki.1671-7988.2021.02.013
U463.82
A
1671-7988(2021)02-38-04
U463.82
A
1671-7988(2021)02-38-04
梁锋,白车身责任工程师,就职于广州汽车集团股份有限公司汽车工程研究院。