基于CATIA 二次开发的汽车产品数据处理

2024-05-06 05:43朱财良
装备制造技术 2024年3期
关键词:二次开发手动工装

朱财良

(东风柳州汽车有限公司,广西 柳州 545000)

0 引言

CATIA 软件作为通用的CAD 软件,广泛应用于各个制造行业,特别是汽车行业,几乎所有的汽车主机厂都使用CATIA 作为整车零部件设计工具。由于汽车的日益发展,传统的设计软件无法满足单个行业或企业的个性化需求,所以针对不同客户的需求,对CATIA 进行相应的二次开发有着重要的意义。目前对CATIA 的二次开发主要集中在数据建模上,而对数据处理上较少,在与外部软件连接上也主要集中在EXCEL、Word 等Office 软件上,而对Windows 的连接较少。张溥海运用CATIA 二次开发方法完成了对组合夹具管理系统及工装夹具设计系统的构建,提高了企业对组合夹具的管理及设计效率[1]。杨宇超通过CATIA 二次开发设计了可以提高船舶管道设计的效率和质量的船舶管道布置CAD 系统[2]。赵立营等[3-6]对CATIA 进行二次开发,在三维标准件库、螺旋桨绘制、铰链传送带、轿车仪表盘视野系统等方面取得了很好的成果。

汽车整车零部件设计部门输出的产品(由多个子产品或者零件组成)数据包含比较多的设计信息(设计过程产生的点、线、面,孔、面信息等)(图1)工艺部门往往需要对数据进行处理后再进行其他工艺工装设计(比如零部件定位策略的设计、夹具的设计、检具的设计、装具的设计等),以达到删除不必要的设计信息,保护知识产权,简化数据的目的。而各大汽车主机厂对整车零部件数据的处理基本处在人工手动操作的水平上,这完全依赖于CATIA 提供的现有功能,即使人员操作熟悉度再高也免不了操作费时费力的状况,同时受人员水平的限制,还会有出现错漏的风险。

图1 设计部门输出的产品数据

针对上述问题,提出了一种在CATIA 中可实现由产品数据批量转换为Part 方法,并对转化后的零件进行分类优化处理。通过CATIA Automation 技术,利用CATIA 提供的API 以及Windows API,以VBA 为载体,利用递归思想,实现了CATIA 产品数据的一次性批量处理,同时可以避免人员手动操作出现的错漏,大大提高工作效率,为后续工艺工装设计提供坚实的基础。

1 CATIA 二次开发简介

目前,针对CATIA 二次开发主要有四种方法:智能软件(Knowledge ware)、交互模式用户自定义特征方法(Interactive User Defined Feature)、基于组件的应用架构(CAA)、使用自动化对象编程接口方法(Automation API)。智能软件、交互模式用户自定义特征方法仅能满足较为简单的功能需求开发,对于较为复杂功能则需用到基于组件的应用架构或者使用自动化对象编程接口方法来开发。

基于组件的应用架构(CAA)是一系列C++库函数,并在CATIA 运行时加载该库函数,需要用户安装CAA RADE 模块来实现可视化编程。由于其覆盖了定义新口、控制交互过程、应用和建立新的数据模型等方面的应用,几乎可以实现CATIA 所有功能的二次开发。正是由于CAA 具有稳定性好,功能强大、全面等特点,其适用于工程化、专业化、智能化和可扩展的开发,但同时其对二次开发人员的水平也要求高。

Automation API 是实质上是使用宏程序的开发方法。对CATIA 进行宏编程操作的方法可以分为2种方法:(1)进程内脚本;(2)进程外脚本。前者是通过VBA、CATScript 以及VBScript 等脚本语言通过CATIA 内部的脚本引擎来进行解析的方法。Automation技术是对应一系列对象遵循一定的不能颠倒的层次顺序组成的一种对象结构,不同的对象在CATIA 中都有一一对应的功能[7]。CATIA Automation 技术中所有功能均以方法和属性的方式存在CATIA Automation 对象中,二次开发人员可以根据其方法和属性对CATIA 进行二次开发对数据进行处理。Automation 技术二次开发对开发人员的水平相对于CAA 来说较低,可以满足中等难度功能开发。

