用于工程项目基于IFC标准的解析模型工作方法与流程

文档序号:12121709阅读:来源:国知局

技术特征:

1.一种用于工程项目基于IFC标准的解析模型工作方法,其特征在于,包括如下步骤:

S1,将基于IFC标准的数据导入解析器解析,构建解析后的数据;

S2,取出解析后的模型几何信息;

S3,取出解析后的模型属性信息;

S4,对取出后的模型几何信息进行三角化网格造型。

2.根据权利要求1所述的用于工程项目基于IFC标准的解析模型工作方法,其特征在于,所述S1包括:

将基于IFC标准的模型通过解析库解析,构建高级语言可识取的数据,与原数据映射;

S1-1,基于IFC标准的模型原数据采用EXPRESS语言表达,

S1-2,EXPRESS语言是表达语言,不能直接对其进行读取以及操作,所以需要将基于IFC标准的模型原数据绑定构建为高级语言可操作读取的数据。

3.根据权利要求2所述的用于工程项目基于IFC标准的解析模型工作方法,其特征在于,所述S1-2构建过程包括:

A,将IFC标准用高级语言一一映射,IFC标准中的IfcDoor类,EXPRESS传递表达方式如下:

ENTITY IfcDoor作为一个门实体类,其下的所有其他ENTITY实体表示门实体的属性将会继承至ENTITY实体,在EXPRESS传递表达语言中,这种写法类似于高级语言中的继承多态,例如在ENTITY IfcDoor实体下有ENTITY IfcRoot实体,这表明IfcDoor门实体将会继承IfcRoot实体的属性,所以在IfcRoot下的IfcRoot的属性将会被所有继承IfcRoot的实体拥有,其中包含有:GloabId表示一个继承至IfcRoot的实体的全局位移标识ID,OwnerHistory表示一个继承至IfcRoot的实体的开发者信息,OwnerHistory属性的值在所有继承IfcRoot的实体中是一样的,Description表示对一个继承至IfcRoot的实体的简单描述,当然,一个实体能够继承至多个其他实体,也能够拥有其他父实体的属性,或者会继承其某一个父类的子类实体,在IfcDoor还继承了IfcRoot下的IfcObjectDefintion,一个实体的属性除了有继承至父实体的属性,还有一些自由的属性,在IfcDoor中,自由属性只有OverallHeight表明墙高,OverallWidth表明墙体的宽度;

B、由上述IFC中Express语言对IfcDoor门实体的定义可见,在IFC标准定义中,IfcDoor类中包含很多属性,其中有继承自父类的,也有自己独有的,但是都是作为表达语言,它展示了某一个实体的属性,但是并不能对其进行操作,所以需要对一个IFC文件所表达的信息使用高级语言对其映射,方便操作使用,下面解释如何映射,以及如何操作:

C、一个实体相当于一个class类,上述使用EXPRESS传递语言表达的ENTITY IfcDoor实体,在高级语言中定义为class IfcDoor,继承至其他实体的属性,能够不用表示,因为在定义其需要继承的实体时,已经定义了那些父实体的属性,直接继承其他class类型,会自动继承其拥有的public公有变量,和protect保护变量,所以在使用c#高级语言绑定映射EXPRESS语言时,只需要定义其自由属性,比如IfcDoor实体中,属性只需要定义OverallWidth和OverallHeight,并且定义为public公有变量,因为其他属性书继承至门实体,如果其他实体继承自IfcDoor,那么它们同样会拥有这两个实体属性,我们绑定映射EXPRESS传递语言的目的在于使通过EXPRESS传递表达语言表达的属性能够很好的进行操作,而在c#高级语言中,除了能够在一个类型中定义属性,还能够定义函数,这些函数代表对这个类型的功能的操作,比如在IfcDoor这个类型中能够定义一个bool isOpen函数,用来判断这个门是否是开启,这样绑定后,能够对之前使用EXPRESS表达语言不能操作的IFC实体进行操作;

D、当然,为了使得操作更加简单,我们还会在除了IFC实体绑定外定义其他类型辅助,通过测量数据结构IfcMeasure,进行数据辅助,这样,就能够避免重复定义这一结构从而导致出错率增加或者复杂度增加;

