买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】一种将DGN模型转化成轻量模型的方法_上海核工程研究设计院_201511003773.6 

申请/专利权人:上海核工程研究设计院

申请日:2015-12-28

公开(公告)日:2021-10-12

公开(公告)号:CN106919728B

主分类号:G06F30/3308(20200101)

分类号:G06F30/3308(20200101)

优先权:

专利状态码:有效-授权

法律状态:2021.10.12#授权;2018.04.13#实质审查的生效;2017.07.04#公开

摘要:本发明提供一种将DGN模型转化成轻量模型的方法,包括以下步骤:S1,首先打开DGN文件,然后扫描模型描述算子存入数组arrayA;S2,判断arrayA是否为空;S3,读取arrayA中的模型描述算子Dsc;S4,提取Dsc中编码信息;S5,提取Dsc中模型的类型;S6,模型面片化处理;S7,写入文件;S8,判断arrayA中是否有模型描述算子未处理,若有则转到S3。本发明提供的将DGN模型转化成轻量模型的方法,可以实现将DGN格式的模型转成轻量化模型,轻量化模型中包含了原DGN文件中每个模型的编码,材质、颜色等属性信息,为其它软件对模型进行操作特别是属性查询创造了条件。

主权项:1.一种将DGN模型转化成轻量模型的方法,其特征在于,包括以下步骤:S1,首先打开DGN文件,若打开成功则创建文本格式的轻量化文件;然后扫描DGN文件中所有的模型描述算子,将其存入数组arrayA;模型描述算子为MDL中定义的一种存放模型信息的数据结构,为双向链表形式;S2,判断arrayA是否为空;若为空说明DGN文件是空文件,不需要处理;若不为空,进行以下步骤;S3,读取arrayA中的第一个模型描述算子存入Dsc;S4,提取Dsc中编码信息即Linkage;然后获取Dsc中的模型的属性信息;S5,提取Dsc中模型的类型;S6,模型面片化处理,具体包括以下步骤:首先,平面或曲面的面片化数据存储在两个数组中,第一个数组PointArray存放构成曲面的所有点的三维坐标;第二个数组IndexArray存放构成面片的点在PointArray中的索引号,每个面片的索引号之间用数字“-1”隔开;然后,对于只包含一个平面或曲面即无须“爆炸”的几何体可直接面片化得到其数据;对于可“爆炸”成多个平面或曲面的几何体或者平面、曲面则先进行“爆炸”,获取每个平面或曲面的面片化数据,依次存放在IndexArray1、PointArray1、IndexArray2、PointArray2…IndexArrayN、PointArrayN中;然后拼接成一个平面或曲面,拼接方式为:新建一个数据数组PointArray,大小为PointArray1、PointArray2…PointArrayN中元素数目之和,将每个子平面或子曲面的数据数组中的元素按顺序存放到PointArray中;新建一个索引数组IndexArray,大小为IndexArray1、IndexArray2…IndexArrayN之和,第一个子平面或子曲面索引数组所有元素原样依次放入IndexArray,第二个子平面或子曲面索引数组中所有的索引值加上第一个子平面或子曲面数据数组元素个数后存入新的索引数组,以此类推将其他子平面或子曲面的索引数组元素存入新的索引数组;这样拼接好的几何体或平面、曲面的面片化数据存放到了两个数组PointArray与IndexArray中;S7,将数据及属性信息按照wrl文件或者obj文件的格式写入创建的轻量化文件中;S8,判断arrayA中是否有模型描述算子未处理,若有,则继续从S3开始处理,直至所有模型描述算子处理完毕;若没有,则结束。

