文章

CATIA二次开发技术在海洋工程管路设计中的应用

2018-09-20杨文博 韩华伟

2905阅
文章研究基于CAA(ComponentApplicationArchitecture)方式,在Windows XP平台上对CATIA进行二次开发的关键技术,提出了一种崭新的基于CATIA海洋平台管路设计的理念,实现了Oracle数据库中的数据与三维模型的同步管理。

    0 引言

    海洋工平呈设计与制造工作量大,建造周期长,模型数据量大。而管路专业又是海羊工程中的重要组成部分,因此,对平台中管路设计信息、加工信息、材料、管路焊接报验进行标准化管理尤为重要,这样可满足多个项目同时设计和材料分类管理的要求,对于批量建造项目,可以直接出图,无需进行模型设计,提高了工作效率。

    海洋工程管路模型设计可以采用更为直观的三维模型设计来提高用户的视觉效果,达到高效高精度的设计目标,而CATIA作为—款强大的三维软件,为客户提供了产品的全周期管理,从产品的原理图设计到模型的详细设计,再到模型数据管理(PMD)等可 实现用户的跨平台协同操作,并提供二次开发编程工具和接口。通过二次开发,CATIA软件成为海羊工程产品设计阳制造的首选软件平台。然而,如果要提高设计效率和实现材料的全生命周期管路,就要建立完整的规范,使用软件直接把三维模型转化成二维设计图。为此,本文详细介绍了CATIA开发解决方案的—般步骤、主要接口的调用方法和管路专业的二次开发关键技术,并将二次开发技术应用到CATIA管路全生命周期解决方案。

    l CATIA解决方案的技术综述

    作为一款工程软件,CATIA可以根据客户的特殊需求,定制相应的解决方案,并通过客户化的接口,实现外部数据和CATIA内部数据的无缝j{ 接。当前,主要可以通过两种方式对CATIA的内置函数进行调用操作:内置宏语言和C++或者JAVA CAA应用组件架构。两种方式来开发各有利弊。

    1.1 使用宏(Macro)调用CATIA内置函数接口

    宏语言是CATIA提供的—种开发语言,可以通过录制设计员的操作,来获取语言代码,再通过自己的修改,来实现对CATIA内部函数的调用。该方法允许客户获取CAT1A的数据模型,其优点是简单易学,操作方便;在调试程序时,不需要关闭CATIA。缺点是只适用于简单的操作,而且DS只开放了部分VBA的接口。

    1.2 使用组件应用架构(CAA-RADE)调用CATIA内置函数接口

    CAA中的C++和Java应用接口,是通过COM+的组件模式开发。该方法功能强大,可以访问CATIA 的任何开放的接口并可以直接调用c抖现有的应用程序来实现所需功能,并根据客户需求,定义适合自己需要的编码体系和架构体系。

    CAA使用面向对象的C++或更为灵活的JAVA语言,采用COM+架构,来调用CATIA内置函数。由于COM 具有很好的独立性和可扩展性,使得CAA这种开发方式更加标准化,代码执行率更高。CAA在程序中能调用所有的微软组件结构,兼容C++和JAVA的接口函数,使开发更加灵活、简单。CATIA提供的内置函数接口都以(*.h)的形式保存在CATIA安装目录下,可以直接调用。

    不同的头文件包含了不同的功能,如CATBaseUnknown.h包含了CATIA 基类接口,CATIProduct.h包含了对CATIA三维模型的所有操作,CATIDrawing.h包含了多CATIA二维图的操作等。CAA的架构如图1所示。

    1

    图1 CAA架构

    2 CATIA管路生命周期系统

    2.1 CATIA管路生命周期构建思想

    CATIA管路生命周期的设计是基于在实际项目中管子的实际操作流程来实现的,从CATIA三维设计到材料下发,再熬管路加工,再到船上安装,再到焊接报验一系列的标准操作雕。CATIA管路生命周期后台数据库包括基础数据库和模型数据库,基础数据库包括加工信息、材料信息、安装位置等信息。模型数据库包括CATIA的CGR模型信息和生存的二维PDF信息。判断标准的数据,目的是为了减少和消除计算机在运挪人为的干预问题。通过将设计基础数据放入数据库可以减少输入和输出的次数,数据示意图见图2。

    2

    图2 数据示意图

    CATIA管路生命周期系统的建立和运行按照下面的方法实施:

    1 )在CATIA软件中进行二次开发,利用CATIA 自身的接口,构建如图3和图4所示的用户界面。 程序通过Agent机制,实现对主窗口的调用,实现 数据的输入与输出。

    2 )把三维模型转化成二位设计图,并统计出材料列表,如图5和图6所示。

    3

    4

    2.2 CATIA管路生命周期系统的高效性

    传统的CATIA管路出小票需要借助第三方软件SB3D才能完成,首先在CATIA中完成建模,然后把CATIA模型导入到SB3DS软件中,在这个过程中由于两种软件的不兼容性,会导致有些模型数据丢失,需要靠经验在SB3DS中修改,然后才能出小票,在这个过程中需要不断修改模型,导入SB3DS,效率很低;而CATIA则可以直接从三维模型中导出小票,减少了中间环节,以GM4-D项目102PB分段出小票为例,见表1。

    表1 出小票

    5

    由表1可以看出,仅—个分段—个人就可以比以前节约10.5h,那整个项目就可以节约大量的时间。

    2.3 CAA二次开发技术构成

    2.3.1 CAA对MFC(Microsoft Foundational Class)应用程序的调用

    以前CATIA 用户数据输入和操作界面主要使用CATlA提供的对话框进行开发。在本系统中调用了—部分微软的界面设计功能,节约了开发时间,提高了代码的执行效率,使用Microsoft Visual Studio2005提供的框架,采用COM方式调用CATIA接口和MFC函数。

    CATIA AP1支持一些WIN32 SDK的函数。如调用LoadLibrary0函数,获取了动态链接库。这三个函数是调用.dI1文件的关键。在程序外部编译好.dll文件后,CAA可以直接调用,提高CATIA二次开发的效率。

    2.3.2 CAA对Oracle数据库的操作

    本系统采用了Oracle数据库存储和Microsoft Visual Studio2005 C++的开发方式。系统采用了OCCI方法访问数据库,为了能使用OCCI库,必须在工程中直接引入#include<occi.h>头文件,以使编译器能正确编译。OCCI头文件包含三个指针:Environment*、Connection*和Statement*。Environment*通常被用来创建一个数据连接环境Environment::createEnvironment(Environment::Default)。通过Statement*可以返回—个结果记录集并通过OCCI里面的方法,提取到所需要的数据。在使用Connection*接口时,可以调用本身的方法createConnection(),直接传入参数,包括用户名、密码和数据库标识。ResultSet是—个记录集对象,用来存放从数据库中取到的数据。OCCI操作Orac数据库更加灵活,速度更快,与其他操作数据库方式相比,它提供了对数据库更多的操作功能,如数据锁定、游标控制、数据回滚等。使用OCCI的基本方法如下:

    1)必须引入OCCI.h头文件;

    2)用Environment对象访问Oracle数据库;

    3)利用建立好的连接,通过Connection对象执行SQL命令,或利用Recordset对象取得结果记录集进行查询、处理;

    4)使用完毕后关闭连接,释放对象。

    首先,利用c++语言调用Environment类型的指针*env, 通过这个指针就可以调用createConnection(usemame,pwd,db)建立数据库连接,成为访问到目标数}居库后,会返回—个指针con,通过con->createStatement(sq1)创建—个执行SQL语句的命令,调用state.>executeQuery()语句就可以执行SQL语句,访问数据库记录,进行数据居存储、修改等操作。

    3 结论

    CATIA管路模型数据提取、传递、处理和存储是—个庞大的数据处理的过程,本文提出了通过调用CATIA本身的内置函数接口,借助外部数据库来自动处理管路数据。

    本文提出的CATIA管路生命周期系统,实现了CATIA和Oracle数据库的数据无缝连接,为批量化造船提供数据源,为企业数据信息集成及管路打下了良好的基础。

    随着CATIA软件广泛用于海洋平台、航天科技等领域,应用CAA组件对CATIA软件进行二次开发会越来越重要,由于其本身结构的层次化和严谨,这项二次开发技术会受到越来越多的重视。

责任编辑:张纯子
本文来源于互联网,e-works本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供,并以尽力标明作者与出处,如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。联系方式:editor@e-works.net.cn tel:027-87592219/20/21。
读者评论 (0)
请您登录/注册后再评论
相关阅读