因为要实现的功能难度,本研究选择中等开发难度的Automation 技术开发。

2 CATIA 汽车产品数据的转化及处理

汽车零部件设计部门输出的产品数据包含比较多的设计信息,工艺部门需对数据进行处理后再进行其他工艺工装设计。在手动操作的情况下,通常是将产品转化为零件,以到达消参数的目的,并将多零件组成的产品转化为一个零件。对于二次开发同样如此。

2.1 递归的实现

在CATIA 数据中,对于某一特定的、少层级、少数据的产品,可用人工数的方法来确定遍历的个数及每个遍历的次数。但对于未知数据的处理,数据可能涉及未知的多层级,内部可能出现嵌套,这时需要运用递归的思想来解决问题。在整车零部件数据中,存在多个层级,存在多个产品,产品中可能包含下级的子产品,这数据是一个复杂的数据。对于每个产品,我们都需要将其转化为单个零件,其处理过程是一样的,可以将这个过程单独写在一个函数中,假如产品中包含下层级的产品,则可以调用函数本身。

递归函数定义主要代码如下:

通过递归函数,可以实现所有产品的遍历,从而保证对所有产品的处理。

2.2 CATIA Automation 技术中没有的API 的实现

在CATIA Automation 技术中,并不是所有的人工手动操作都有直接对应的API,比如本研究需要实现的产品转为零件中关键的一步人工手动操作命令“从产品生成CATPart…”(该命令将多个带参或者不带参零件组成的产品转化不带的零件文件)就没有API。CATIA 二次开发提供了部分人工操作相对应命令无对应直接API 的解决方案,即使用StartCommand。StartCommand 方法是CATIA 提供的应用对象,只需传递要作为参数启动的命令的名称,CAITA 即可启动,如同单击了其图标或者在“命令栏”框中输入命令一样。

对于需要解决的问题,StartCommand 应用主要代码如下:

CATIA.StartCommand“从产品生成CATPart...”

2.3 Windows API 的应用

StartCommand 功能,不是万能的,在命令执行过程中,如遇到需要用户交互时,命令将终止;如遇到弹出对话框,需要点击“确定”才能执行时,否则Start-Command 语句会忽略,继续执行下条命令,相当于StartCommand 语句不起作用。比如本研究需要实现的功能中,在运行CATIA.StartCommand “从产品生成CATPart…”后,会出现一个对话框,需要选择“确定”才能完成数据的转换,否则不执行数据转换。

为解决上述问题,需要对弹出对话框进行控制,而Windows API 则能提供解决方案。Windows API 是Windows 应用程序接口,是针对Microsoft Windows 操作系统家族的系统编程接口。

2.3.1 延时的应用

StartCommand 作为一个非常规使用的CATIA 方法,执行时有时候会出现电脑反应慢的情况,导致出现后续部分代码不执行的问题。

使用Windows API 中timeGetTime 函数可以获取以毫秒计的系统时间(该时间为从系统开启算起所经过的时间),再进行处理可以实现延时。

延时函数主要代码如下:

2.3.2 弹出窗口的控制

通过Windows API,检索弹出窗口(图2),找到弹出窗口的“确定”,再发送左键单击指令。实现该功能主要应用Windows API 中的FindWindow、Enum-ChildWindows、GetWindowText、GetWindowTextLength和SendMessage 这几个函数。

图2 弹出窗口

使用FindWindow 函数来检索系统中是否存在具有指定类名或窗口名的窗口;使用EnumChildWindows 函数通过将句柄传递给应用程序定义的回调函数,枚举属于指定的父窗口的子窗口;使用GetWindowText 函数获取指定窗口的标题;使用GetWindow-TextLength 函数获取指定窗口标题的长度;使用SendMessage 函数向指定的窗口发送消息。

