APP下载

基于DAG表示与产生式的IGES装配体数据交换算法

2012-04-07胡楷模

图学学报 2012年4期
关键词:结点指针处理器

黄 靖, 王 斌,, 胡楷模,, 张 慧,

(1. 清华大学软件学院,北京 100084;2. 清华大学计算机科学与技术系,北京 100084;3. 信息系统安全教育部重点实验室,北京 100084;4. 清华大学信息科学与技术国家实验室,北京 100084)

基于DAG表示与产生式的IGES装配体数据交换算法

黄 靖1, 王 斌1,3,4, 胡楷模1,2,3,4, 张 慧1,3,4

(1. 清华大学软件学院,北京 100084;2. 清华大学计算机科学与技术系,北京 100084;3. 信息系统安全教育部重点实验室,北京 100084;4. 清华大学信息科学与技术国家实验室,北京 100084)

初始图形交换规范(IGES)是目前应用最为广泛的中性文件格式标准之一,但是相关的研究主要集中在单零件的格式转换上面,对设计中经常用到的装配体的IGES格式研究较少。该文总结了常用CAD软件中装配体导出的IGES文件存储格式,提出并实现了一种基于图表示与产生式规则的IGES装配体数据交换算法,将IGES格式的解析过程标准化,使其具有通用性和可扩展性,并且正确性可以进行形式化验证。应用该方法,该文具体实现了多文件格式的装配体IGES前置和后置处理器。在几何造型系统TiGems7.0中进行的实验结果表明该算法具有较快的速度,也具有较好的鲁棒性。

初始图形交换规范;装配体;数据交换;有向无环图;产生式

初始图形交换规范(IGES)是目前应用最为广泛的中性文件格式标准之一。知名的CAD软件,包括 Solidworks,Unigraphics NX(以下简称 UGS),Pro/Engineering(以下简称 Pro/E),CATIA等都配置了IGES的导入/导出接口。由于数据交换算法对于实现CAD零部件的大规模复用起着非常重要的关键作用,所以基于IGES标准的数据交换算法及其相关问题在近年来也得到了广泛研究。

然而,现有的大部分方法主要是针对 IGES基本零部件的数据交换,以及与其相关的拓扑重构算法、曲面缝合算法、拓扑定向算法提出的,关于IGES装配体导入导出的相关理论和算法仍然很少。同时,由于涉及商业机密,现有商业软件对其基于IGES装配体的算法的设计原则和接口细节缄口不提。但从另外一方面来讲,为方便工业界中对零部件的交互设计,以及学术界中在对几何约束求解算法的研究中借鉴成熟CAD软件,十分有必要对IGES装配体的数据交换模块进行研究和实现。

1 相关工作

早期有关IGES的论文主要以介绍不断更新的IGES标准为主,通过对IGES标准本身的分析,给业界提供一定的借鉴意义[1-3]。随着IGES标准的不断成熟和完善,越来越多的学者开始研究IGES前后置处理器设计以及相应的曲线曲面算法[4-8]。其中Kahrs等[7]描述了前置处理器设计,重点讨论了如何从IGES实体中提取有用信息,以及如何把IGES中的实体转换到适当的坐标系统中;Kahrs[8]在1995年分析了IGES的句法,介绍了IGES所包含的主要实体以及内部实现细节,并且在最后分析了前后置处理器的复杂度,为前后置处理器的设计提供了一定的理论依据。

随着我国CAD技术的不断发展,更多的国内学者也针对IGES数据交换做了有益的工作。刘德智等[9]较早设计了一种基于裁剪NURBS曲面片的IGES曲面模型的前后置处理器,讨论了边界表示(B-Rep)表示的实体模型和曲面模型的相互转换,采用基于OpenEdge结构的曲面拓扑信息重建技术实现了拓扑重构;他们还对一些典型的CAD/CAM系统支持的IGES元素(实体)进行了总结,并给出了简略的IGES曲面模型的组织树图。冉红强等[10]介绍了IGES后处理器设计的全过程,提出了将曲面模型转换为实体模型的方法——以曲面拼合为核心的拓扑信息重构算法,同时引入了两种控制曲线精度的方法。徐昕等[11]探讨了用IGES文件作为数据交换文件开发IGES后处理器,实现了CMM(三坐标测量机)与CAD集成的算法。

