基于STEP中性文件的旋转机械Pro/E模型C++实例化

2013-08-22 07:34刘保国徐小定岳龙旺华海峰
制造业自动化 2013年4期
关键词:数据类型关键字中性

刘保国,徐小定,岳龙旺,华海峰

(河南工业大学 机械电子工程研究所,郑州 450052)

0 引言

STEP(Standard for the Exchange of Product Model Data)标准是一套关于产品整个生命周期中产品数据的表达和交换的国际标准,通过一种不依赖于具体系统的中性机制,实现产品全生命周期中的产品信息数据表达的一致性和完整性[1]。随着制造业自动化的快速发展,STEP标准已经得到了普遍的重视和应用,特别是在航空航天、船舶、汽车等行业更是有了很大的发展。

随着计算机技术的进步,各类CAD、CAM、CAPP、CAE软件促进了制造业自动化的发展。面对多种多样的CAX软件,需要找到一种通用的数据交互模式来解决异构环境下的数据共享问题,而基于STEP标准的中性文件可以很好的解决CAX软件之间的接口问题。国外许多研究单位,如Product Data Integration Technologies公司,Object Management Group等都在进行STEP方面的研究工作,现有专门支持遵循STEP标准的产品建模和产品数据交换的软件系统有Pro STEP和STEP tools。国内对STEP标准的研究处于探索发展阶段,国家技术监督局标准化所、航空625所、一汽和二汽合资创办了STEP产品数据技术中心(C-STEP);哈尔滨工程大学在STEP的AP201应用协议方面取得了一定研究成果;还有一些学者从微观上将STEP应用于Pro/E、有限元等软件进行下游开发。

旋转机械是工程中广泛使用的一类设备,其动力学问题的分析方法与一般的机械结构动力学问题不同,为此,作者及其领导的课题组开发了旋转机械CAE系统。这是一款针对旋转机械设备动、静力学问题的特点专门开发的分析软件,可以分析转子的固有频率、临界转速、稳定性、不平衡响应等,也可以进行旋转机械设备的动平衡计算[2]。

本文以旋转机械的转子为研究对象,在对基于STEP标准的中性文件进行结构分析的基础上,通过建立中性文件与c++之间的映射关系,实现中性文件c++对象的实例化,最终实现CAD与旋转机械CAE系统分析软件之间的无缝联接。

1 Step中性文件的结构

ISO 10303-21规定基于EXPRESS语言(ISO 10303-11)的产品三维模型(ISO 10303-203)的中性文件表达格式。STEP中性文件采用纯正文编码格式,以关键字ISO-10303-21开始,以关键字END-ISO-10301-21结束,由头部段(HEADER)和数据段(DATA)两部分组成[3]:

头部段以关键字HEADER开头,以关键字ENDSCE结束,包含所用三维建模软件的相关信息。

数据段是由EXPRESS定义的概念模式中实体的实例,以关键字DATA开头,以关键字ENDSCE结束,包含了产品的几何数据信息和拓扑关系。

中性文件举例如下:

ISO-10303-21; /*文件开始*/

HEADER; /*头部段开始*/

…… /*文件信息*/

ENDSEC; /*头部段结束*/

DATA; /*数据段开始*/

……

#87=CLOSED_SHELL('',(#48,#63,#76,#86));/*实体实例*/

……

ENDSEC; /*数据段结束*/

END-ISO-10303-21; /*文件结束*/

中性文件的数据段描述格式如下:

#ID=实体关键字(‘实体名称’,属性1,属性2,……);

在数据段中,产品的几何实体分成很多的实体实例,每个实体实例都以“#”开始,以“;”结束,并且都由唯一的实体实例标识号ID(正整数)标识,ID号是为了区别不同的实体实例。实体实例的关键字跟在ID号的后面,是与其他语言建立映射的关键。实体实例的实体名称和属性包含在关键字后面的括号里,实体名称和属性之间用特殊字符“,”分割开来。实体实例之间可以被调用形成拓扑关系,构成几何实体特征,同一个实体实例可以被多个实例调用[4]。

STEP中性文件对产品的描述主要基于b-rep表达的实体造型,由点、线、边、环、面、壳通过路径使产品几何与拓扑信息联系在一起,从而建立实体模型。“CLOSED_SHELL”表示壳,处于最上方,它是由高端面“ADVANCED_FACE”形成的一个集合,面又是由面边界“FACE_OUTER_BOUND”组成。方向“DIRECTION”和笛卡尔坐标点“CARTESIAN_POINT”是最基本的元素[5]。

图1 Pro/e生成的转子封闭轨迹

图1 是Pro/e生成的转子封闭轨迹,从它所形成的STEP中性文件的部分描述可以看出各个实体间的联系(如图2所示)。几何实体轴由#87定义,它由高端面#48、#63、#76、#86组成。端面#48又是由面边界#47和平面#41组成,#41通过三维空间的2坐标轴系#40定义,而#40由笛卡尔点#37给出坐标位置,由#38和#39给出方向;半圆柱面#63由面边界#62和圆柱面#53组成,#53通过三维空间的2坐标轴系#52和圆柱面半径2.5定义,而#52由笛卡尔点#49给出坐标位置,由#50和#51给出方向;半圆柱面#76由面边界#75和圆柱面#68组成,#68通过三维空间的2坐标轴系#67和圆柱面半径2.5定义,而#57由笛卡尔点#64给出坐标位置,由#65和#66给出方向;端面#86又是由面边界#85和平面#81组成,#81通过三维空间的2坐标轴系#80定义,而#80由笛卡尔点#77给出坐标位置,由#78和#79给出方向。

