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

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

本发明涉及计算机软件领域,尤其涉及一种用于工程项目基于IFC标准的解析模型工作方法。



背景技术:

行业基准分类(Industry Foundation Classes,IFC)是成立于1995年的国际协作联盟(International Alliance for Interoperability,IAI)为建筑业量身定做的面向对象的、中性的、开放的产品模型数据标准。作为ISO STEP在建筑业的特例,IFC继承和借鉴了STEP大量成熟的研究成果,以推动建筑业软件的数据互用性为目标,具有与系统、参与方的无关性,能够有效地支持建筑行业各个应用系统之间的数据交换和建筑物全生命周期的数据管理。作为基于BIM理念的建筑产品数据标准,IFC受到业界人士的广泛支持,成为事实上的BIM模型数据标准。尤其在建筑以及铁路施工方面,需要IFC标准数据作为载体,但是上述行业中存在如下缺陷:

一、绑定IFC实体库(完全独立开发)

IFC文件解析器

IFC几何模型转换器;

缺点:

每一个IFC标准一经发布,其标准内容和格式即已确定,绑定IFC实体库繁琐重复工作;

IFC几何与IFC解析器分离,实际使用繁琐,未整合到一起,获取IFC数据后,还需要传入几何模型转换器;

二、使用闭源解析绑定库,以及使用闭源几何处理器;

缺点:

闭源不可控,其对闭源解析库开发商依赖较重,一旦出现问题,很难修复;几何与解析分开处理稍显麻烦。



技术实现要素:

本发明旨在至少解决现有技术中存在的技术问题,特别创新地提出了一种用于工程项目基于IFC标准的解析模型工作方法。

为了实现本发明的上述目的,本发明提供了一种用于工程项目基于IFC标准的解析模型工作方法,包括如下步骤:

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

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

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

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

所述的用于工程项目基于IFC标准的解析模型工作方法,优选的,所述S1包括:

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

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

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

所述的用于工程项目基于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标准文件进行解析构建。

所述的用于工程项目基于IFC标准的解析模型工作方法,优选的,所述S2包括:

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

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

所述的用于工程项目基于IFC标准的解析模型工作方法,优选的,所述S3包括:

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

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

所述的用于工程项目基于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}

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

综上所述,由于采用了上述技术方案,本发明的有益效果是:

目前市场产品若需要支持基于IFC标准的模型,必须经过解析过程,本方法提供IFC的解析,解析后的数据,可供建筑行业,铁路行业等使用,解析方法快捷。

本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。

附图说明

本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:

图1是本发明工作原理图。

具体实施方式

下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。

在本发明的描述中,需要理解的是,术语“纵向”、“横向”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。

在本发明的描述中,除非另有规定和限定,需要说明的是,术语“安装”、“相连”、“连接”应做广义理解,例如,能够是机械连接或电连接,也能够是两个元件内部的连通,能够是直接相连,也能够通过中间媒介间接相连,对于本领域的普通技术人员而言,能够根据具体情况理解上述术语的具体含义。

如图1所示,本发明公开一种用于工程项目基于IFC标准的解析模型工作方法,包括如下步骤:

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

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

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

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

所述的用于工程项目基于IFC标准的解析模型工作方法,优选的,所述S1包括:

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

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

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

所述的用于工程项目基于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,那么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标准文件进行解析构建。

所述的用于工程项目基于IFC标准的解析模型工作方法,优选的,所述S2包括:

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

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

所述的用于工程项目基于IFC标准的解析模型工作方法,优选的,所述S3包括:

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

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

所述的用于工程项目基于IFC标准的解析模型工作方法,优选的,所述S3包括:

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

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

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

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

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

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

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

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

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

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

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

S3-3,将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}

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

整合为一个完整的解析器,包含所有相关处理,只需传入基于IFC标准的模型,便可直接获取模型和几何数据。

优点:

对于IFC标准的实体库绑定无需自己动手,重用性较高。

开源库对开发人员以及后续用户使用过程出现问题有很好的定位寻错修改能力。

整合了IFC所有相关解析操作,包含几何等,出错率降低,操作方便,一经传入IFC模型,用户无需关心操作,也无需再次导入几何处理器。

能够对开源库进行二次开发,确保最后的结果符合自己的要求。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点能够在任何的一个或多个实施例或示例中以合适的方式结合。

尽管已经示出和描述了本发明的实施例,本领域的普通技术人员能够理解:在不脱离本发明的原理和宗旨的情况下能够对这些实施例进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。

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