由于上述算法所针对的IGES曲面模型中不记录零部件的拓扑信息,所以在后置处理器处理时必须进行相应的拓扑重构,这需要经过曲面拼合、拓扑定向等大量的数值计算,算法较为复杂,并且容易由于容差定义不一致而导致转换失败。针对这一问题,胡楷模等[12]基于IGES5.3标准,设计并实现了基于边界表示(B-rep)的IGES前后置处理器,实现了对单零件IGES格式(包括186多面实体B-Rep格式和144曲面格式)的导入和导出算法。针对IGES标准中实体模型有可能缺少参数域的情况,他们还提出了一套用于后置处理器中的参数域重构和修正算法[13]。

然而,上述算法和系统仅仅讨论了基本零件(包括曲面模型和实体模型)的导入导出和系统实现,并没有涉及装配体数据交换的相关理论和算法。截止目前查阅过的已有文献中,仅有孙伟宁等[14]提出了IGES装配体信息的提取流程,实现了Pro/E形式的装配体数据导入。但是,其分析是基于Pro/E的单文件装配体IGES格式的,对其他几个软件的IGES并未包括在内——事实上,本文的研究表明,CAD软件之间的装配体IGES存储格式有不小的差距;并且文献[14]只实现了后置处理器,而没有实现IGES导出的前置处理器。

另外,IGES标准[15]规定,声称支持该标准的实现应当说明对标准中各个实体类型号及格式号的支持情况,但是调查表明,并没有任何一个CAD软件说明支持情况的IGES用户文档。针对以上现状,本文通过测试逆推的方法分析研究了当前Solidworks、UGS、Pro/E、CATIA等软件生成的IGES装配体文件存储格式。在分析的过程中,本文提出了一种基于有向无环图(DAG)和产生式表示的IGES装配体数据交换算法,通过这种表示可以形式化定义装配体的数据结构,保证系统转换理论上的完备性和实践上的可行性。在此基础上,本文基于文献[12]所实现的单零件前后置处理器,设计和实现了基于IGES装配体的前后置处理器,可以统一处理与上述4种商业软件的装配体数据交换。

2 名词定义

一般而言,装配体可以看作一个较为复杂的树状结构。为便于讨论,首先定义本文表述中常用的一些名词。

定义1(零件) 不含任何装配信息的基本零件,对应普通个体或装配树的叶子。

定义2(装配体) 包含一定装配信息的零件集合,对应装配树的非叶子结点,有时也指以该结点为根的子树。

定义3(组件) 零件和装配体统称为组件,对应装配树的任意结点。

定义4(总装配) 装配体中的最顶层装配体,对应装配树的根结点。

定义5(子装配) 装配体中非总装配的装配体,对应装配树的非根且非叶结点。

定义6(子组件) 装配体下属的直接子装配或基本零件通称为子组件,对应装配结点所属的直接子结点。

3 IGES文件分析的图抽象方法

IGES标准[15]规定,一个IGES文件按下述次序由 5个或 6个顺序编号的段组成:标志段(Flag)、开始段(Start)、全局段(Global)、目录条目段(Directory Entry)、参数数据段(Parameter Data)和结束段(Terminate)组成,对应的标识符分别为首字母F、S、G、D、P、T,其中标志段(F)为可选。由于主要的CAD/CAM系统均只支持未压缩的ASCII格式,因此一般文件不包含标志段。开始段(S)一般包含生成文件的前置处理器的名字,全局段(G)包含作者、时间和精度等信息,结束段(T)包含每个段的标识符及所使用的最大序号,这3个部分包含的信息与数据本身并没有太大联系,因此数据内容主要包含在目录条目段(D)和参数数据段(P)中。数据的基本单元是实体,每个实体的格式包括一个实体类型和格式号。对每一种实体类型来说,缺省格式号为0;某些实体有大于0的格式号,用以区分附加的功能。D段和P段均是由若干实体构成,其中D段为包含固定长度的表示公共属性的数据,每个实体占两行,第k个实体占据D段的第2k-1行和第2k行,索引值为2k-1;P段的实体则按顺序和D段实体一一对应,包含该实体特有的数据。在本文中,指针即为索引,例如,“实体a具有指向实体b的指针”指的是“实体a的D段或P段包含实体b的D段的索引值”。

