什么是IFC? EXPRESS语言与IFC体系

一、IFC

1、IFC简介

IFC是一个数据交换标准, 用于不同系统交换和共享数据。当需要多个软件协同完成任务时, 不同系统之间就会出现数据交换和共享的需求。这时, 工程人员都希望能将工作成果(这里就是工程数据), 从一个软件完整地导入到另外一个软件。

如果能有一个标准、公开的数据表达和存储方法, 每个软件都能导入、导出这种格式的工数据, 问题将大大简化, 而IFC就是这种标准、公开的数据表达和存储方法。

2、IFC标准的架构层次

IFC标准整体的信息描述分为四个层次, 从下往上分别为资源层、核心层、共享层、领域层, 每个层次又包含若干模块, 相关工程信息集中在一个模块里描述, 例如几何描述模块。(点击图片可查看清晰大图,下同。)

资源层里多是基础信息定义, 例如材料、几何、拓扑等;

核心层定义信息模型的整体框架, 例如工程对象之间的关系、工程对象的位和几何形状等;该层主要描述建筑工程信息的整体框架,其将资源

层的信息用一个整体框架组织起来,使它们相互联系和连接,组成一个整体,真实反映现实世界的结构。

共享层定义跨专业交换的信息, 例如墙、梁、住、门、窗等;

领域层定义各自领域的信息, 例如暖通领域的锅炉、风扇、节气阀等。

在IFC标准的定义中, 尽量避免下一层引用上一层的定义, 例如资源层的信息描述不会引用领域的信息描述, 这样避免由于上层的改动影响整体结构。

二、EXPRESS语言

1、EXPRESS语言简介

EXPRESS语言是由STEP(Standard for the Exchange of Product Model Data)开发的概念性语言,STEP是计算机可读的用于交换和描述产品制造信息的标准,正式代号为ISO 10303 EXPRESS是用于面向对象的信息描述语言,处于STEP中基础与核心的地位。它将IFC模型构描述为:规范的类,与类相关联的属性,类的约束,以及类与其他约束之间的关系。然而,EXPRESS语言仅适合软件的读写,在人工读取上存在一定的困难。因此,EXPRESS-G视图以图表式的表达被发展起来,并得到了普遍应用。

2、EXPRESS语言根基类及其三个子类

在IFC标准中定义了一个根类,它提供了一些诸如GlobalId,Name等基本属性定义,并由其派生出3个基本的抽象类。

IfcObject表示一切可以处理的对象或是项目,比如墙体、空地、虚拟边界、工作任务、建筑过程或是参与建筑设计的人等,名字前面的ABS表示该类是抽象类,它又派生出以下几个子类,如图3所示。其中,IfcProduct表示工程中的物理对象; IfcProcess表示在工程中发生并带有意图的行为,比如获取,建造等;IfcControl表示控制或是约束其它对象; IfcResource表示对象所需的资源;IfcActor表示参与工程的角色; IfcProject表示活跃的工程。

IfcRelationship用来描述实体对象间的相互关系,它的子类如图4所示。其中, IfcRelAssigns描述当一个对象使用其它对象提供的服务时的关系; IfcRelAssociates描述对象与外部资源信息(如库,文档等)的联系; IfcRelDecomposes描述元素的组成或是分解关系; IfcRelDefines通过类型定义或是属性定义来描述对象实例; IfcRelConnects定义了2个或是多个对象间的某种方式的连接关系,它可以是物理上的,也可以是逻辑上的。

IfcPropertyDefinition用来描述对象的特征,反映了对象在具体工程中的特殊信息。其中, IfcTypeObject定义了关于对象类型的明确信息; IfcPropertySetDefinition表示可以用来描述一个对象特征的一组属性.

3、EXPRESS语言的继承特点

IFC标准是参考STEP标准进行开发并逐步完善的,采用EXPRESS语言定义。在IFC中性文件中,任何一个实体(如Ifc Beam)都是通过属性来描述自身的信息,属性分为直接属性、反属性(InverseAttribute)、导出属性。直接属性是指标量或直接信息,如Global Id Name等;导出属性是指由其他实体来表述的属性,如Owner History、Object Placement、Representation;反属性则是指通过关联实体进行链接的属性,如HasAssociations通过关联实体Ifc Rel Associates可以关联构件的材料信息。IFC实体的的属性是通过继承关系获得的,如构件Ifc Beam在IFC4版本中总共有33个属性,而自身只有Predefined Type这一个属性,其余的32个属性都是继承了从Ifc Root开始到Ifc Building Element包含的属性。Ifc Beam是Ifc Building Element的SUBTYPE(子类型),而再上一级的Ifc Element是Ifc Building Element的SUPERTYPE(超类型),以此类推,最顶层是Ifc Root。而在IFC物理文件中语句Ifc Beam则只显示了9个属性,包括直接属性和导出属性,其余的24个属性为反属性. 反转属性是INVERSE关键字之后定义的属性,用于明确定义实体实例之间“双向”的一对多或多对多关系。

