10.16638/jki.1671-7988.2021.01.011
CATIA VBA二次开发在装配中批量
搜索零件的应用
梁锋,钟建强,罗培锋,陈东
(广州汽车集团股份有限公司汽车工程研究院,广东广州511434)
摘要:文章针对汽车开发过程中,经常需要对部分特定的零件进行批量选择用于校核或者作为报告用图,给出了装配中对指定的多个零件进行程序搜索选定的方法。在介绍VB编程语言及CATIA二次开发理论的基础上,给出程序自动搜索零件的基本流程,利用CATIA Automation调用Search方法,实现零件的批量搜索。通过实例验证,证明了CATIA批量搜索的优越性。结果表明,CATIA二次开发可以提高工作效率。
关键词:CATIA;VBA;二次开发;搜索;零件号
中图分类号:U464.13 文献标识码:A 文章编号:1671-7988(2021)01-32-04
Application of CATIA VBA Secondary Development in batch search
of parts in assembly
Liang Feng, Zhong Jianqiang, Luo Peifeng, Chen Dong
( Automotive Engineering Research Institute of Guangzhou Automobile Group Co., Ltd.,
Guangdong Guangzhou 511434 )
Absrtact: In the process of automobile development, it is often necessary to select some specific parts in batch for checking or as a report drawing. The method of program searching and selecting for the specified parts in assembly is given. Based on the introduction of VB programming language and CATIA redevelopment theory, the basic process of searching parts automatically by program is given. By using CATIA automation to call search method, the batch searching of parts is realized. The superiority of CATIA batch search is proved by an example. The results show that CATIA secondary development can improve the work efficiency.
Keywords: CATIA;VBA;Secondary development;Search;Part number
CLC NO.: U464.13 Document Code: A Article ID: 1671-7988(2021)01-32-04
前言
CATIA 是全球出的产品设计和体验解决方案。它被不同行业的领导组织所采用,用以开发我们日常生活见到和使用的产品,常见的是飞机及汽车设计开发领域。CATIA在世界制造业中具有举足轻重的地位,波音飞机公司使用CATIA 完成了整个波音777的电子装配,创造了业界的一个奇迹,从而也确定了CATIA在CAD/CAE/CAM行业内的领先地位[1]。车身开发过程中,经常需要在装配中对于同种材料属性的零件着,比如镀锌板,用于校核或者作为报告用图。目前常规的方法有两个,一个是对照BOM表逐个选择后分别着;另一个通过EXCEL表辅助,生成需执行的搜索语法,然后复制至CATIA高级搜索栏中的组合查询实现批量搜索。
作者简介:梁锋,白车身责任工程师,就职于广州汽车集团股份有限公司汽车工程研究院。
32
梁锋 等:CATIA VBA 二次开发在装配中批量搜索零件的应用
33
本文针对后者,使用VBA 进行二次开发,通过对多个零件号进行处理直接生成搜索语法,进而实现程序的批量搜索。
1 理论介绍
1.1 CATIA 二次开发方法
CATIA 二次开发的主要方法有四种:一是Automation API (使用自动化应用接口的宏),CATIA Automation API 采用面向对象技术设计,是一个开放易学的体系结构,适应于大多数自行设计插件的工程师;二是Knowledge Ware (知识工程模块),是基于规则的,主要应用于建模、检查、审查等过程的;三是采用Interactive User Defined Feature (交互式用户定义特征),主要于用建模过程的特征重用;四是CAA V5的C++和JA V A 应用接口,此法需要专业的编程软件及工具,对开发人员要求较高,适合比较深层次的CATIA 二次开发。 1.2 CATIA 二次开发流程
CATIA 二次开发,其核心是利用CATIA 提供的API 接口进行程序设计开发,开发拓展CATIA 软件功能,实现CATIA 功能个性化和操作自动化。CATIA 基于开放式可扩展的 V5 架构使得用户可以方便地通过二次开发扩展应用功能。二次开发是对软件进行个性化和专业化有有效手段,可以使软件更好地为用户服务,对提高工作效率和产品质量,节约研发成本和缩短开发周期有着重要的作用[2]。
进行CATIA 二次开发,要了解CATIA V5 Automation API 的基本架构及主要对象的概念、用法及它们之间的关系,掌握常用对象的属性和方法。CATIA V5 Automation 对象架构如图1所示。
图1  CATIA V5 Automation 对象架构
CATIA 二次开发的过程即是CATIA 功能的个性化定制,其目的是满足用户使用习惯或者完成自动化操作。其中自动包含两层意思,其一是重复操作的自动化完成,其二是某些流程自动化完成。开发人员为实现某种功能的二次开发,根据需要合理地调用V5 Automation 提供的类、库的属性和方法以及二次开发函数。而CATIA 中的每个功能以及所有的实体特征都有相应的类、库支撑,因此CATIA 二次开发的主要工作就是合理地调用V5 Automation API 对象进行编程。CATIA VBA 中提供了VB 的功能,结合VB 强大的功能和CATIA 本身提供的丰富的类、库及二次开发函数,就能开发个性化的CATIA 二次开发程序[3]。
2 CATIA 按零件号的搜索方法
2.1 使用自带搜索工具进行搜索
使用CATIA 自带搜索工具按以下步骤进行按零件号搜索。在装配模块下,编辑—搜索(CTRL+F ),调出搜索界面并进入高级选项卡,工作台选择装配设计,类型选择零件,属性选择零件编号,在逻辑运算符右侧的文本框中输入单个零件号进行搜索,具体操作如图2所示。
图2  CATIA 用自带搜索工具按零件编号搜索零件
自带搜索命令的优点是操作简单,直观方便,无需定制,对于单一零件较为实用。但是也有缺点,仅能进行单个零件精确搜索或者对具有相同字符串的零件号增加通配符进行模糊搜索。
2.2 通过EXCEL 辅助使用原有搜索工具进行批量精确搜索
图3  EXCEL 辅助按零件号批量精确搜索
CATIA 自带搜索工具的高级选项支持组合查询,即支持逻辑运算,故可以通过EXCEL 公式在表格中生成相应搜索
命令,然后复制至CATIA 组合查询框中执行搜索,可以实现
汽车实用技术
34 按零件号精确批量搜索。如在某个装配下同时搜索零件号分别为80500890及40401410、40401420三个零件,在EXCEL 制定的模板中,处理生成搜索语句:装配设计.零件.零件编号=80500890+装配设
计.零件.零件编号=40401410+装配设计.零件.零件编号=40401420,然后复制至CATIA 搜索组合查询中,执行搜索,如图3所示。若CATIA 为英文界面,需将字符串装配设计.零件.零件编号替换成''Assembly Design'.Part.'Part Number'。
2.3 程序自动批量搜索
程序自动批量搜索是利用编程语言调用CATIA 的API 接口,调用search 方法进行操作,通过程序控制完成按零件号的精确搜索。程序搜索法的特点是操作简单,搜索效率高,但是需要CATIA 二次开发的相关知识,对设计人员要求较高。按零件号批量精确搜索的CATIA 二次开发主要流程如图4所示。
图4  按零件号批量精确搜索的主要流程
3 CATIA 二次开发
3.1 用户界面设计
程序用户界面是衡量一个程序或软件实用性的重要指标。CATIA 二次开发中设计用户界面通常有两种方法。第一种也是最常用的,直接在CATIA VBA 窗口中插入UserForm (用户窗体),并通过Toolbox 工具进行相关设计,然后通过使用文本框及按钮等控件实现界面的设计。另一种是直接在VB 软件中设计,按钮等控件的详细设计同第一种。但因为VB 独立于CATIA 的,是微软开发的一种面向对象的可视
化编,属于CATIA 进程外的应用程序,所以后者需在前面的基础上加入调用外部程序。本程序的用户界面采用的第一种方法。CATIA 按零件号批量搜索程序的界面设计如图5所示。
图5  CATIA 按零件号批量搜索程序的界面
3.2 主要程序代码
判断CATIA 用户界面语言是中文还是英文,代码如下。 a = Left (CATIA.Statusbar,1) if a > "~" then  msgbox "中文" end if msgbox "英文"
按回车符分割输入框中的多个零件号并返回数组,代码如下,TextBox1为程序界面输入文字的文本框。
arr = Split (TextBox1.Text, vbCrLf )
根据用户界面语言为不同语言,用指定字符串分别与arr (0)连接两组代码。
中文环境下:
mystr = "装配设计.零件.零件编号=" & arr (0) 循环,连接所有成员。 For i = 1 To UBound (arr )
mystr = mystr & "+" & "装配设计.零件.零件编号=" & arr (i )
Next
newstr = "" & mystr & ",all" & "" 英文环境下:
mystr = "'Assembly Design'.Part.'Part Number'=" & arr (0) 循环,连接所有成员。 For i = 1 To UBound (arr )
vb软件开发mystr = mystr &"+" & "'Assembly Design'.Part.'Part Num ber'=" & arr (i )
Next
newstr = "" & mystr & ",all" & ""
将上述两组代码分别替换判断用户界面语言中的msgbox "中文"及msgbox "中文"即得到本程序的主要代码。
根据以上得到的字符串执行搜索,代码如下。 Sub 搜索()
Dim selection1 As Selection
Dim visPropertySet1 As VisPropertySet Dim productdocument1 As Document
Set productdocument1 = CA TIA.ActiveDocument Set selection1 = productdocument1.Selection selection1.Search mystr  End Sub
以上为中英文界面通用搜索命令的相应代码。将本程序中mystr 根据CATIA 自带高级搜索界面的命令进行适应性修改,可以得到其他批量搜索功能。比如,将上述代码的'Assembly Design'.Part.'Part Number'、"装配设计.零件.零件编
号="分别改为'Assembly Design'. Assembly.'Part Number'、"装配设计.装配.零件编号=",即可批量搜索装配。
梁锋 等:CATIA VBA 二次开发在装配中批量搜索零件的应用
35
4 实例验证
4.1 按零件号精确批量搜索
以6个零件组成的装配为例,同时搜索零件号为80500890及40401410、40401420三个零件。
(1)打开需搜索的装配。 (2)打开按零件号批量搜索程序。
(3)复制零件号或者手工输入零件号至文本框,如图6所示。
图6  按零件号批量搜索输入框
(4)执行搜索,即可选中文本框中零件,如图7所示。
图7  程序按零件号批量搜索
4.2 按有相同字符串的零件号进行模糊批量搜索
本程序亦可执行模糊搜索,以上述装配为例,对具有开 头为8050的零件号进行批量搜索。步骤同上面,仅需将步骤(3)改为8050*,执行中文搜索,结果如图8所示。
图8  开头为8050的零件号批量搜索
5 结论
通过CATIA 按零件号批量精确搜索及模糊搜索实例验
证,可以看出使用CATIA VBA 代码批量搜索零件号,可以简化操作人员的操作步骤,在使用过程中更加便捷快速、准确,证明了CATIA 二次开发对于设计人员有着较高的实用性与高效性。结果表明,CATIA 二次开发对于提高工作效率、减少重复操作有着不可或缺的作用,可以让工程师更专注于设计研发工作中。
参考文献
[1] 胡挺,吴立军.CA TIA 二次开发技术基础[M].北京:电子工业出版
社,2006.
[2] 周桂生,陆文龙.CATIA 二次开发技术研究与应用[J].机械设计与
制造,2010(1):81-83.
[3] 彭欢.基于V5 AUTOMA TION 的CATIA 二次开发技术研究[J].电
子机械工程, 2012,28(2):61-64.