文献[9]和文献[14]都给出了一些CAD/CAM系统支持的IGES实体类型号列表,但是均不完整。经过详细测试,表1给出了包含装配体在内的典型CAD/CAM系统对IGES标准支持的实体集合总结(括号内数字表示格式号,未注明格式号的为缺省值)。

IGES格式中不同的实体之间是通过指针标号相互关联的,如果把每个实体看成图的顶点,在实体的数据域中的D段指针看成是有向边,那么就能得到一个有向无环图。并且,由于 IGES标准的定义中不允许正向指针,即指针只能从序号大的实体指向序号小的实体,因此整个 IGES文件的实体存储顺序实际上是对该图的一种拓扑排序的反序排列。

表1 典型CAD/CAM系统支持的IGES实体类型/格式号

以图1所示的简单装配树为例分析IGES标准对于装配体格式的定义结构。该装配体由两个相同的长方体以及一个圆柱体构成:首先圆柱体和其中一个长方体以共面约束构成一个子装配,然后该子装配和另一长方体以另一共面约束构成总装配。该装配体的装配树如图1(b)所示。注意图1(a)中装配体的两个长方体用的是同一零件,且子装配对应的REC-CYL文件在物理上其实是不存在的。

图1 具有3层装配结构的装配树

由于装配体中不同子装配有可能指向同一叶子节点,所以本文将文献[9]中的树图扩展到了装配体的有向无环图。将图1所示的简单装配体用Solidworks以多文件的IGES存储格式导出,则其实体关系所对应的有向无环图如图2所示。

图2 Solidworks导出的多文件IGES格式实体关系图

在实验中以Solidworks为例,测试了大量装配树所对应的实体关系抽象图,同时参照 IGES的最新标准[15]中的相关定义,总结出如下两条重要规律:

1) 相关性实例实体402的孩子总是由一系列单子图实例实体408或408-402组合加上1个变换矩阵实体124和1个名称特性实体406(格式号为15)组成;

2) 单子图实例实体408的孩子总是由1个子图定义实体308(可能共用)和变换矩阵实体124组成。

将这些关系以产生式形式描述出来,可以得到如下产生式(其中“+”表示1个或多个,“?”表示0个或1个):

(1) [402] ➜ ([408] | ([408] [402]))+[124] [406-15]

(2) [408] ➜ [308]? [124]

(3) [308] ➜ [416]

(4) [416] ➜ [文件名]

(5) [406-12] ➜ [文件名]+

这些产生式就构成了装配体IGES文件的骨架,也是下面多文件IGES装配体导出/导入算法的基础。事实上,对于各个CAD/CAM系统的单文件格式,其主要思想也是相同的。

4 导出算法

本文在前后置处理器中设计了如下内置装配树数据结构:装配体的类是AssemblyStep,零件的类为 PartStep,它们都是组件类ComponentStep的子类,AssemblyStep具有一个ComponentStep指针列表指向子组件,PartStep具有一个 Body的指针指向零件体内容。每个ComponentStep都包含名称、文件名及一个变换矩阵Ucs。该数据结构对应的类图如图3所示。

对比实体关系图与数据结构类图,容易得到IGES标准中定义的实体与内置数据结构之间的对应关系,如表2所示。

表2 实体类型同内置数据结构之间的对应关系

由于导出算法要有输出,因此需要在进行产生式变换的同时进行输出。为方便导出,可以把输出看成是终止符号(用尖括号表示),则原有的产生式可改写为如下形式:

