CN106919728B - 一种将dgn模型转化成轻量模型的方法 - Google Patents
一种将dgn模型转化成轻量模型的方法 Download PDFInfo
- Publication number
- CN106919728B CN106919728B CN201511003773.6A CN201511003773A CN106919728B CN 106919728 B CN106919728 B CN 106919728B CN 201511003773 A CN201511003773 A CN 201511003773A CN 106919728 B CN106919728 B CN 106919728B
- Authority
- CN
- China
- Prior art keywords
- model
- array
- sub
- dgn
- file
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/36—Circuit design at the analogue level
- G06F30/367—Design verification, e.g. using simulation, simulation program with integrated circuit emphasis [SPICE], direct methods or relaxation methods
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Processing Or Creating Images (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供一种将DGN模型转化成轻量模型的方法,包括以下步骤:S1,首先打开DGN文件,然后扫描模型描述算子存入数组array A;S2,判断array A是否为空;S3,读取array A中的模型描述算子Dsc;S4,提取Dsc中编码信息;S5,提取Dsc中模型的类型;S6,模型面片化处理;S7,写入文件;S8,判断array A中是否有模型描述算子未处理,若有则转到S3。本发明提供的将DGN模型转化成轻量模型的方法,可以实现将DGN格式的模型转成轻量化模型,轻量化模型中包含了原DGN文件中每个模型的编码,材质、颜色等属性信息,为其它软件对模型进行操作特别是属性查询创造了条件。
Description
技术领域
本发明涉及虚拟仿真领域,具体涉及一种将DGN模型转化成轻量模型的方法。
背景技术
DGN文件是一种在工程设计领域应用非常广泛的三维模型文件格式,DGN文件中不仅包含模型的几何信息还有编码、颜色、材质等属性信息。但是DGN文件并不能被很多三维软件兼容,无法被它们直接打开,所以用三维软件打开DGN模型之前需要将DGN文件转化成其它格式。目前利用一些软件自带的转换插件虽然能DGN模型转化成面片模型,但是这些插件只使用了一些通用的、简单的算法对模型整体进行面片化,转换出来的模型存在占用内存较大;属性信息丢失;模型是一个整体,三维软件无法对文件中特定的几何体进行操作。这给对模型的操作如移动、属性查询等造成了很大的不便。
发明内容
本发明针对现有技术的不足,提出一种将DGN模型转化成轻量模型的方法。
将DGN模型转化成轻量模型的方法,包括以下步骤:
S1,首先打开DGN文件,若打开成功则创建文本格式的轻量化文件;然后扫描DGN文件中的所有的模型描述算子,将其存入数组array A;模型描述算子为MDL中定义的一种描述模型的数据结构,为双向链表形式,含有模型的几何信息、属性信息等;
S2,判断array A是否为空;若为空说明DGN文件是空文件,不需要处理;若不为空,进行以下步骤;
S3,读取array A中的第一个模型描述算子存入Dsc;
S4,提取模Dsc中编码信息即Linkage;然后获取Dsc中的模型的材质、颜色等属性信息;
S5,提取Dsc中模型的类型;
S6,模型面片化处理;
S7,将数据及属性信息按照wrl文件或者obj文件的格式写入创建的轻量化文件中;
S8,判断array A中是否有模型描述算子未处理,若有,则继续从S3开始处理,直至所有模型描述算子处理完毕;若没有,则结束。
优选地,S5具体包含以下步骤;
S51,判断Dsc中的模型是否为点、线段独立元素,若是则无需处理,若不是,进行以下步骤;
S52,判断Dsc中模型的类型是否为CELL_HEADER_ELM,若不是,则可以直接对模型进行面片化处理,若是,进行以下步骤;
S53,判断Dsc中模型是否为Grouped Hole或者Smart Solid,若是,则可以直接面片化处理,若不是,则说明该模型描述算子含有子模型描述算子(子模型描述算子数据结构与模型描述算子相同),则需要通过进行以下循环逐个处理子模型描述算子;
S54,将第一个子模型描述算子赋给tempDsc;
S55,获取tempDsc中模型类型,然后跳转到S52,进行递归处理;
S56,将下一个子模型描述子算子赋给tempDsc;
S57,判断tempDsc是否为空,若为空,则说明已经处理完所有子模型描述算子,结束;若不为空,则跳转到S55继续处理。
优选地,S6具体包括以下步骤:
首先,平面或曲面的面片化数据存储在两个数组中,第一个数组PointArray存放构成曲面的所有点的三维坐标;第二个数组IndexArray存放构成面片的点在PointArray中的索引号,每个面片的索引号之间用数字“-1”隔开;
然后,对于只包含一个平面或曲面即无须“爆炸”的几何体可直接面片化得到其数据;对于可“爆炸”成多个平面或曲面的几何体或者平面、曲面则先进行“爆炸”,获取每个平面或曲面的面片化数据,依次存放在IndexArray1、PointArray1、IndexArray2、PointArray2...IndexArray N、PointArray N中。然后拼接成一个平面或曲面,拼接方式为:新建一个数据数组PointArray,大小为PointArray1、PointArray2...PointArray N中元素数目之和,将每个子平面或子曲面的数据数组中的元素按顺序存放到PointArray中;新建一个索引数组IndexArray,大小为IndexArray1、IndexArray2...IndexArray N之和,第一个子平面或子曲面索引数组所有元素原样依次放入IndexArray,第二个子平面或子曲面索引数组中所有的索引值加上第一个子平面或子曲面数据数组元素个数后存入新的索引数组,以此类推将其他子平面或子曲面的索引数组元素存入新的索引数组。这样拼接好的几何体或平面、曲面的面片化数据存放到了两个数组PointArray与IndexArray中。
与现有技术相比,本发明具有以下有益效果:
1、本发明提供的将DGN模型转化成轻量模型的方法,可以实现将DGN格式的模型转成轻量化模型,轻量化模型中包含了原DGN文件中每个模型的编码,材质、颜色等属性信息,为其它软件对模型进行操作特别是属性查询创造了条件。
2、本发明提供的将DGN模型转化成轻量模型的方法,能够对DGN文件中的几何模型进行拆解并单独轻量化,导出时再重新合并;并能够将每个几何体的编码、材质、颜色等属性取出,然后将其写入到轻量化模型文件中。通过这个方法转化的轻量化模型包含了原DGN文件中所有几何体的编号、属性等信息,为其他三维软件进行查询、漫游等操作提供支持。
附图说明
图1为符合本发明优选实施例的将DGN模型转化成轻量模型的方法的流程图。
图2为符合本发明优选实施例的将DGN模型转化成轻量模型的方法的S5的流程图。
图3为符合本发明优选实施例的将DGN模型转化成轻量模型的方法的S6的流程图。
图4为符合本发明优选实施例的DGN文件对应的轻量化模型文件的结构树。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
如图1所示,将DGN模型转化成轻量模型的方法,包括以下步骤:
S1,首先打开DGN文件,若打开成功则创建文本格式的轻量化文件;然后扫描DGN文件中的所有的模型描述算子,将其存入数组array A;模型描述算子为MDL中定义的一种描述模型的数据结构,为双向链表形式,含有模型的几何信息、属性信息等;
S2,判断array A是否为空;若为空说明DGN文件是空文件,不需要处理;若不为空,进行以下步骤;
S3,读取array A中的第一个模型描述算子存入Dsc;
S4,提取模Dsc中编码信息即Linkage;然后获取Dsc中的模型的材质、颜色等属性信息;
S5,提取Dsc中模型的类型;
S6,模型面片化处理;
S7,将数据及属性信息按照wrl文件或者obj文件的格式写入创建的轻量化文件中;
S8,判断array A中是否有模型描述算子未处理,若有,则继续从S3开始处理,直至所有模型描述算子处理完毕;若没有,则结束。
如图2所示,S5具体包含以下步骤;
S51,判断Dsc中的模型是否为点、线段独立元素,若是则无需处理,若不是,进行以下步骤;
S52,判断Dsc中模型的类型是否为CELL_HEADER_ELM,若不是,则可以直接对模型进行面片化处理,若是,进行以下步骤;
S53,判断Dsc中模型是否为Grouped Hole或者Smart Solid,若是,则可以直接面片化处理,若不是,则说明该模型描述算子含有子模型描述算子(子模型描述算子数据结构与模型描述算子相同),则需要通过进行以下循环逐个处理子模型描述算子;
S54,将第一个子模型描述算子赋给tempDsc;
S55,获取tempDsc中模型类型,然后跳转到S52,进行递归处理;
S56,将下一个子模型描述子算子赋给tempDsc;
S57,判断tempDsc是否为空,若为空,则说明已经处理完所有子模型描述算子,结束;若不为空,则跳转到S55继续处理。
如图3所示,S6具体包括以下步骤:
首先,平面或曲面的面片化数据存储在两个数组中,第一个数组PointArray存放构成曲面的所有点的三维坐标;第二个数组IndexArray存放构成面片的点在PointArray中的索引号,每个面片的索引号之间用数字“-1”隔开;
然后,对于只包含一个平面或曲面即无须“爆炸”的几何体可直接面片化得到其数据;对于可“爆炸”成多个平面或曲面的几何体或者平面、曲面则先进行“爆炸”,获取每个平面或曲面的面片化数据,依次存放在IndexArray1、PointArray1;IndexArray2、PointArray2;...IndexArrayN、PointArrayN中。然后拼接成一个平面或曲面,拼接方式为:新建一个数据数组PointArray,大小为PointArray1、PointArray2...PointArrayN中元素数目之和,将每个子平面或子曲面的数据数组中的元素按顺序存放到PointArray中;新建一个索引数组IndexArray,大小为IndexArray1、IndexArray2...IndexArrayN之和,第一个子平面或子曲面索引数组所有元素原样依次放入IndexArray,第二个子平面或子曲面索引数组中所有的索引值加上第一个子平面或子曲面数据数组元素个数后存入新的索引数组,以此类推将其他子平面或子曲面的索引数组元素存入新的索引数组。这样拼接好的几何体或平面、曲面的面片化数据存放到了两个数组PointArray与IndexArray中。
如图4所示为DGN文件对应的轻量化模型文件的结构树:第1层为文件层级,一个DGN文件对应一个轻量化文件;第2层为编码层级即Linkage层级,模型的颜色、材质等属性信息位于该层级,在三维软件中能对该层级的某个几何体进行平移、旋转等单独操作;第3层为模型描述算子层级,若模型描述算子无子描述算子,则该层级只有一个几何体,若有子描述算子则可能是多个该层级的结合体组成一个编码级别的几何模型;第4层级为最底层,描述的是“爆炸”后的曲面数据,不过由于“爆炸”后的曲面进行了合并在轻量化文件中体现不出这一层。
与现有技术相比,本发明具有以下有益效果:
1、本发明提供的将DGN模型转化成轻量模型的方法,可以实现将DGN格式的模型转成轻量化模型,轻量化模型中包含了原DGN文件中每个模型的编码,材质、颜色等属性信息,为其它软件对模型进行操作特别是属性查询创造了条件。
2、本发明提供的将DGN模型转化成轻量模型的方法,能够对DGN文件中的几何模型进行拆解并单独轻量化,导出时再重新合并;并能够将每个几何体的编码、材质、颜色等属性取出,然后将其写入到轻量化模型文件中。通过这个方法转化的轻量化模型包含了原DGN文件中所有几何体的编号、属性等信息,为其他三维软件进行查询、漫游等操作提供支持。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
本领域技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
显然,本领域的技术人员可以对发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包括这些改动和变型在内。
Claims (2)
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继续处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201511003773.6A CN106919728B (zh) | 2015-12-28 | 2015-12-28 | 一种将dgn模型转化成轻量模型的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201511003773.6A CN106919728B (zh) | 2015-12-28 | 2015-12-28 | 一种将dgn模型转化成轻量模型的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106919728A CN106919728A (zh) | 2017-07-04 |
CN106919728B true CN106919728B (zh) | 2021-10-12 |
Family
ID=59455238
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201511003773.6A Active CN106919728B (zh) | 2015-12-28 | 2015-12-28 | 一种将dgn模型转化成轻量模型的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106919728B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110765552B (zh) * | 2019-10-22 | 2023-11-24 | 中交水运规划设计院有限公司 | 三维地质模型的属性信息展示方法及装置 |
CN114443158B (zh) * | 2021-12-30 | 2022-10-04 | 北京优锘科技有限公司 | 基于Navisworks软件处理BIM文件的方法、装置、设备和存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6671701B1 (en) * | 2000-06-05 | 2003-12-30 | Bentley Systems, Incorporated | System and method to maintain real-time synchronization of data in different formats |
CN102339476A (zh) * | 2010-07-16 | 2012-02-01 | 北京瑞风协同科技股份有限公司 | 一种描述三维轻量化模型的方法 |
CN102426710A (zh) * | 2011-08-22 | 2012-04-25 | 浙江大学 | 图形处理器上的表面积启发式构建kd树并行方法 |
CN103970949A (zh) * | 2014-05-05 | 2014-08-06 | 华侨大学 | 一种快速成型中三角面片模型的逐边分层方法 |
CN104951630A (zh) * | 2015-07-15 | 2015-09-30 | 上海核工程研究设计院 | Pds三维数据转换为pipestress建模代码的系统及方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140136150A1 (en) * | 2012-11-09 | 2014-05-15 | East Coast Cad/Cam | Method and apparatus for importing data into program code |
-
2015
- 2015-12-28 CN CN201511003773.6A patent/CN106919728B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6671701B1 (en) * | 2000-06-05 | 2003-12-30 | Bentley Systems, Incorporated | System and method to maintain real-time synchronization of data in different formats |
CN102339476A (zh) * | 2010-07-16 | 2012-02-01 | 北京瑞风协同科技股份有限公司 | 一种描述三维轻量化模型的方法 |
CN102426710A (zh) * | 2011-08-22 | 2012-04-25 | 浙江大学 | 图形处理器上的表面积启发式构建kd树并行方法 |
CN103970949A (zh) * | 2014-05-05 | 2014-08-06 | 华侨大学 | 一种快速成型中三角面片模型的逐边分层方法 |
CN104951630A (zh) * | 2015-07-15 | 2015-09-30 | 上海核工程研究设计院 | Pds三维数据转换为pipestress建模代码的系统及方法 |
Non-Patent Citations (2)
Title |
---|
产品三维数据模型轻量化表示实现;刘云华 等;《计算机辅助设计与图形学学报》;20060430;602-607 * |
虚拟现实技术在核电厂仿真中的应用;刘鹏飞 等;《原子能科学技术》;20080920;169–175 * |
Also Published As
Publication number | Publication date |
---|---|
CN106919728A (zh) | 2017-07-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102645202B1 (ko) | 기계 학습 방법 및 장치 | |
CN107918666B (zh) | 一种区块链上的数据同步方法和系统 | |
CN101673410B (zh) | 一种基于矢量建筑图纸重建三维模型的方法 | |
CN111368757A (zh) | 面向机器学习的柱大样建筑图纸图层分类方法及系统 | |
JP6439358B2 (ja) | Cadのための方法、装置、ユーザコンピュータ及びクラウドコンピュータ | |
CN104391991B (zh) | 一种从AutoCAD数据到GIS空间数据的转换方法 | |
CN110705709A (zh) | 训练图神经网络模型的方法和装置 | |
CN109118588B (zh) | 一种基于块分解的彩色lod模型自动生成方法 | |
CN106919728B (zh) | 一种将dgn模型转化成轻量模型的方法 | |
CN110990909B (zh) | 一种三维cad模型数据处理方法 | |
CN112398674B (zh) | 虚拟网络功能描述vnfd配置模板的生成方法及装置 | |
EP3200105A1 (en) | Press-die-shape automatic creation system and program, and press-molding simulation system | |
CN106844610A (zh) | 一种分布式结构化三维点云图像处理方法及系统 | |
CN102622224A (zh) | 在Windchill系统中实现带搜索功能的树状控件的方法 | |
CN109446499A (zh) | 基于xml的合同模板生成方法、装置、设备及介质 | |
CN109472863B (zh) | 一种基于笔画交互的实时3d黏土建模方法 | |
KR102054756B1 (ko) | 조선해양분야의 국제표준 규격제품에 대한 3차원 모델 라이브러리 설계 최적화 방법 | |
CN111833408A (zh) | 一种图像操作信息的层次编码与溯源方法 | |
CN105760424A (zh) | 用于存储企业产品关键数据的数据库建立方法 | |
US8566814B2 (en) | Transporting object packets in a nested system landscape | |
CN108108472B (zh) | 数据处理方法以及服务器 | |
CN106528152A (zh) | 一种基于模型驱动软件开发的信息系统 | |
US20230325548A1 (en) | Machine learning-based design of beam-based physical structures | |
JP7111309B2 (ja) | 情報処理装置、学習装置、認識装置、静止画の生産方法、およびプログラム | |
CN110866606B (zh) | 数据信息、点餐语音指令的处理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP01 | Change in the name or title of a patent holder |
Address after: No. 29 Hong Cao Road, Xuhui District, Shanghai Patentee after: Shanghai Nuclear Engineering Research and Design Institute Co.,Ltd. Address before: No. 29 Hong Cao Road, Xuhui District, Shanghai Patentee before: SHANGHAI NUCLEAR ENGINEERING RESEARCH & DESIGN INSTITUTE |
|
CP01 | Change in the name or title of a patent holder |