FORAN导出的JT模型特征节点合并算法
2017-07-25方雄兵
方雄兵
中国舰船研究设计中心,湖北武汉430064
FORAN导出的JT模型特征节点合并算法
方雄兵
中国舰船研究设计中心,湖北武汉430064
[目的]由于FORAN V70 R2.0(及以上版本)输出的JT模型中存在很多同名的特征节点,导致采用间隙分析软件对其进行分析时时间消耗加大且间隙分析结果难以处理。针对该问题,[方法]在研究FORAN导出的JT文件装配结构和蕴含信息(几何信息、材料属性信息等)的基础上,提出一种特征节点合并算法。该算法由坐标变换、模型节点更名、节点几何数据移动和材料属性处理4个步骤构成。然后,利用C++及JT Open Toolkit实现所提出的算法。[结果]结果显示,利用该算法处理后的JT模型只包含1个装配节点且保留了原始JT模型的内在信息,可为后期间隙分析提供有效的输入数据。[结论]大量的实例验证了所提出算法的有效性,处理后的JT文件大小可减少7%~20%。
JT模型;装配层次;特征合并;图形变换;间隙分析;可视化
0 引 言
当前,大型复杂产品的数字化设计技术已从二维CAD图逐步过渡到以三维模型为主并向数字样机、虚拟产品与过程、协同式设计与建造的方
向迈进。三维CAD模型作为产品设计与建造的基础,其轻量化和简化处理对于数据交换与传输[1]、工程仿真与分析[2-3]、可视化协同[4]、虚拟展示与训练[5-6]等应用均有重要意义。在实际工程应用中,基于具体的软件和(轻量化)模型开展应用时,通常需要对模型进行一定的处理。利用FORAN软件导出的零件JT模型开展舱室或区域内零件之间的间隙分析时,发现零件JT模型的装配结构中包含多个同名特征节点,使得间隙分析的时间增加、问题记录难以处理,因此需要对其进行处理。
国内外学者在 STEP,IGES,3DXML,JT等格式模型的处理与应用方面开展了大量工作。王永剑[7]介绍了国外STEP标准的应用动态以及接口实现方法。李玉刚等[8]分析了STEP(标准号:ISO 10303)在船舶领域的标准化与应用情况。王晓斌等[9]针对达索的3DXML格式内容进行了深入研究。黄靖等[10]研究了常用CAD软件导出的IGES格式模型内容,提出了基于图表示与产生式规则的IGES数据交换算法。张西厂等[11]研究了基于JT的航空发动机图解图生成方法。殷明强等[12]研究了在不改变装配模型格式和外观前提下,装配体轻量化的方法。上述工作为JT文件的深入研究和应用提供了参考。
JT作为一种新的国际标准格式,已被众多商用软件所支持。为解决FORAN导出的JT模型存在较多同名特征节点而不适合间隙分析的问题,本文将在分析FORAN导出的零件JT模型装配及内蕴信息的基础上,基于齐次坐标与矩阵变换[13],提出一种特征节点合并算法。该算法可对同名的特征节点进行合并,对保留的唯一节点进行更名。并且,将用应用案例表明,处理后的零件JT模型装配结构中只有一个节点、更加轻量化,能够满足后续间隙分析需要。
1 JT格式及模型装配结构
1.1 ISO JT标准格式简介
JT是德国西门子公司推出的一种轻量化文件格式,目前已被国际标准化组织(ISO)认定为国际标准(ISO IS 14306:2012)。该格式提供了一种高效的3D产品定义方法,可在产品设计、仿真、制造以及后期技术支持等更大范围内应用于协作、验证与可视化。
JT文件由一序列的块或片段所构成,其基本结构如图1所示,包括:文件头(File header)、内容目录段(TOC segment)和数据段(Data segment)。文件头始终在文件最前的位置,而TOC的位置则可以在文件中间紧随文件头,也可以在文件的末尾。完整的JT文件,其数据段内容非常丰富,包含逻辑场景图(LSG)、形状细节层次段、JT边界表示段、XT边界表示段、线框段、元数据段、产品制造信息段等。在JT模型数据定义中,经常使用以下几种坐标系统,包括局部坐标系、节点坐标系、世界坐标系和视点坐标系。当前,众多的成熟商用软件均提供了JT数据的导入/导出接口。
图1 JT文件基本结构Fig.1 General hierarchy of JT files
1.2 FORAN导出的JT模型分析
1.2.1 JT模型装配结构分析
西班牙SENER公司的造船软件FORAN V70 R2.0(以下简称FORAN)提供了导出JT格式三维模型的功能,导出方法有2种:一种是手工操作方式,在FORAN软件中打开需要转换的模型,点击JT导出功能菜单,将打开的模型导出为JT;另一种是基于脚本的转换方式,即通过转换命令形成的脚本完成模型的轻量化转换。通过开发这种转换脚本文件的生成工具,可生成基于一定导出规则的JT转换脚本,利用该脚本,可批量导出全船JT模型。
导出的粒度也存在多种形式:1)结构和基座可以分段形式导出;其他模型(设备、水管、风管、电缆、电缆托架等)以区域/系统方式导出为一个整体的JT文件,该文件包含了大量的零件级模型;2)可以选择单个零件三维模型并导出为JT。前一种形式导出的JT文件通常包含数量较多的零件,如一个区域内所有的设备,可对其进行分解,生成零件级的JT模型,如1个设备、1根管子、1个T型材。如图2所示,利用JT可视化浏览工具,可以看出导出的零件级JT文件装配结构为3级,第1级为根装配节点(默认节点),第2级为零件级装配节点,第3级为特征装配节点。特别地,第2级零件级节点下存在数量众多的同名(如Para⁃metric和Polyhedron)特征节点。
1.2.2 JT模型内容分析
进一步地,通过对图2(a)中的JT文件内容进行分析,发现其文件内部结构及各部分的主要信息如表1所示。
图2 FORAN导出的原始JT模型Fig.2 Original JT models exported by FORAN
根据表1,FORAN导出的JT文件基本结构为一个JtkAssembly(即名称为E CM-ES-1的零件级装配)节点下挂若干个JtkPart节点(即名称为Parametric和Polyhedron的特征节点),JtkPart包含具体的几何模型数据,主要信息有:该特征节点的版本、ID号、单位、变换矩阵(齐次坐标表示)、LOD层级、形状面片顶点、形状法向量、材料属性等。如图3所示,借助TC Visualization Mockup(以下简称Vis Mockup)高级功能(操作—检查器),可以查看特征节点(即JtkPart节点)下的数据。每个JtkPart节点下有多个细节层次,每个细节层次下又包含一定数量的面片(即JtkShape)。
综上,FORAN导出的JT模型装配结构如图4所示。
2 问题描述
基于Vis Mockup开展2个零件JT模型的间隙分析时,Vis Mockup会将第1个JT模型的每个特征节点(JtkPart)与第2个JT模型的每个特征节点进行间隙计算(只进行到这一级)。然而,FORAN导出的JT模型装配结构中往往存在多个同名的JtkPart特征节点,如Parametric,Polyhedron或是一些不规范命名的节点,导致在后期进行间隙分析时需要分析计算的JtkPart对数较多,分析时间增长,且间隙分析结果记录项(Parametric,Parametric,距离值,……)中的特征节点无法与其所属的零件名称(零件A,零件B)一一对应,导致两个JT模型的间隙分析结果难以处理。假设,参与间隙分析的两个零件JT模型分别包含m和n个JtkPart,则在间隙分析时需要计算m×n对JtkPart之间的距离值,并对m×n个间隙记录项进行分析处理。
因此,要提高JT模型的间隙分析和结果处理效率,需要对FORAN导出的零件级JT模型进行以下处理:将JT模型中的特征节点(JtkPart)进行合并,合并后的JT模型只有1个特征节点,且其名称与合并前的JT模型名称相同,即与上一级的Jt⁃kAssembly节点同名。
图3 特征节点下包含的信息Fig.3 Information beneath the part node
图4 FORAN导出的JT模型详细装配结构Fig.4 Detailed assembly structure of JT models exported by FORAN
3 JT模型特征节点合并算法
3.1 问题分析
通过对FORAN导出的JT模型文件内容的分析,可以看出JT文件基本结构为一个JtkAssembly(如图 2(a)中的 E CM-ES-1)节点,下挂若干个JtkPart节点,如图2(a)中的多个 Parametric节点,图2(b)中的多个Polyhedron节点。JtkPart节点包含具体的几何模型数据,即JtkShape面片的顶点、法向量。由于JtkAssembly节点不能直接包含几何模型数据,所以要完成合并操作必须保留一个JtkPart节点,而将其他所有JtkPart下的几何数据都合并到这个保留的JtkPart下,并将保留的JtkPart进行输出。除合并几何数据外,还需要对材料属性等信息进行处理,并将唯一保留的JtkPart更换为上一级JtkAssembly的名称,如图 2(a)中的ECM-ES-1。
要实现对JtkPart几何数据的合并,需要解决以下关键问题:零件级(JtkAssembly)节点下存在多个JtkPart节点,每个节点均有自己独立的坐标系,即各自的变换矩阵JtkTRANSFORM;若直接将几何数据复制到保留的JtkPart节点下,会导致顶点位置及法向量错误。为实现几何数据正确合并,需要将被移动的JtkPart节点坐标系与保留的JtkPart节点坐标系进行统一。处理该问题可采用如下2种方式:1)将其他JtkPart节点几何数据统一到保留的JtkPart节点局部坐标系中,这种方式需要完成变换矩阵求逆以及2个矩阵相乘[13],并将结果矩阵应用于其他所有JtkPart节点下的几何数据;2)将所有JtkPart节点下的几何数据均统一到世界坐标系中,即将各JtkPart节点变换矩阵应用到各自的几何数据上。从计算量考虑,本文采用第2种方法。
JtkPart节点几何数据合并处理流程简单描述如下。
1)对于每一个JtkPart节点,将其变换矩阵(JtkTRANSFORM)应用到其下所有的几何数据(顶点和法向量)上,即所有的几何数据均以世界坐标系为参照,然后将该变换矩阵设置为单位矩阵。
2)保留第 1个 JtkPart节点,将第 2~n个JtkPart节点的几何数据合并到第1个JtkPart节点下,并将第2~n个节点从上级JtkAssembly节点下移除。
3.2 算法设计与描述
3.2.1 算法设计与分析
综合上述分析,FORAN导出的JT模型进行特征节点合并需要解决以下问题:1)JtkPart节点几何数据与属性信息的移动;2)若存在多个JtkPart节点,需要将被合并的JtkPart节点数据删除;3)合并后将保留的JtkPart节点更名,并将上一级JtkAssembly节点移除或者返回保留的JtkPart节点。完整的JT特征节点合并处理过程见JT模型特征节点合并算法(以下简称“JT合并算法”),具体如下。
输入:FORAN V70 R2.0导出的JT模型。
输出:装配结构只有1个名称为零件名的JtkAssembly节点,且保留原始模型几何数据和属性信息的JT模型。
处理过程:
1)计算JT装配中特征节点JtkPart的数量numofPart;
2)将第1个JtkPart的变换矩阵应用到其下各个细节层中所有JtkShape下的数据上,即所有几何数据的坐标为世界坐标;将第1个JtkPart更名为上一级的JtkAssembly节点名称,即FORAN导出的JT模型的名称。
3)将第i(2~numofPart)个JtkPart的变换矩阵应用到其下各个细节层中所有JtkShape下的数据上,与2)中操作相同;将第i(2~numofPart)个Jtk⁃Part几何数据移动至第1个JtkPart下;将第i(2~numofPart)个JtkPart的材料属性应用到其下各个细节层中所有JtkShape数据上;将第i(2~nu⁃mofPart)个JtkPart放入至1个队列remChild中。
4)将remChild中的所有JtkPart数据移除。
5)返回第1个JtkPart的指针。
对上述JT合并算法进行分析,其计算复杂度为 O(numofLOD×numofShape*(numofVertex+nu⁃mofNormal)),其中 numofLOD 为每个 JtkPart的细节层次,numofShape为每个细节层中JtkShape的数量,numofVertex和numofNormal分别为每个JtkShape的顶点数量和法向量数量。通常情况下,对FORAN导出的JT模型,其numofLOD为3,每个细节层中包含的JtkShape数量均相同,每个JtkShape为一个多边形,有3或4个顶点,即numof⁃Vertex和numofNormal为常数3或4。在采用齐次坐标表示时,JtkShape各个顶点和法向量均有4个分量。因此,JT合并算法计算复杂度为一个关于JtkShape数量的线性函数 O(numofShape),而JtkShape数量numofShape取决于CAD软件表达几何体外观的精细程度以及几何体自身的平滑程度。
3.2.2 算法描述
下面采用伪代码对JT合并算法进行描述。表2中,各主要函数原型定义如下。
PARTS_MERGE(JtkAssembly*assembly)将assembly指向的装配节点下的其他JtkPart特征节点移动到第1个JtkPart节点下,对第1个特征节点进行更名,即保留第1个节点,最后将该特征节点指针返回。
APPLY_TRANSFORM (JtkPart* part, Jtk⁃Transform*pxform)将变换矩阵pxform应用到part下各细节层中所有JtkShape下的数据上。
SET_PART_NODE_NAME(JtkHierarchy*part0,const char*newname)将part0指向的特征节点赋值为新的名称newname,本算法中newname为零件的名称。
MOVE_SHAPES(JtkPart*parSource,JtkPart*parDest)将parSource中的几何数据移动到特征节点parDest下。
APPLY_MATERIAL(JtkPart*part,JtkMateri⁃al*material)将material中的材料属性应用到part指向的特征节点下所有的几何数据上。
4 算法实现与案例
4.1 节点处理工具设计
考虑到船舶零件数量大的特点,节点合并工具应具备对FORAN导出的零件级原始JT模型进行批量处理的功能,处理后的JT存储于本地公共文件夹中。节点合并处理工具界面如图5所示,用户选择文件或文件夹选项后,可进一步选择本地需要处理的原始JT文件(要求:该JT为零件级)。基于Visual Studio 2010,采用C++语言以及JT Open Toolkit提供的API实现了JT合并算法。
4.2 案例与讨论
4.2.1 测试案例
选择FORAN导出的JT模型,对所提出的算法进行验证,具体步骤如下。
1)选择本地需要进行节点合并处理的JT文件,可以是单个分解处理后的JT文件或包含多个JT文件的文件夹。如图6所示,选择图2(b)中的基座模型C: empAS-****-XX13JZ.jt为例,说明节点处理工具的用法。该模型处理前文件大小为33.9 kB,包含27个JtkPart节点。
2)选择“确定”,如图7所示,对JT文件进行节点合并处理。
3)节点合并后的JT文件存放在默认的文件夹中。如图8所示,利用JT Vis Mockup 10.1打开节点合并处理后的AS-****-XX13JZ模型文件,可以看到该基座模型只有1个顶级装配节点,其下无其他节点。
表2 JT模型特征节点合并算法伪代码描述Table 2 Pseudo-code description for the algorithm of merging part nodes of JT models
图5 特征节点合并工具界面Fig.5 Interface of part nodes merging tool
图6 选择需要进行节点合并的JT文件Fig.6 Choosing JT files for part nodes merging
图7 JT模型特征节点合并过程信息Fig.7 Process information of JT model in process of part nodes merging
JtkPart节点合并处理后,AS-****-XX13JZ.jt模型大小为27 kB,只有1个节点。以下给出了其他一些测试案例,如图8~图11所示,从图9(b)、图10(b)和图11(b)可以看出,处理后的JT只包含1个节点。处理前、后模型数据对比如表3所示。
图8 特征节点合并后的JT模型Fig.8 JT model after part nodes merging
图9 设备JT模型节点合并处理前后对比(编号3)Fig.9 Comparison of an equipment's JT model before and after part nodes merging(No.3)
图10 结构JT模型节点合并处理前后对比(编号8)Fig.10 Comparison of a structure's JT model before and after part nodes merging(No.8)
图11 结构JT模型节点合并处理前后对比(编号10)Fig.11 Comparison of a structure's JT model before and after part nodes merging(No.10)
从表3可以看出,FORAN导出的原始零件级JT模型经过节点合并处理后,文件大小减少了7%~20%,相比未处理前更加轻量化。图9~图11分别为表3中编号为3,8和10的零件级JT模型进行节点处理前、后的对比。其中,结构类原始零件级JT模型通常只有1个特征节点,通过对特征节点下的细节层次以及三角形面片数量进行分析,发现编号为8的模型与编号为10的模型相比,其Part节点数量均为1,细节层次数量均为3,每个细节层次包含的面片(JtkShape)数量分别为28和1 124。
从表3以及对JT模型内部信息进行深入分析发现,表3中JT模型轻量化百分比大小与模型包含特征节点数量、细节层次、各层的三角形面片数、材料信息大小等有关。模型建模精度越高,包含的特征节点数量以及三角形面片数越大,从而轻量化率越高。
表3 JT模型特征节点合并处理前、后数据对比Table 3 Comparison of data before and after part node merging of JT models
4.2.2讨论
1)利用JT合并算法处理后的JT模型(零件级)只包含1个特征节点,保留了原始JT模型的名称、所有几何数据和材料属性等信息。
2)在完成节点合并处理后,2个零件级JT模型之间间隙分析计算次数变为1,其问题记录项数量为1或0,记录项主要元素为“(零件A的名称,零件B的名称,距离值,……)”,根据问题记录项的元素可准确定位到具体零件上。
3)尽管本文提出的算法主要针对FORAN V70 R2.0(及以上版本)导出的JT模型,然而当前很多格式定义的三维模型在装配结构上与JT非常类似,如3DXML,SMG格式,论文所提出的算法对于其他软件导出的JT以及其他格式定义的三维模型装配结构与几何数据处理问题也有一定的借鉴意义,如SMG,3DXML,STEP等格式。
5 结 语
JT作为一种国际标准格式,其包含的信息非常丰富,对船舶这类零部件数量大的应用领域而言,可以支持大场景模型的高效可视化以及全生命周期的协同。本文对FORAN导出的JT模型存在大量同名特征节点而导致后续的间隙分析效率低、结果难以处理的问题进行了专门研究,给出了一种节点合并算法,处理后的JT模型只包含1个节点,保留了原始JT所有的几何与材料属性等信息,并且比处理前的JT文件大小减少了7%~20%,为支持船舶等领域大装配的应用,如船舶舱室三维模型间隙分析、可视化、虚拟维修与培训等,提供了有效的输入数据。大量仿真案例验证了所提出算法的有效性。
[1]王启富,贾成,刘俊,等.三维CAD模型中自由曲线曲面无损压缩算法[J].计算机辅助设计与图形学学报,2007,19(9):1200-1205.WANG Q F,JIA C,LIU J,et al.Lossless compres⁃sion of free-form curve and surface in CAD models[J].Journal of Computer-Aided Design&Computer Graph⁃ics,2007,19(9):1200-1205(in Chinese).
[2]刘清华,李帅,刘云华,等.协同环境中基于轻量化的3D异构CAD模型干涉检查[J].中国机械工程,2013,24(1):56-60,77.LIU Q H,LI S,LIU Y H,et al.Collaborative support⁃ed 3D heterogeneous CAD model interference check⁃ing based on lightweight model[J].China Mechanical Engineering,2013,24(1):56-60,77(in Chinese).
[3]姜丽萍,陈文亮,黄大兴.基于轻量化模型的飞机装配过程虚拟仿真方法[J].航空制造技术,2013(12):26-29.JIANG L P,CHEN W L,HUANG D X.Virtual simu⁃lation method of aircraft assembly procedure based on lightweight model technology[J].Aeronautical Manu⁃facturing Technology,2013(12):26-29(in Chinese).
[4]巫鹏伟,卢鹄,范玉青.协同共享数据的轻量化模型[J].航空维修与工程,2010(2):56-58.WU P W,LU H,FAN Y Q.Lightweight model of col⁃laborative sharing data[J].Aviation Maintenance&Engineering,2010(2):56-58(in Chinese).
[5]谈敦铭,赵罡,薛俊杰.飞行器大数据量CAD模型并行预处理[J].计算机辅助设计与图形学学报,2013,25(3):425-432.TAN D M,ZHAO G,XUE J J.Parallel pre-process⁃ing of massive aircraft cad models[J].Journal of Com ⁃puter-Aided Design&Computer Graphics,2013,25(3):425-432(in Chinese).
[6]LEU M C,EIMARAGHY H A,NEE A Y C,et al.CAD model based virtual assembly simulation,plan⁃ning and training[J].CIRP Annals-ManufacturingTechnology,2013,62(2):799-822.
[7]王永剑.基于STEP标准的应用系统的接口开发[J].航空工艺技术,1997(2):21-22.WANG Y J.Interface development of STEP stan⁃dard-based application system[J].Aeronautical Manu⁃facturing Technology,1997(2):21-22(in Chinese).
[8]李玉刚,纪卓尚,林焰.船舶STEP标准现状及其应用研究[J].舰船科学技术,2008,30(1):29-33.LI Y G,JI Z S,LIN Y.Status of ship STEP standard and its application research[J].Ship Science and Tech⁃nology,2008,30(1):29-33(in Chinese).
[9]王晓斌,宁涛,王可.3DXML文件格式解析及应用[J].工程图学学报,2010,31(2):33-37.WANG X B,NING T,WANG K.Parsing 3DXML file format and its application[J].Journal of Engineering Graphics,2010,31(2):33-37(in Chinese).
[10]黄靖,王斌,胡楷模,等.基于DAG表示与产生式的IGES装配体数据交换算法[J].图学学报,2012,33(4):50-58.HUANG J,WANG B,HU K M,et al.IGES data ex⁃change algorithm for assemblies based on DAG repre⁃sentation and production rules[J].Journal of Graph⁃ics,2012,33(4):50-58(in Chinese).
[11]张西厂,梅小川,邱明星.基于JT数据编制航空发动机图解图的创新方法[J].航空发动机,2009,35(6):10-13.ZHANG X C,MEI X C,QIU M X.Innovation meth⁃od of compiling aeroengine IPC based on JT data[J].Aeroengine,2009,35(6):10-13(in Chinese).
[12]殷明强,李世其.保持外观的CAD模型轻量化技术[J].计算机应用,2013,33(6):1719-1722.YIN M Q,LI S Q.Simplification method of appear⁃ance preserved CAD model[J].Journal of Computer Applications,2013,33(6):1719-1722 (in Chi⁃nese).
[13]VINCE J.Mathematics for computer graphics[M].3rd ed.London:Springer,2010.
An algorithm for merging part nodes of JT models exported by FORAN
FANG Xiongbing
China Ship Development and Design Center,Wuhan 430064,China
Many cognominal parts exist in JT models exported by FORAN V70 R2.0 software,and this leads to an increase in time consumption and the space analysis results becoming hard to process when using clearance analysis software to perform distance computing for such JT models.Aiming at this problem,an algorithm for merging component nodes is put forward based on investigating the assembly configuration and inherent information(i.e.geometric and material information)of JT models created by FORAN.The method is composed of four steps:coordinate transformation,model node renaming,node geometric data transferring and material attribute processing.Finally,the proposed method is implemented by C++and JT Open Toolkit.The results show that the new JT models generated by the proposed method are comprised of only one assembly node,and they preserve the intrinsic information of the original JT models.Its validity is illustrated by a great deal of examples,and the content of the worked JT models are reducedbyabout7%to20%.
JT model;assembly hierarchy;component merging;graphic transformation;clearance analysis;visualization
U662.9
:ADOI:10.3969/j.issn.1673-3185.2017.03.007
http://kns.cnki.net/kcms/detail/42.1755.TJ.20170512.1255.028.html期刊网址:www.ship-research.com
方雄兵.FORAN导出的JT模型特征节点合并算法[J].中国舰船研究,2017,12(3):43-50,148.
FANG X B.An algorithm for merging part nodes of JT models exported by FORAN[J].Chinese Journal of Ship Research,2017,12(3):43-50,148.
2016-06-13< class="emphasis_bold">网络出版时间
时间:2017-5-12 12:55
国家部委基金资助项目
方雄兵(通信作者),男,1983年生,博士,工程师。研究方向:计算机图形学,计算机辅助几何设计及舰船虚拟仿真。E-mail:fangxb2013@sina.cn