全文数据:一种将DGN模型转化成轻量模型的方法技术领域[0001]本发明涉及虚拟仿真领域,具体涉及一种将DGN模型转化成轻量模型的方法。背景技术[0002]DGN文件是一种在工程设计领域应用非常广泛的三维模型文件格式,DGN文件中不仅包含模型的几何信息还有编码、颜色、材质等属性信息。但是DGN文件并不能被很多三维软件兼容,无法被它们直接打开,所以用三维软件打开DGN模型之前需要将DGN文件转化成其它格式。目前利用一些软件自带的转换插件虽然能DGN模型转化成面片模型,但是这些插件只使用了一些通用的、简单的算法对模型整体进行面片化,转换出来的模型存在占用内存较大;属性信息丢失;模型是一个整体,三维软件无法对文件中特定的几何体进行操作。这给对模型的操作如移动、属性查询等造成了很大的不便。发明内容[0003]本发明针对现有技术的不足,提出一种将DGN模型转化成轻量模型的方法。[0004]将DGN模型转化成轻量模型的方法,包括以下步骤:[0005]S1,首先打开DGN文件,若打开成功则创建文本格式的轻量化文件;然后扫描DGN文件中的所有的模型描述算子,将其存入数组arrayA;模型描述算子为MDL中定义的一种描述模型的数据结构,为双向链表形式,含有模型的几何信息、属性信息等;[0006]S2,判断arrayA是否为空;若为空说明DGN文件是空文件,不需要处理;若不为空,进行以下步骤;[0007]S3,读取arrayA中的第一个模型描述算子存入Dsc;[0008]S4,提取模Dsc中编码信息即Linkage;然后获取Dsc中的模型的材质、颜色等属性伯息;[0009]S5,提取Dsc中模型的类型;[0010]S6,模型面片化处理;[0011]S7,将数据及属性信息按照wrl文件或者obj文件的格式写入创建的轻量化文件中;[0012]SS,判断arrayA中是否有模型描述算子未处理,若有,则继续从S3开始处理,直至所有模型描述算子处理完毕;若没有,则结束。[0013]优选地,S5具体包含以下步骤;[0014]S51,判断Dsc中的模型是否为点、线段独立元素,若是则无需处理,若不是,进行以下步骤;[0015]S52,判断Dsc中模型的类型是否为CELL_HEADER_ELM,若不是,则可以直接对模型进行面片化处理,若是,进行以下步骤;[0016]S53,判断Dsc中板型是否为GroupedHole或者SmartSolid,若是,则可以直接面片化处理,若不是,则说明该模型描述算子含有子模型描述算子子模型描述算子数据结构与模型描述算子相同),则需要通过进行以下循环逐个处理子模型描述算子;[0017]S54,将第一个子模型描述算子赋给tempDsc;[0018]S55,获取tempDsc中模型类型,然后跳转到SM,进行递归处理;[0019]S56,将下一个子模型描述子算子赋给tempDsc;[0020]S57,判断tempDsc是否为空,若为空,则说明已经处理完所有子模型描述算子,结束;若不为空,则跳转到S55继续处理。[0021]优选地,S6具体包括以下步骤:[0022]首先,平面或曲面的面片化数据存储在两个数组中,第一个数组PointArray存放构成曲面的所有点的三维坐标;第二个数组IndexArray存放构成面片的点在PointArray中的索引号,每个面片的索引号之间用数字“-1”隔开;[0023]然后,对于只包含一个平面或曲面即无须“爆炸”的几何体可直接面片化得到其数据;对于可“爆炸”成多个平面或曲面的几何体或者平面、曲面则先进行“爆炸”,获取每个平面或曲面的面片化数据,依次存放在IndexArray1、PointArrayl、IndexArray2、PointArray2...IndexArrayN、PointArrayN中。然后拼接成一个平面或曲面,拼接方式为:新建一个数据数组PointArray,大小为PointArrayl、PointArray2_•.PointArrayN中元素数目之和,将每个子平面或子曲面的数据数组中的元素按顺序存放到PointArray中;新建一个索引数组IndexArray,大小为IndexArray!、IndexArray2_•.IndexArrayN之和,第一个子平面或子曲面索引数组所有元素原样依次放入IndexArray,第二个子平面或子曲面索引数组中所有的索引值加上第一个子平面或子曲面数据数组元素个数后存入新的索引数组,以此类推将其他子平面或子曲面的索引数组元素存入新的索引数组。这样拼接好的几何体或平面、曲面的面片化数据存放到了两个数组P〇intArray与IndexArray中。[0024]与现有技术相比,本发明具有以下有益效果:[0025]1、本发明提供的将DGN模型转化成轻量模型的方法,可以实现将DGN格式的模型转成轻量化模型,轻量化模型中包含了原DGN文件中每个模型的编码,材质、颜色等属性信息,为其它软件对模型进行操作特别是属性查询创造了条件。[0026]2、本发明提供的将DGN模型转化成轻量模型的方法,能够对DGN文件中的几何模型进行拆解并单独轻量化,导出时再重新合并;并能够将每个几何体的编码、材质、颜色等属性取出,然后将其写入到轻量化模型文件中。通过这个方法转化的轻量化模型包含了原DGN文件中所有几何体的编号、属性等信息,为其他三维软件进行查询、漫游等操作提供支持。附图说明[0027]图1为符合本发明优选实施例的将DGN模型转化成轻量模型的方法的流程图。[0028]图2为符合本发明优选实施例的将DGN模型转化成轻量模型的方法的S5的流程图。[0029]图3为符合本发明优选实施例的将DGN模型转化成轻量模型的方法的S6的流程图。[0030]图4为符合本发明优选实施例的DGN文件对应的轻量化模型文件的结构树。具体实施方式[0031]为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。[0032]如图1所示,将DGN模型转化成轻量模型的方法,包括以下步骤:[0033]S1,首先打开DGN文件,若打开成功则创建文本格式的轻量化文件;然后扫描DGN文件中的所有的模型描述算子,将其存入数组arrayA;模型描述算子为MDL中定义的一种描述模型的数据结构,为双向链表形式,含有模型的几何信息、属性信息等;[0034]S2,判断arrayA是否为空;若为空说明DGN文件是空文件,不需要处理;若不为空,进行以下步骤;[0035]S3,读取arrayA中的第一个模型描述算子存入Dsc;[0036]S4,提取模Dsc中编码信息即Linkage;然后获取Dsc中的模型的材质、颜色等属性信息;[0037]S5,提取Dsc中模型的类型;[0038]S6,模型面片化处理;[0039]S7,将数据及属性信息按照wrl文件或者obj文件的格式写入创建的轻量化文件中;[0040]S8,判断arrayA中是否有模型描述算子未处理,若有,则继续从S3开始处理,直至所有模型描述算子处理完毕;若没有,则结束。[0041]如图2所示,S5具体包含以下步骤;[0042]S51,判断Dsc中的模型是否为点、线段独立元素,若是则无需处理,若不是,进行以下步骤;[0043]S52,判断Dsc中模型的类型是否为CELL_HEADER_ELM,若不是,则可以直接对模型进行面片化处理,若是,进行以下步骤;[0044]S53,判断Dsc中模型是否为GroupedHole或者SmartSolid,若是,则可以直接面片化处理,若不是,则说明该模型描述算子含有子模型描述算子子模型描述算子数据结构与模型描述算子相同),则需要通过进行以下循环逐个处理子模型描述算子;[0045]S54,将第一个子模型描述算子赋给tempDsc;[0046]S55,获取tempDsc中模型类型,然后跳转到S52,进行递归处理;[0047]S56,将下一个子模型描述子算子赋给tempDsc;[0048]S57,判断tempDsc是否为空,若为空,则说明已经处理完所有子模型描述算子,结束;若不为空,则跳转到S55继续处理。[0049]如图3所示,S6具体包括以下步骤:[0050]首先,平面或曲面的面片化数据存储在两个数组中,第一个数组PointArray存放构成曲面的所有点的三维坐标;第二个数组IndexArray存放构成面片的点在PointArray中的索引号,每个面片的索引号之间用数字“-1”隔开;[0051]然后,对于只包含一个平面或曲面即无须“爆炸”的几何体可直接面片化得到其数据;对于可“爆炸”成多个平面或曲面的几何体或者平面、曲面则先进行“爆炸”,获取每个平面或曲面的面片化数据,依次存放在IndexArrayl、PointArrayl;IndexArray2、PointArray2;.••111^141^}^、?〇11^八1'作5^中。然后拼接成一个平面或曲面,拼接方式为:新建一个数据数组P〇intArray,大小为PointArrayl、PointArray2...PointArrayN中元素数目之和,将每个子平面或子曲面的数据数组中的元素按顺序存放到PointArray中;新建一个索引数组IndexArray,大小为IndexArray1、IndexArray2...IndexArrayN之和,第一个子平面或子曲面索引数组所有元素原样依次放入IndexArray,第二个子平面或子曲面索引数组中所有的索引值加上第一个子平面或子曲面数据数组元素个数后存入新的索引数组,以此类推将其他子平面或子曲面的索引数组元素存入新的索引数组。这样拼接好的几何体或平面、曲面的面片化数据存放到了两个数组P〇intArray与IndexArray中。[0052]如图4所示为DGN文件对应的轻量化模型文件的结构树:第1层为文件层级,一个DGN文件对应一个轻量化文件;第2层为编码层级即Linkage层级,模型的颜色、材质等属性信息位于该层级,在三维软件中能对该层级的某个几何体进行平移、旋转等单独操作;第3层为模型描述算子层级,若模型描述算子无子描述算子,则该层级只有一个几何体,若有子描述算子则可能是多个该层级的结合体组成一个编码级别的几何模型;第4层级为最底层,描述的是“爆炸”后的曲面数据,不过由于“爆炸”后的曲面进行了合并在轻量化文件中体现不出这一层。[0053]与现有技术相比,本发明具有以下有益效果:[0054]1、本发明提供的将DGN模型转化成轻量模型的方法,可以实现将DGN格式的模型转成轻量化模型,轻量化模型中包含了原DGN文件中每个模型的编码,材质、颜色等属性信息,为其它软件对模型进行操作特别是属性查询创造了条件。[0055]2、本发明提供的将DGN模型转化成轻量模型的方法,能够对DGN文件中的几何模型进行拆解并单独轻量化,导出时再重新合并;并能够将每个几何体的编码、材质、颜色等属性取出,然后将其写入到轻量化模型文件中。通过这个方法转化的轻量化模型包含了原DGN文件中所有几何体的编号、属性等信息,为其他三维软件进行查询、漫游等操作提供支持。[0056]本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。[0057]本领域技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。[0058]显然,本领域的技术人员可以对发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包括这些改动和变型在内。