(1) [装配体文件 D 段或 P段] ➜[406-12][402]

(2) [402] ➜ ([408] | ([408] [402]))+[124] [406-15]<402>

(3) [408] ➜ [308]? [124]<408>

(4) [308] ➜ [416]<308>

(5) [416] ➜ <416>(包含[文件名])

(6) [406-12] ➜ <406-12>(包含[文件名]+)

(7) [406-15] ➜ <406-15>(包含[组件名])

(8) [124] ➜ <124>

Procedure Write408()

//功能:输出408实体树

Begin

(9) [文件名] ➜

(10) [组件名] ➜

在上面的产生式中,为满足IGES标准规定的拓扑排序的性质,终止符号应放在每个产生式的最后,使得该实体的所有子实体均已输出完毕之后再输出该实体本身,如产生式(2)~(4)所示。

在IGES文件中,实体主要通过目录条目段(Directory Entry)、参数数据段(Parameter Data)中的相互引用而组织起来,因此,对于每项实体,需要同时在P段和D段添加指针。对于修改后的每项产生式,容易直接写出其相应的导出函数。例如对于单子图实例实体所对应的(3)式,可以直接写出如下类似后序遍历的函数:

If (PartBody已访问过) Then Dire308 := PartBody.Dire308;

Else Dire308 := Write308();

ent408.addPara(Dire308); //在P段添加指针

ent408.addDire(Write124()); //在D段添加指针

Return WriteEntity(ent408); //返回本408实体的指针End.

其它子过程可类似写出,不再一一列举。将所有产生式的导出函数展开,可得到基于Solidworks多文件存储IGES装配体导出算法,其主要流程如下:

1) 输出标志段(F)、开始段(S)和全局段(G)配置全局参数到文件;

2) 遍历装配树获得所有子组件的文件名列表,输出406-格式12实体;

3) 将总装配设为当前装配;

4) 如果当前装配存在下一个直接子组件,将其设为当前组件,转到步骤5);否则转到步骤10);

5) 如果当前组件是零件,则转到步骤6);否则设为当前装配,并转到步骤9);

6) 如果已访问过零件体内容,则添加原308实体指针到408实体,并转到步骤8);

7) 调用单零件输出模块[12]输出到相应文件,输出包含零件文件名的416实体,并添加指针到308实体,输出308实体并将指针添加到408实体;

8) 输出本零件变换矩阵生成的124实体并添加指针到408实体,输出408实体并将指针添加到上一级402实体,转到步骤4);

9) 输出包含文件名的416实体(文件实质上不存在)并添加指针到308实体,输出308实体并添加指针到408实体,输出本装配变换矩阵生成的124实体并添加指针到408实体,输出408实体并将指针添加到本级 402实体,转到步骤4);

10) 输出包含变换矩阵的 124实体并将指针添加到402实体,输出包含名称的406实体格式15并将指针添加到402实体,输出402实体,如果当前装配是总装配,则转到步骤11);否则将指针添加到上一级402实体并将当前装配设成上一级装配,转到步骤4);

11) 计算 P段中每个实体占用的行数并对缓冲区中D段和P段中相应的字段进行填充,将包含D段和P段内容的缓冲区输出到文件;

12) 输出结束段(T)到文件。

在IGES文件中,所有的D段数据均在P段数据之前,而且D段实体和P段实体存在一一对应关系。为提高输出效率,在上述导出算法中,未指明输出到文件的输出都是指同时输出到目录条目段(D)和参数数据段(P)的缓冲区,只有当所有实体均已处理完成时,才最终填充D段和P段相应字段的数据,并输出到文件。

对于Solidworks的单文件格式,用同样的分析方法可以得到表达装配的产生式:

(1) [装配体文件D段或P段] ➜ [总体408]

(2) [总体408] ➜ [308] <408>

(3) [308] ➜ [408]+ | [零件内容]

(4) [408] ➜ [308]? [124] <408>

(5) [124] ➜ <124>

(6) [零件内容] ➜ [186] | [144]* (进入单零件导入部分)