4、EXPRESS语言材料属性的表达

所有在 IFC 标准中定义的物理对象都可以具有材料属性,所有 IFCElement 实体对象的材料都可以通过IFCMateri-al Select 进行描述。

IFCMaterial Select 实体是选择类实体,引用该实体时,其子实体只能有一个被选择。IFCMaterial 实体用以描述单一材料,IFCMaterial List 用以描述多种材料,IFCMaterial Layer Set Usage 实体用以描述多层材料的顺序,厚度以及每层材料的属性等内容。

5、EXPRESS语言关系组织的表达

模型表达中,需要清晰地描述构件和空间的隶属关系,构件之间的连接关系,构件与材料间的引用关系等

IFC-Relationship实体是 IFC 标准之中用以描述这些各类关系的唯一实体。根据描述关系的不同,又被派生为多个不同子类。展示了其3 个核心的子类,IFCRelContained In Spatial Structure 表示构件和建筑空间的隶属关系,IFCRel Connects Elements 描述了构件间连接关系,IFCRel Associates Material 实体将构件与其相对应的材料属性联系起来.

6、EXPRESS语言的几何表达

建筑构件的几何表达是 IFC 标准描述 BIM 模型的重点,通过 IFC 标准中的几何实体可以完整描述 BIM 模型中构件的大小、形状以及空间位置。IFCProduct 实体的属性值 Ob-ject Placement、Representation 定义了实体的几何表达。构件空间位置定义通过 ObjectPlacement 属性进行,构件几何形状定义通过 Representation 属性进行。所有派生子类均继承了IFCProduct 的 Object Placement、Representation属性,可以利用这两个属性进行几何表达。ObjectPlacement属性引用了资源层中的几何资源: IFCLocal Placement 实体,通过该实体描述构件的相对空间位置; Representation 属性引用资源层中的几何模型资源: IFCShapeRepresentation 实体,通过该实体可以描述构件的几何模型。以长度为1 500 mm,300 × 600 mm 混凝土矩形梁的 IFC为例:

梁的具体信息需要通过属性引用的实体进行体现。#85 代表该语句的实例号,在IFC 文件之中,每一条语句被分配一个实例号,以便被其他实例引用。为了比较简单地分析语句,以$ 符号代替语句中次要信息,但是 $ 所占部分同样是该语句中需要被赋值的属性。

#64,#73 表示了该实体引用了其他实例进行表达.

上述 5 条语句表达了该梁的几何信息。#64 是 IFCBeam的 ObjectPlacement 属性IFCLOCALPLACEMENT( #59) 表示了该梁的几何坐标,这里几何坐标引用了#59 父坐标体系,是一种相对坐标体系的表达方法。#73 是 Representation 的属性值,它表示该梁采用了 Swept Solid 实体拉伸法,其拉伸的参数在 实 例 #72 中。IFCEXTRUDEDAREASOLID( #68,'$ ',#15,1500.) 表示底面沿直线拉伸的方法,#68 表示 300*600 的矩形,#15

指明沿其 Z 轴拉伸 1500mm。

上述 2 条语句表达了该梁的空间隶属关系。#80 定义了一个处于建筑物第 2 层的楼层。通过#173852 = IFCRel Contained In Spatial Structure 实体将 # 85 这根梁和# 80楼层联系起来。

上述 2 条语句表达了该梁的材料属性。#68912 定义了一种属性为混凝土的材料。通guo关系实体#174083 = IFCRel Associates Material 对#85 梁的材料进行了说明.

7、SPF文件简介

IFC SPF(STEP Physical File)文件是 IFC 标准所使用的主要数据交换文件。

头文件(点击图片可查看大图,下同)

数据段

1)

IfcProjectneeds to be included exactly once, it serves as the root element in an IFCexchange file for the coordination view