权利要求:1.一种将DGN模型转化成轻量模型的方法,其特征在于,包括以下步骤:S1,首先打开DGN文件,若打开成功则创建文本格式的轻量化文件;然后扫描DGN文件中所有的模型描述算子,将其存入数组arrayA;模型描述算子为MDL中定义的一种存放模型信息的数据结构,为双向链表形式;52,判断arrayA是否为空;若为空说明DGN文件是空文件,不需要处理;若不为空,进行以下步骤;53,读取arrayA中的第一个模型描述算子存入Dsc;54,提取模Dsc中编码信息即Linkage;然后获取Dsc中的模型的属性信息;55,提取Dsc中模型的类型;56,模型面片化处理;57,将数据及属性信息按照wrl文件或者obj文件的格式写入创建的轻量化文件中;S8,判断arrayA中是否有模型描述算子未处理,若有,则继续从S3开始处理,直至所有模型描述算子处理完毕;若没有,则结束。2.根据权利要求1所述的将DGN模型转化成轻量模型的方法,其特征在于,S5具体包含以下步骤;S51,判断Dsc中的模型是否为点、线段独立元素,若是则无需处理,若不是,进行以下步骤;552,判断Dsc中模型的类型是否为CELL_HEADER_ELM,若不是,则可以直接对模型进行面片化处理,若是,进行以下步骤;553,判断Dsc中模型是否为GroupedHole或者SmartSolid,若是,则可以直接面片化处理,若不是,则说明该模型描述算子含有子模型描述算子,则需要通过进行以下循环逐个处理子模型描述算子;554,将第一个子模型描述算子赋给tempDsctempDsc与Dsc数据类型相同);S55,获取tempDsc中模型类型,然后跳转到S52,进行递归处理;S56,将下一个子模型描述子算子赋给tempDsc;S57,判断tempDsc是否为空,若为空,则说明已经处理完所有子模型描述算子,结束;若不为空,则跳转到S55继续处理。3.根据权利要求1所述的将DGN模型转化成轻量模型的方法,其特征在于,S6具体包括以下步骤:首先,平面或曲面的面片化数据存储在两个数组中,第一个数组PointArray存放构成曲面的所有点的三维坐标;第二个数组IndexArray存放构成面片的点在PointArrayt中的索引号,每个面片的索引号之间用数字“-1”隔开;然后,对于只包含一个平面或曲面即无须“爆炸”的几何体可直接面片化得到其数据;对于可“爆炸”成多个平面或曲面的几何体或者平面、曲面则先进行“爆炸”,获取每个平面或曲面的面片化数据,依次存放在IndexArray1、PointArraytl、IndexArray2、PointArrayt2...IndexArrayN、PointArraytN中。然后拼接成一个平面或曲面,拼接方式为:新建一个数据数组PointArrayt,大小为PointArraytl、PointArrayt2...PointArraytN中元素数目之和,将每个子平面或子曲面的数据数组中的元素按顺序存放到PointArrayt中;新建一个索引数组IndexArray,大小为IndexArrayl、IndexArray2.IndexArrayN之和,第一个子平面或子曲面索引数组所有元素原样依次放入IndexArray,第二个子平面或子曲面索引数组中所有的索引值加上第一个子平面或子曲面数据数组元素个数后存入新的索引数组,以此类推将其他子平面或子曲面的索引数组元素存入新的索引数组。这样拼接好的几何体或平面、曲面的面片化数据存放到了两个数组P〇intArrayt与IndexArray中。

百度查询: 上海核工程研究设计院 一种将DGN模型转化成轻量模型的方法

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。