向窗体中发送左键单击“确定”命令,主要代码如下:

SendMessage WindowBotOK,MouseB_CLICK,0,0

发送“确定”命令后,产品数据开始转化,最终形成如图3 所示的不带参的几何体和几何图形集组成的一个零件数据。

图3 转化后结果

2.4 数据处理

根据遍历产品时记录的子产品的名称,对于需包含焊点信息的工艺工装设计文件(如零部件定位策略的设计文件、夹具的设计文件等)依次检索产品转化后的数据;对于不需包含焊点信息的工艺工装设计文件(如检具的设计文件、装具的设计文件等)则在产品转化后的数据中不检索焊点,其他依次检索,对符合子产品名称条件的进行复制粘贴到模板文件指定位置中,直至所有子产品都复制完成,如图4 所示(含焊点信息)。

图4 检索零件(含焊点信息)并复制到模板中

使用CATIA.Documents.Open 可以打开建立好的模板文件;使用Search 可以检索指定零件并选择;使用Copy 和Paste 在不同文件中进行复制粘贴;使用SaveAs 对处理后的模板文件进行另存为其他文件。

由于处理后的文件是对原文件子产品的分别复制粘贴到指定位置,所以保证了数据处理与原产品结构的一致性。复制粘贴的数据是不带参的,且有选择的,从而也消除了产品设计过程中对工艺部分没用的信息。

3 实例验证

为验证CATIA 产品数据转化处理的效率和准确性,分别使用二次开发工具和手动操作两种处理方式进行对比。

3.1 测试模型

测试模型选择某车型的一个总成,该总成及其下级总共7 个总成(含下级下包含的所有更小的总成)(图5),62 个实体零件(含螺母及螺柱等标准件)。

图5 某总成及其下级总成

3.2 效率对比

使用二次开发工具与人工操作分别对上述测试模型进行数据转化及处理,效率测试结果详见表1。通过对比测试结果可知,使用二次开发工具相比于手动操作效率提升681.8%,效率提升极为显著。

表1 效率对比

二次开发工具效率提升极为显著的原因主要有2 点:(1)使用VBA 对CATIA 进行二次开发,运行时代码时计算机执行的是更接近计算机底层语言的高级语言,执行速度快(经测算执行一行简单代码的时间为几毫秒);(2)递归函数、StartCommand、timeGet-Time、SendMessage、Search等方法、Automation API、Windows API 的使用实现了所有手动操作均可用代码执行代替,代码可以连续不间断地执行,直至该执行的代码都执行完成。

由于使用延时函数及递归函数,从而可以实现一次性无缝连接批量处理,无需人员额外进行监控,人力资源得以释放,因此在进行数据转化处理同时不影响人员处理其他工作,进一步提升效率,而手动操作则不能。

3.3 准确性对比

手动操作在总成识别、总成名称编写(数据处理时用到)、数据复制粘贴等方面均可能出现错漏,而通过二次开发用代码实现代替人工,可以保证数据处理100%准确。

4 结语

通过CATIA Automation 技术,利用CATIA 提供的API 以及Windows API,以VBA 为载体,利用递归思想,可实现CATIA 产品一次性批量转换为零件,并对转化后的零件进行分类优化处理,也实现了汽车CATIA 数据的批量处理。通过实例验证对比二次开发与手动可知,二次开发效率提升681.8%,效率提升极为显著,在进行数据转化处理同时不影响其他工作的处理;二次开发可以保证数据处理100%准确,避免人员手动操作出现的错漏,为后续工艺工装设计提供坚实的基础。

猜你喜欢
二次开发手动工装
工装靴
轴钻斜孔工装设计
浅谈基于Revit平台的二次开发
一种取出塑件残余量的辅助工装
浅谈Mastercam后处理器的二次开发
西门子Easy Screen对倒棱机床界面二次开发
小巧手动起来
风行S5001.6L手动尊享型
宝骏5601.8L手动豪华型
C4世嘉 1.6L手动豪华型