图2 Pro/e生成的中性文件各个实体间的联系

2 实体映射的建立

STEP标准以EXPRESS作为其形式化的建模语言。EXPRESS建模语言在STEP中性文件中用于规定实体实例的语法结构,描述实体实例的信息需求,是建立映射的基础。从描述结构上看,可分为:应用层、模式层、说明层。模式说明描述了一个逻辑上独立、完整的概念模式,包含类型说明(TYPE specification)、实体说明(ENTITY specification)、规则说明(RULE specifi cation)、常数说明(CONST specifi cation)等。一个应用数据模式说明可以用几个子模式说明表示,这些子模式间可以并列、嵌套或者相互引用,也可以引用别的模式说明中的实体说明[6]。

要把用EXPRESS描述的STEP中性文件格式翻译为c++描述的格式,就要建立相对应的映射规则。EXPRESS的数据类型包括简单数据类型、聚合数据类型、命名数据类型、构造数据类型和广义数据类型。简单数据类型映射定义如表1所示。

表1 EXPRESS简单数据类型与C++映射关系

所有的聚合数据类型(LIST,ARRAY,SET,BAG)都映射定义为c++数组数据类型如表2所示。

表2 EXPRESS聚合数据类型与C++映射关系

其他数据类型的映射定义如表3所示。

表3 EXPRESS其他数据类型与C++映射关系

通过以上映射规则就可以建立相对应的映射,把EXPRESS实体映射为c++的类,从而将EXPRESS描述方法翻译为c++所描述的格式,下面是建立对应映射的应用实例,如表4所示。

表4 EXPRESS实体到C++实体映射

3 实例化

STEP中性文件的c++实例化就是要把STEP中性文件描述的产品信息转化为c++语言的描述。由于STEP中性文件是一个庞大的字符串形式的文本文件,必须对中性文件做预处理才能进行操作。因为中性文件数据段具有固定的格式,因此可以采用字符分割的方法将实体的信息进行分段,将分段后的信息保存在结构体中以备利用。所谓字符分割就是以“=”、“,”、“(”、“)”作为特殊字符,将实体信息在这些特殊字符处分割成各个部分。

STEP中性文件经过词法分析预处理后被保存在结构体中,通过结构体中的m_strKeyword[]建立关键字表,将所有的关键字包含在关键字表里。

结构体形式如下:

struct mode

{ char m_strID[]; /*实体标识号*/

char m_strKeyword[]; /*实体关键字*/

char m_strName[]; /*实体名称*/

char m_Attr1[]; /*实体属性1*/

char m_Attr2 []; /*实体属性2*/

char m_Attr3 []; /*实体属性3*/

……

};

转子模型的STEP中性文件经过预处理模块处理后其所描述的产品信息被保存在结构体mode中。首先遍历由结构体中m_strKeywords[]建立的关键字表,调出关键字,然后根据所编写的判断程序,查找关键字在内存中所对应的c++实体类描述,建立该实体c++描述的映射关系,然后将保存在结构体中的实体信息作为参数传递给对应的c++实体类,构造c++实体对象,从而完成中性文件中实体的实例化。流程如图3所示。

图3 实例化流程

笛卡尔点的实例化部分程序如下:

If(strcmp(m1.m_strKeywords,"CARTESIAN_POINT")==0)

//通过关键字表判断CARTESIAN_POINT是否为关键字

{ fl oat d1,d2,d3;

int id;

d1=atof(m1.m_Attr1);//将结构体中的属性转化为浮点型

d2=atof(m1.m_ Attr2);

d3=atof(m1.m_ Attr3);

id=atof(m1.m_ID);

CARTESIAN_POINT cartesian_point;//建立名为cartesian_point的对象

cartesian_point.Getcartesian_pointparamter(d1,d2,d3,id);

//实例化cartesian_point对象

}

4 结束语

针对特定的转子分析软件,通过对转子模型的STEP中性文件结构分析,建立其与c++之间的映射关系,在词法分析模块预处理后,按照其与c++间的映射关系,通过实例化程序完成中性文件的c++实例化。本文对于实现CAD与旋转机械CAE系统分析软件的集成有重要参考价值。

[1] 童秉枢,李学志,吴军.机械CAD技术基础(第2版)[M].北京:清华大学出版社,2003.

[2] 河南工业大学.河南省高校杰出科研人才创新工程资助项目—“旋转机械的随机参数系统动力学问题研究及应用”课题研究报告[E].2009,9.

[3] 董晓岚,黄筱调.关于STEP中性文件数据结构的研究与实现[J].机械设计与制造,2005,10(10):49-51.

[4] 王锐,张承瑞,刘日良.step中性文件的信息提取与图形显示[J].机械科学,2004,9:1117-1119.

[5] ISO Industrial Automation Systems and Integration-Product Data Representation and Exchange-Part 21:Implementation Method :Clesr Text Encoding of the Exchange Structure[S]. ISO 10303-21,1994.

[6] 徐晓明,卢炎麟.STEP模式的关系数据库实现中的数据字典及其映射方法[J].现代制造工程,2006,9.

猜你喜欢
数据类型关键字中性
履职尽责求实效 真抓实干勇作为——十个关键字,盘点江苏统战的2021
急性发热性嗜中性皮病1例
如何理解数据结构中的抽象数据类型
成功避开“关键字”
画质还原更趋中性 Vsee UH600 4K高清播放机
中性墨水的消泡和消泡剂
基于SeisBase模型的地震勘探成果数据管理系统设计
线上众筹产品的特征分析与研究
高桥爱中性风格小配饰让自然相连
相似度计算及其在数据挖掘中的应用