更进一步,还可以写出零件IGES格式对应的产生式。鉴于本文主要研究对象是装配体,而零件格式的导入/导出可由原有模块实现,这里就不一一列举产生式了。

经过测试发现,Solidworks、UGS和 Pro/E均能读取Solidworks的单文件格式的IGES,而CATIA读取时会丢失层次关系,但是其原因在于CATIA本身没有实现IGES的装配层次关系导入与导出。因此只需利用 Solidworks单文件输出IGES格式,即可实现各个CAD软件能够正确识别的IGES文件的导出。

5 导入算法

在导入算法中,本文应用原有的词法分析模块,首先将文件按相应实体的填充定义导入内存,在此基础上构造内置装配树,最后读入零件内容。算法主要流程如下:

1) 读取标志段(F)、开始段(S)和全局段(G)配置全局参数;

2) 将目录条目段(D)和参数数据段(P)数据按格式读入线性表;

3) 如果存在402实体,判断为装配体类型,转到步骤4);

否则判断为零件类型,调用零件读入模块进行输入,转到步骤13);

4) 新建装配根结点(总装配)并设为当前装配,将文件末的402实体设为当前402实体;

5) 如果当前402实体存在下一个子结点,则判断子节点的类型:

如果是124实体,则转到步骤6);

如果是402实体,则将其设为当前402实体并转到步骤7);

如果是406实体,则转到步骤10);

如果是408实体,则转到步骤8);

否则转到步骤11);

6) 将当前装配的变换矩阵Ucs根据124实体参数填充,转回步骤5);

7) 在当前装配结点下增加一装配子结点并设为当前装配,转回步骤5);

8) 在当前装配结点下增加一零件子结点并设为当前零件;

9) 输入308实体并从其附属416实体获得文件名,判断是否访问过:

若未访问过,则新建一零件体内容对象并与当前零件及308实体关联;

若访问过,则将当前零件与308实体对应的已存在的零件体内容对象关联;

输入124实体,将其参数填充至当前零件变换矩阵Ucs,转回步骤5);

10) 输入 406实体获取当前装配名字,检查父装配体的其它直接子零件结点是否有同名的,如果同名则删除该子零件结点,转回步骤5);

11) 如果当前装配是总装配则继续步骤12),否则将当前装配设为上一级装配,将当前402实体设为上一级402实体,转回步骤5);

12) 遍历装配树,遇到未访问过的零件体内容对象时打开对应文件,调用读取单零件IGES格式的算法进行读入;

13) 结束输入并显示。

上面的流程是将一系列子过程进行展开之后的结果,例如步骤 5)~步骤 11)实际对应Read402子过程,是算法的主体部分;步骤8)~ 9)对应Read408子过程,步骤10)对应Read406子过程。步骤5)中的判断方式实际上对产生式进行了一定程度的放宽,即允许402实体所包含的子实体以不同顺序及任意数量出现,在未来,依据IGES标准,我们可以导出更加精确的产生式,并对不符合产生式要求的实体做容错处理。

此外,步骤8)并不能保证当前408实体对应的确实是一个零件,因为子装配体也会产生一个408实体,因此步骤10)中的去重操作是必要的,它利用子装配体的名字与其对应的408实体的名字是相同的这一性质将所生成的“伪”子零件删去。

以上过程针对的是多文件格式的装配体导入,如果想导入不同商业CAD软件生成的单文件IGES格式的装配体,只需根据各个软件的存储文件画出所生成实体的有向无环图,导出相应的产生式,再转化成相应的算法即可。测试表明,Solidworks的单文件格式、UGS、Pro/E和CATIA中表示零件的实体均是“分片连续”的,描述某零件内容的部分与该零件单独存储时的段落相差无几,因此可重点关注剩余部分表示他们之间装配关系的实体。需要注意的是,UGS与Pro/E在总装配层级上各个组件是相互没有显式关联的,即对应的拓扑排序的首个结点不像Solidworks一样必定是某个实体(多文件格式中是402实体,单文件格式中是408实体),这可以通过虚拟一个总装配结点来化归为熟悉的形式。单文件格式的工作现已基本完成。