§  It has a compressed GUID (as many IFC elements), a link to anIfcOwnerHistory (that may have dummy data) and references to the units used in thisfile and to the geometric representation contexts for the shape representationsused in this file.

§  IfcUnitAssignmentis the list of globally defined units(apply to all measure values within this file), e.g. all length measures in thegeometry are given as "mm", all plane angles as "degree"

§  IfcGeometricRepresentationContextis the 3D contextwith a precision factor (here 0.00001), the placement is always 0.,0.,0.

2)

§  This example has a three level project structure, created by exactly onesite, one building, and one building storey. The levels of site and buildingstorey are optional levels.

§  IfcSiteis given with global positioningcoordinates, located at 24° 28' 0'' north, and 54° 25' 0'' west

§  local coordinate system of the site is positioned at the origin 0.,0.,0.with no rotation (no project offsets)

§  IfcBuildingand IfcBuildingStorey, bothpositioned relative to the IfcSite, and with zero offset and rotation.

3)

§  IfcRelAggregatescreates the hierarchical project structuresite --> building --> building storey

§  IfcRelContainedInSpatialStructurecreates thehierarchical assignment of building elements to the relevant project structureelement, here: the wall and the window are contained in the building storey.

4)

Creation of the wall object, since it is definedparametrically, it can be exchanged as standard case wall.

§  IfcWallStandardCaseis positioned relative to the buildingstorey

§  is a single layer wall, with a material layer of 300mm thickness andplaced in the middle of the wall axis (material layer set usage offset -150mm)

§  has a wall axis starting 0.,150. ending at 5000.,150. (within the objectcoordinate system of the wall, defined by #46IfcLocalPlacement)

§  has a wall footprint defined as a area #63 IfcArbitraryClosedProfileDef

§  has a solid body extruding the footprint by 2300mm at #62 IfcExtrudedAreaSolid

§  has an optional bounding box geometry

5)

Adding the IfcMaterialLayerSetUsageinformation (required for standard case)

§  is a single layer wall, with a material layer of 300mm thickness andplaced in the middle of the wall axis (material layer set usage offset -150mm)

6)

三、IFC4

bulidingSMART组织在2013年3月12日正式发布了IFC标准;ISO16739-21在同年三月发布。

下图为IFC的发展历史:

1、IFC4概览

1)、  修正了IFC2X3

以来的已知错误;

2)、  改善了.ifc文档的可读性,并使文档的读写变得更简单;

3)、  将IFC中特性的定义(propertydefinition)与buildingSMART的数据词典链接;

4)、  支持多种新的工作流,包括4D、5D的模型交换,BIM与GIS的交互,增强了热学模拟和可持续性分析功能;

5)、  在IFC主要的建筑元素(architectural)、建筑服务(buildingservice)元素和结构(structural)元素方面增强了IFC规范,添加了新的几何学和参数化的特征;

6)、  将EXPRESSschema和ifcXML4 schema与IFC 规范(specification)充分整合。

2、IFC4的主要改进(部分)

1)、  增强了IFC schema的前后一致性,使其更有规律可循;完善了建筑/建筑服务元素的目录,比如加入了诸如solar device、shading device等之前没有的元素类型;将普通元素的定义与参数定义分开。

2)、  结构用钢和木材方面,增加了材料轮廓相关性的定义;支持各向异性的材料特性;增强   了结构分析模型和细节的表达。

3)、  增强了资源层几何模块的功能,能更好地描述不规则曲面;支持变截面拉伸;支持描述非平面表面和边界;支持扫列方式:arbitrary sweep。

4)、通过改善空间关系的表达以增强能量分析和其他性能分析;在元素(element)和元素类(element types)上添加了环境作用效果指示数与数值(environmental impact indicator and values);支持与GIS协同,使建筑地理位置可以展现在GIS系统中,反之亦然。

5)、将IFC的内容关联到IFD中,使得通过GUID可以在IFD中查询具体信息。

6)、在性质定义(property setdefinition)和数量定义(quantity set definition)中支持多语种。

7)、增强光影元素的表现。支持多纹理,光线分布,符合X3D标准。

8)、使多变的几何描述更加高效。如支持镶嵌几何、顶点向量坐标显示、物体不同表面可以有不同颜色附着和纹理。

9)、实现了ifcXML文件的轻量化,删除了冗余语言。如在IFC2X3标准下的ifcXML文件中占据50行的实体,在ifcXML4中仅占据14行就足以表达。

