基于CATIA VBA的CAD数据编码实现及应用
2020-03-02杜宏艳张雯丽张俊吴方正冯贺平
杜宏艳 张雯丽 张俊 吴方正 冯贺平
摘 要:针对公司因业务需要对零件号与数模号进行了适度分离后,如何保证数模号创建时两者的一致性和正确性等问题?本文介绍了在CATIA中基于VBA进行二次开发,实现基于零件号生成数模号并创建其三维空数据的方法,保证数模号创建时的正确性及相关属性一致性,同时提升设计人员的工作效率。
关键词:CATIA VBA 数模号 Automation 接口
Implementation and application of CAD data coding based on CATIA VBA
DU Hongyan Zhang Wenli Zhang Jun WU Fangzheng Feng Heping
Abstract:How to ensure the consistency and correctness of the two when the PartNumber and Model_Number is created, after they are properly separated thanks to companys businesss demand ?This article introduces the method of secondary development based on VBA in CATIA to generate a Model_Number based on the PartNumber and create 3D empty data, to ensure the correctness and consistency of related attributes when the Model_Number is created, and to improve the working efficiency of designers.
Key words:CATIA VBA,Model_Number,Automation,API
1 前言
根据本公司业务发展规划和实际应用需求,研发阶段的工程BOM与设计CAD进行了适度分离,并基于有对应关系但不完全相同的零件号与数模号分别在两个系统内进行管理,因此产生了零件号与数模号在生成与发布时不同步、不一致及不继承等问题。
基于零件号及其属性,如何保证数模号及数模属性创建时的正确性与一致性?本论文介绍了一种利用CATIA提供的二次开发功能,开发自动生成数模号并创建其三维空数据的程序,用自动化程序方式解决这一问题。
2 CATIA二次开发简介
CATIA是达索公司的CAD/CAE/CAM一体化软件。CATIA通过进程内应用程序和进程外应用程序两种接口通信方式,提供了多种二次开发方法,如Automation API、CAA(Component Application Architecture,组件应用架构)、C++、Java API等。基于Automation API的VBA开发相对简便且方法灵活,交换式的定制开发可以快速满足CAD数据管理和专业设计的需求。本文正是介绍用CATIA VBA满足正确创建数模号需求的程序。
3 设计思路及流程
3.1 总体思路
基于VBA的解决方案,工程师首先需要在公司变更系统中通过创建EWO(设计变更指令)申请零件号;然后在CATIA内基于EWO号建立搜索,通过与变更系统的接口,获取零件号及相关属性;最后根据数模编码规则匹配对应的属性,生成数模号并创建其三维空数据。
3.2 流程图
4 关键技术
4.1 接口交互
本文提供的方案共涉及3次与变更系统接口的交互:
(1)以參数形式给接口传递EWO号,接口以文本的形式返回EWO包含的零件号及相关属性;
(2)以文本形式给接口传递EWO号及零件号信息;
(3)接口以文本形式返回根据规则生成的数模号。
4.2 三维空数据创建API应用
Automation文档结构为树形结构,顶层Application对象下的Documents对象是Part、Product、Drawing等文档对象的集合,文档对象下包含子对象及方法用于操纵零件文档[1][2]。所有接口方法都直接或间接地从顶层接口继承,逐层定义[3]。
基于此树形文档结构,本文提供的方案,首先定义文档对象PartDocument和ProductDocument,基于文档对象,再定义Part和Product数据对象,最后分别利用其子对象和方法,完成三维空数据新建、属性创建及属性赋值。
5 实现过程
5.1 定义CATIA
首先定义CATIA对象, VBA程序才能连接访问CATIA,具体如下:
Public Catia As INFITF.Application
Set Catia=GetObject(,"CATIA.Application")
If Catia Is Nothing Then
Catia= CreateObject("CATIA.Application")
End If
Set GetCATIA = Catia[1]
5.2 用户权限
为确保使用用户的合规性,及方便后期功能扩展,本方案设计包含用户权限。权限结合以下两种方式进行控制:
(1)结合本公司的域账号管理策略,非本公司域内账号不可使用;
(2)用户信息基于车型项目维护在数据库。本方案通过与数据库交互,确认用户是否可用。