6 实验结果

在清华大学计算机辅助设计与图形学研究所开发的具有我国自主知识产权的几何造型系统TiGems7.0版本中,我们采用本文算法,设计并实现了基于IGES多文件形式的装配体前后置处理器,并进行了相应的实验,结果表明,该算法能够顺利实现和Solidworks系统之间的数据交换功能。

首先采用前置处理器,导出一个在工业界中实用的“前桥总装”装配体,然后用Solidworks 2007打开,其效果如图4所示。该装配体一共包含9个不同的零件,其中轮胎、前钢圈等6个零件组成一个子装配 qqzz2,而总装中由两个相同的子装配qqzz2及若干其它零件组成,装配树一共是 3层。可以看到,所有装配结构能够被Solidworks 2007正确识别。

为测试后置处理器的正确性,我们用Solidworks 2007生成了一个包含4层装配关系的装配体,并导出为IGES多文件格式,图5显示了它在TiGems 7.0中打开的效果示意图。该装配包含a, b, c, e, f, g 6个零件,由一系列共面、面平行、面垂直、共轴等关系装配而成。图5高亮部分是被选中的由f和g组成的子装配体。可见,Solidworks所定义的装配层次也能被我们的后置处理器正确处理。

图4 “前桥总装”的装配体IGES文件打开效果(左边是其装配树结构)

图5 层次为4,由6种不同零件组成的装配体(左边是其装配树结构)

我们在Intel Pentium D CPU 2.80GHz, 2 GB内存的台式机上的Windows XP Professional SP3系统环境下,还测试了一系列其它装配体,其导入时间对比如表3所示,其中最后一栏即为“前桥总装”测试文件。

表3 多文件格式装配体IGES文件导入时间对比表(单位:s)

表3中所列举的所有测试均得到了正确的装配树和零件结构。可以看到TiGems比Solidworks打开装配体的速度普遍要快将近一个数量级。此外测试表明,UGS和CATIA均无法打开多文件格式的IGES装配体文件,而Pro/E虽然能打开,并且用时和TiGems相当,但是打开后只是把所有涉及到的零件按各自的初始坐标罗列在界面上,相对位置信息和装配树信息都丢失了,在“前桥总装”测试数据上甚至少了一个轮胎,因此这里就不将它们列入对比了。

7 结 束 语

本文提出并实现了一种基于DAG表示与产生式法的分析方法,将IGES格式的解析过程标准化。该方法与其它的实现相比具有以下优点:

1) 具有通用性和良好的可扩展性,从短期来看IGES的其它格式均可通过类似方法实现,从长远来看可以应用到其它类似IGES的格式的解析之中;

2) 产生式表示使得算法的正确性可以进行形式化验证;

3) 实验结果证明该算法具有较快的速度,也具有较好的鲁棒性。

目前已经实现了与 Solidworks的多文件格式,以及与Solidworks、UGS、Pro/E、CATIA的单文件格式装配体IGES格式的数据交换。

下一步的工作主要包括:

(1) 详细测试表明,几大商业软件均无法在IGES中保存零件之间的装配关系,只能保存它们之间的位置关系和层次关系。然而,IGES中确实为装配关系的存储提供了定义接口,因此,未来可以在不影响其它软件读取IGES格式文件的基础上,尝试实现基于IGES的装配体装配关系的保存和读取。

(2) 现在缺少一个权威的IGES文件,尤其是装配体文件的测试数据库,因此转换的成功率、正确性和鲁棒性难以得到有效的衡量。希望在未来能够建立起一套IGES文件测试数据库。

[1] Smith B M. IGES-initial graphics exchange specification [C]//Proceedings of Striving for Technological Excellence in Manufacturing Through Communication, Planning and Professionalism: Proceedings of 18th International Technical Conference, Dallas, TX, USA: Number Control Soc, 1981: 179-186.

