[发明专利]一种将DGN模型转化成轻量模型的方法有效
申请号: | 201511003773.6 | 申请日: | 2015-12-28 |
公开(公告)号: | CN106919728B | 公开(公告)日: | 2021-10-12 |
发明(设计)人: | 匡卫军;于潇;张琳;刘煜 | 申请(专利权)人: | 上海核工程研究设计院 |
主分类号: | G06F30/3308 | 分类号: | G06F30/3308 |
代理公司: | 上海精晟知识产权代理有限公司 31253 | 代理人: | 冯子玲 |
地址: | 200233*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 dgn 模型 转化 成轻量 方法 | ||
1.一种将DGN模型转化成轻量模型的方法,其特征在于,包括以下步骤:
S1,首先打开DGN文件,若打开成功则创建文本格式的轻量化文件;然后扫描DGN文件中所有的模型描述算子,将其存入数组array A;模型描述算子为MDL中定义的一种存放模型信息的数据结构,为双向链表形式;
S2,判断array A是否为空;若为空说明DGN文件是空文件,不需要处理;若不为空,进行以下步骤;
S3,读取array A中的第一个模型描述算子存入Dsc;
S4,提取Dsc中编码信息即Linkage;然后获取Dsc中的模型的属性信息;
S5,提取Dsc中模型的类型;
S6,模型面片化处理,具体包括以下步骤:
首先,平面或曲面的面片化数据存储在两个数组中,第一个数组PointArray存放构成曲面的所有点的三维坐标;第二个数组IndexArray存放构成面片的点在PointArray中的索引号,每个面片的索引号之间用数字“-1”隔开;然后,对于只包含一个平面或曲面即无须“爆炸”的几何体可直接面片化得到其数据;对于可“爆炸”成多个平面或曲面的几何体或者平面、曲面则先进行“爆炸”,获取每个平面或曲面的面片化数据,依次存放在IndexArray1、PointArray 1、IndexArray 2、PointArray 2…IndexArray N、PointArray N中;然后拼接成一个平面或曲面,拼接方式为:新建一个数据数组PointArray,大小为PointArray 1、PointArray 2…PointArray N中元素数目之和,将每个子平面或子曲面的数据数组中的元素按顺序存放到PointArray中;新建一个索引数组IndexArray,大小为IndexArray 1、IndexArray 2…IndexArray N之和,第一个子平面或子曲面索引数组所有元素原样依次放入IndexArray,第二个子平面或子曲面索引数组中所有的索引值加上第一个子平面或子曲面数据数组元素个数后存入新的索引数组,以此类推将其他子平面或子曲面的索引数组元素存入新的索引数组;这样拼接好的几何体或平面、曲面的面片化数据存放到了两个数组PointArray与IndexArray中;
S7,将数据及属性信息按照wrl文件或者obj文件的格式写入创建的轻量化文件中;
S8,判断array A中是否有模型描述算子未处理,若有,则继续从S3开始处理,直至所有模型描述算子处理完毕;若没有,则结束。
2.根据权利要求1所述的将DGN模型转化成轻量模型的方法,其特征在于,S5具体包含以下步骤:
S51,判断Dsc中的模型是否为点、线段独立元素,若是则无需处理,若不是,进行以下步骤;
S52,判断Dsc中模型的类型是否为CELL_HEADER_ELM,若不是,则可以直接对模型进行面片化处理,若是,进行以下步骤;
S53,判断Dsc中模型是否为Grouped Hole或者Smart Solid,若是,则可以直接面片化处理,若不是,则说明该模型描述算子含有子模型描述算子,则需要通过进行以下循环逐个处理子模型描述算子;
S54,将第一个子模型描述算子赋给tempDsc,tempDsc与Dsc数据类型相同;
S55,获取tempDsc中模型类型,然后跳转到S52,进行递归处理;
S56,将下一个子模型描述子算子赋给tempDsc;
S57,判断tempDsc是否为空,若为空,则说明已经处理完所有子模型描述算子,结束;若不为空,则跳转到S55继续处理。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海核工程研究设计院,未经上海核工程研究设计院许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201511003773.6/1.html,转载请声明来源钻瓜专利网。