java读取ifc文件_IFC文件解析相关推荐

  1. java读取并修改xml文件

    java读取并修改xml文件 java如何读取xml并且修改xml文件呢?代码如下: //复制模板xnl File file = new File(xmlSavePath + "/mb.xm ...

  2. Java读取Level-1行情dbf文件极致优化(2)

    最近架构一个项目,实现行情的接入和分发,需要达到极致的低时延特性,这对于证券系统是非常重要的.接入的行情源是可以配置,既可以是Level-1,也可以是Level-2或其他第三方的源.虽然Level-1 ...

  3. java读取各类型的文件

    java读取各类型的文件 用到的几个包 bcmail-jdk14-132.jar/bcprov-jdk14-132.jar/checkstyle-all-4.2.jar/FontBox-0.1.0-d ...

  4. Java读取UTF-8格式txt文件第一行出现乱码及解决;Java读带有BOM的UTF-8文件乱码原因及解决方法(转载)...

    原文地址:http://blog.csdn.net/jackpk/article/details/5702964/ Java读取UTF-8的txt文件第一行出现乱码"?"及解决 t ...

  5. Java读取多层级xml文件

    最近在做国际客服北京职场的项目,需要提供一个接口服务端的能力,也就是需要开发一个http+xml的协议,入参和出参均为Map格式,各系统间的请求或应答是以xml格式封装的.在将返回报文(xml)解析为 ...

  6. java读取resouces目录下文件

    resources中存放一些个资源文件,比如properties文件等,编译好会自动将这里边的文件复制到target/classes里去.获取资源文件的方法说明: XXX.class.getResou ...

  7. java 读取hdfs上的文件内容

    用java读取hdfs的文件 直接撸代码: package com.nature.base.util;import com.nature.component.process.vo.DebugDataR ...

  8. java读取字符串,生成txt文件

    /*** 读取字符串,生成txt 文件 已解决未设置编码时,在项目中直接打开文件,中文乱码问题* WriteText.writeToText(musicInfo,fileName)直接调用* * @a ...

  9. 【java】【乱码】Java 读取本地 UTF8 txt文件乱码处理

    package test;import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; imp ...

  10. Java 读取resources下的文件

    读取resources下的资源文件 文件如图: 工具包 <!-- commons-io io的工具包 --> <dependency><groupId>common ...

最新文章

  1. java中map怎么遍历,Java中怎么遍历Map的所有的元素
  2. 简介struct cmsghdr结构
  3. 【今晚7点半】:现代C++和Mediasoup的WebRTC集群服务实践
  4. C# winForm 定时访问PHP页面小工具
  5. Java Platform Standard Edition 8 Documentation
  6. android targetapi版本低,我的Android进阶之旅------Android中高低API版本兼容使用@TargetApi或者@SuppressLint(NewApi)...
  7. 递归:若函数包含了对其自身的调用,该函数为递归的。《Python核心编程》P305...
  8. 容器系列之虚拟化网络
  9. python复制图片文件_python批量复制图片到另一个文件夹
  10. win7 计算机定时关机脚本,w7系统定时关机命令如何设置_w7电脑怎样设置定时关机...
  11. 国内的商业与开源 CMS
  12. android 谷歌地图离线访问,谷歌升级Android版地图应用 支持离线使用
  13. MATLAB | 读取视频并保存帧图像
  14. 网站瞬间变黑白颜色代码
  15. java pfx加密_.pfx证书 .cer证书MD5withRSA加密
  16. 微信小程序跳转公众号h5页面
  17. docker 网络的解释
  18. 解决win10资源管理器突然占用cpu过高问题
  19. 固体火箭发动机常用设计参数
  20. 利用iframe实现局部打印(区域打印)

热门文章

  1. RS232接口芯片内部原理
  2. CMM3标准体系项目管理
  3. python代码写龙卷风_python-打开网站时龙卷风403获取警告
  4. EXcel 2016高级VBA编程下载
  5. linux发行版本中 图形方式的运行级,在大多数 Linux 发行版本中,图形方式的运行级定义为?...
  6. win10 系统 程序员计算器面板介绍和功能使用
  7. Ubuntu图形化数据库连接工具
  8. 三种射频通信接收机原理框图及优缺点
  9. 工作流管理系统开发之十 数据库连接及事务设定
  10. 《信号与系统学习笔记》—通信系统(一)