[2] Liewald M H, Kennicott P R. Intersystem data transfer via IGES [J]. IEEE Computer Graphics and Applications, 1982, 2(3): 55-58, 60-63.

[3] Smith B M. IGES: A key to CAD/CAM systems integration [J]. IEEE Computer Graphics and Applications, 1983, 3(8): 78-83.

[4] Lewis J W. Interchanging spline curves using IGES [J]. Computer Aided Design, 1981, 13(6): 359-364.

[5] Wilkinson D, Hallam R. A study of product data transfer using IGES [J]. Computer-Aided Engineering Journal, 1987, 4(3): 131-136.

[6] Coles K, Hou C A. Enhancement of IGES preprocessor for data exchange [C]//Atlanta, GA, USA, 1991: 1-5.

[7] Kalta M, Davies B J. An IGES pre-processor to integrate CAD and CAPP for turned components [J]. International Journal of Advanced Manufacturing Technology, 1994, 9(5): 291-304.

[8] Kahrs M. The heart of IGES [J]. Software: Practice and Experience, 1995, 25(8): 935-946.

[9] 刘德智, 董金祥, 何志均. 基于曲面模型的IGES前后置处理器的设计[J]. 计算机辅助设计与图形学学报, 1999, 11(2): 100 -103.

[10] 冉红强, 郑国磊. 基于模型转换的 IGES后置处理器开发[J]. 工程图学学报, 2003, 24(4): 44-49.

[11] 徐 昕, 刘书桂. CMM/CAD集成系统中IGES后处理器的开发[J]. 天津大学学报(自然科学与工程技术版), 2003, 36(1): 28-32.

[12] 胡楷模. 基于边界表示的IGES数据交换算法的研究与实现[D]. 北京: 清华大学, 2009.

[13] 胡楷模, 王 斌, 雍俊海. IGES边界模型转换中的参数域重构与修正算法[J]. 计算机辅助设计与图形学学报, 2009, 21(9): 1243-1250.

[14] 孙伟宁. 三维图形浏览系统IGES后处理器的研究与实现[D]. 杭州: 浙江大学, 2002.

[15] ANS US PRO/IPO-100-1996, Initial Graphics Exchange Specification IGES 5.3 [S].

IGES data exchange algorithm for assemblies based on DAG representation and production Rules

Huang Jing1, Wang Bin1,3,4, Hu Kaimo1,2,3,4, Zhang Hui1,3,4
( 1. School of Software, Tsinghua University, Beijing 100084, China; 2. Department of Computer Science and Technology, Tsinghua University, Beijing 100084, China; 3. Key Laboratory for Information System Security, Ministry of Education, Beijing 100084, China; 4. Tsinghua National Laboratory for Information Science and Technology, Beijing 100084, China )

The Initial Graphics Exchange Specification (IGES) is one of the most widely used neutral file standards. The related researches have mainly focused on the translation of single parts, however, few of them dealt with the IGES form for assemblies, which appear frequently in design. In this paper, we first summarize the IGES-file form of assemblies in most popular CAD software and then propose an IGES data exchange algorithm for assemblies based on Directed Acyclic Graph (DAG) Representation and Production Rules. This method standardizes the process of analysis of IGES forms, which enhances its commonality and extensibility. Moreover, the correctness of the method can be formally verified. With this method, we implement the pre-processor and post-processor for the multi-file IGES representation for assemblies. The experiments conducted in our geometry modeling system TiGems 7.0 show that the algorithm is fast and robust.

IGES; assembly; data exchange; DAG; production rules

TP 391

A

2095-302X (2012)04-0050-09

2010-07-18

黄 靖(1987-),男,福建南安人,博士研究生,主要研究方向为计算机视觉、计算机图形学。

猜你喜欢

结点指针处理器
LEACH 算法应用于矿井无线通信的路由算法研究
基于八数码问题的搜索算法的研究
垂悬指针检测与防御方法*
为什么表的指针都按照顺时针方向转动
ADI推出新一代SigmaDSP处理器
浅析C语言指针
火线热讯
AItera推出Nios II系列软核处理器