面向NURBS曲面在线检测的IGES文件解释器的开发
2014-12-31王清华
王清华
(宜昌测试技术研究所,湖北 宜昌 443003)
0 引言
IGES文件是实体信息传递的媒介和载体,为满足精简和通用性要求,将不同实体的同类信息以固定格式集中记录;在线检测系统需要的参照信息是定义任意NURBS曲面的所有实体信息。IGES文件解释器是把NURBS曲面信息从以信息类别为分类依据的IGES文件中析取,然后将这些信息以实体为分类依据进行存储,供在线检测系统调用。本文以IGES文件为对象,研究从中析取NURBS曲面信息的方法,在Visual C++6.0平台开发IGES文件解释器[1-3],为在线检测系统提供参照曲面信息,生成测量点集。
1 NURBS曲面定义信息的解析
1.1 NURBS曲面的数学定义
k×l次NURBS曲面S的数学描述如下:
其中:di,j为控制点坐标,按(m+1)×(n+1)矩形阵列排列;ωi,j为di,j对应的权因子;(u,v)为参数域坐标,Ni,k(u)和Nj,l(v)分别为u向的k次基函数和v向的l次基函数。
1.2 NURBS曲面及修剪信息在IGES文件中的描述
S=p(u,v)定义的NURBS曲面不能描述任意边界的自由曲面,这种曲面称为原始曲面;修剪曲面是由曲面S上的数条曲线形成的闭合曲线链对原始曲面S的边界修剪后的曲面,修剪S曲面能描述任意曲面。修剪外边缘的闭合曲线链称为外边界,修剪曲面只有唯一外边界;修剪内边缘的闭合曲线链称为内边界,内边界可以有任意个,但各个闭合曲线链不能相交。内边界必须位于外边界的内部,修剪曲面就是S中内边界外部与外边界内部的公共区域。
1.3 IGES文件组成
IGES文件的基本信息包括记录点、线、面、体信息的几何实体和记录几何实体间结构、标注等信息的非几何实体[4]。完整的IGES文件由6段组成:标识段B指明文件记录格式,CAD系统输出IGES文件一般采用压缩ASCII格式,每行有固定的80列字符;开始段S记录文件来源信息;全局参数段G提供CAD系统生成文件的属性信息;目录条目段D每个实体占用两行,记录其属性数据及定义数据在P段的索引;参数数据段P使用自由格式记录实体的定义数据;T段记录文件各段大小。
2 IGES文件解释器工作方法
2.1 定义数据缓冲区及数据存储格式
IGES文件通过字符以特定格式记录NURBS曲面信息。定义缓冲区后,把IGES文件的所有字符存入缓冲区,就有唯一地址指针与字符对应。借助缓冲区的地址指针处理IGES文件的字符信息,实现析取NURBS曲面信息的解释功能,用于在线检测的测量点集的数据处理。缓冲区的结构体定义如下:
IGES文件解释器需从缓冲区中析取NURBS曲面及其修剪信息,并将这些信息分类存储。根据1.1节NURBS曲面的数学描述,定义如下结构体存储从IGES文件中析取的NURBS曲面及修剪信息:
2.2 解析NURBS信息在D,P段中的通讯方式
IGES文件中NURBS曲面信息的属性信息记录于D段,定义信息记录于P段,同一NURBS曲面的属性信息与定义信息通过如图1所示的两种方式实现通讯:
(1)每个实体在D段中第1行的9~16列、第2行的25~32列分别记录该实体定义信息在P段中的首地址和占用行数。
(2)实体在P段每行的65~72列都给出的地址是指向该实体属性信息在D段的地址。
图1 目录条目段与参数数据段的映射关系
析取同一实体完整信息的关键就是通过上述两条通讯途径建立属性信息和定义信息之间的联系。通过结构体数组*de[i]和*pd[i]记录第i个实体的属性信息和定义信息,数组下标i是缓冲区中第i个实体属性信息与定义信息通讯的纽带。
定义char line[80],每次读取IGES文件一行的80列字符,根据2.1节定义的缓冲区数据存储格式以及上述D,P段通讯途径实现同一实体不同数据的关联存储,实现流程见图2。
2.3 析取有效实体信息
实体在D段中记录第1行65~72列的8个字符,从左至右每两位一组依次控制着实体的可见性、独立性、用途、层次4种特性信息,缓冲区中第i个实体的属性数据分别记录于de[i].visible,de[i].dependency,de[i].use,de[i].hierarchy,通过处理4个属性值析出可见几何实体数据,实现流程见图3。
图2 各实体信息的读取与存储流程
图3 可见几何实体信息的析取流程
2.4 NURBS曲面及修剪信息的析取与存储
IGES文件中,修剪曲面(实体类型号为144)信息通过NURBS曲线(126)、直线(110)与弧(100)等组成的组合曲线链(102)修剪NURBS曲面(128)形成;组合曲线链(102)与NURBS曲面(128)通过参数曲面实体上的曲线(142)记录的方式建立联系。在IGES文件中,1.2节介绍的修剪拓扑关系通过144,142,102表述。NURBS曲面及修剪信息的析取与存储流程见图4。
图4 NURBS曲面及修剪信息的析取与存储流程
由于外边界的唯一性,根据144中边界指针顺序和读取顺序规定trim_loop[0]存储外边界,其后的其他元素存储内边界。
2.5 IGES文件解释器的功能实现
IGES文件解释器实现过程是读入IGES文件,过滤掉非几何信息,析取可见的模型轮廓曲面信息,按2.1节介绍的方式存储、输出NURBS曲面,修剪曲线链及其拓扑关系等。IGES文件解释器的完整实现流程见图5。
图6为Pro/E 3.0中原始模型。图7为开发的解释器输出数据通过OpenGL平台再现模型。IGES文件大小为3 224kB,经过与原始模型对比,无特征丢失。表1列出了解释出的各实体数量。
图5 IGES文件解释器的实现流程
图6 Pro/E3.0中原始模型
图7 IGES文件解释器输出数据在OpenGL的再现模型
3 结论
(1)解析了IGES文件中使用NURBS曲面及修剪信息描述模型轮廓曲面的方法,以及NURBS曲面与修剪信息的拓扑关系;提出一种NURBS曲面及修剪信息的拓扑存储方式,实现了在线检测系统与CAD系统之间的数据无损传递。
(2)开发了面向NURBS曲面的IGES文件解释器,经过反复验证,其能够高效、稳定、完整地解释IGES V5.2/5.3文件中NURBS曲面及修剪信息。
表1 IGES文件解释器解释的IGES文件中各实体数量
[1]施法中.计算机辅助几何设计与非均匀有理B样条[M].北京:北京航空航天大学出版社,1994.
[2]雷源忠.我国机械工程领域研究进展与展望[J].中国科学基金,2009(3):134-138.
[3]王清华.基于IGES的NURBS曲面在线检测系统关键技术研究[D].武汉:武汉理工大学,2012:23.
[4]中国标准化研究院.GB/T14213-1993初始图形交换规范[S].北京:中国标准出版社,2009:1-269.