E、将IFC标准绑定映射为高级语言的一系列类库,如果IFC标准有更新,或者其开源库所绑定的标准不能满足需求,则需要自己添加绑定,如IfcRailWay类型,此类型是专门为中国铁路定制的实体类型,所以在已有的开源库中没有IfcRailWay实体的映射,在实际应用中,若一个IFC文件中包含有此实体,我们对其属性是不能获取并且不能操作的,所以会像绑定IfcDoor一样对其进行绑定,并添加常用的操作函数IfcMeasure measureLenght用来测量某一段铁路的长度;

F、绑定映射IFC标准只是前期工作,证明有一个库能够供基于IFC标准模型物理文件解析,而一个基于IFC标准模型物理文件是由一系列互相引用的实例组合成的文本文件,在每一条实例前的(#1,2….)代表其在文件内部的引用名,等号后面的大写字符串代表该实例在标准(已绑定映射)中的类型,类型后面括号内的内容与标准库中的属性一一对应,由此能够由前面所提到的标准库对IFC标准文件进行解析构建。

4.根据权利要求1所述的用于工程项目基于IFC标准的解析模型工作方法,其特征在于,所述S2包括:

从绑定构建解析后的数据中取出几何信息;

S2-1,基于IFC标准的数据模型,该构件即为拥有外形数据,在IFC标准中构件父类为IfcProduct,其有representation属性,即外形数据,遍历外形数据,获取其中所有的IfcGeometricRepresentationItem,即为几何外形项,需要注意的是,存在可见构件拥有外形数据,但是其并不拥有几何外形项,此类直接忽略,取出的外形项是边界模型(B-Rep),几何体(Solid),挤出几何体(excute-Solid),网格(Mesh),此步骤先缓存,供后续网格化操作。

5.根据权利要求4所述的用于工程项目基于IFC标准的解析模型工作方法,其特征在于,所述S3包括:

从绑定构建基于IFC标准的数据中取出模型属性信息

S3-2,基于IFC标准的数据模型,该构件为拥有形体的的父类为IfcProduct,其有property属性以及propertySet属性集,即属性数据,由于之前步骤已经绑定构建所有模型数据,此部可直接取出模型几何数据property,供后续开发。

6.根据权利要求1所述的用于工程项目基于IFC标准的解析模型工作方法,其特征在于,所述S3包括:

对取出后的模型几何数据网格化造型

S3-A,基于IFC标准的数据模型,其获取到的几何数据以下:

圆柱:基于IFC标准的数据模型定义圆柱的几何信息为两个点,三个面,其中三个面包括两个平面,一个曲面;

平面:基于IFC标准的数据模型定义平面几何信息为一个顶点集,以及一系列面,如果平面内有间隙,定义为内边界;

布尔:基于IFC标准的模型定义窗户等构件为IfcOpening,表示缝隙;

此间类型产生如第二步所述,取出后的几何外形项,为多种类型中的一种类型,且不止上述几种,如下表:

灰色部分为几何类型,虽然几何类型很多,但是下面讲到的网格造型,会将各种不同类型几何项输出为相同格式.

S3-B,采用opencascade(OCC)进行几何造型,几何造型的意义在于将IFC标准所描述的几何信息转换为可供渲染器渲染的数据(俗称三角网格化数据),这类数据不分类型,格式全部统一,下面以圆柱为例举例栅格化过程

圆柱在IFC表达中,由三个面,两个点组成,造型过程为:

每个面拥有面积,两个点拥有坐标,由此可计算出,圆柱上下两圆平面边界周长,而圆柱曲面,在造型器网格化前,处理为平面,也就是说,同样能够确定曲面的四边长度,在造型前,会给造型器传递一个造型精度,根据此造型精度,对曲面的上下两条边,进行定点,且确定半径,由此造型完成;

当然,每一种类型对应一种造型方法,不过大致思路是一样的;将造型后的数据按一定格式存储,能够按文本,能够按二进制,本方法采用文本存放网格化数据;

S3-C,将IFC标准提供的不同类型几何数据栅格化为三角面片数据后,再写读取栅格化面片数据的接口,其中栅格化三角面片数据中包含顶点列表,法线列表,以及拓扑关系:

三角形:若三角形三个顶点分别为:

P1:(X1,Y1,Z1)

P2:(X2,Y2,Z2)

P3:(X3,Y3,Z3)

那么顶点列表:p_list{X1,Y1,Z1,X2,Y2,Z2,X3,Y3,Z3}

拓扑关系列表:t_list{Pcount,P1_Index,P2_Index,P3_Index}

即:{3,0,1,2}

法线遵循右手规则,栅格化的数据供后面渲染工具渲染使用。

当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1