IFC是由Building Smart机构发行的一个建筑模型数据交换的国际标准,IFC是AEC实体类库(包括梁/墙/板/柱/门/窗/管线等)。
IFC是用Step express语言写的,采用面向对象方法,把建筑对象组织成为有关联的类。
采用IFC模型,AEC各参与方工程师可以实现模型数据交换和共享,由一个工程师创建的模型,其他工程师就不需要重复建模,从而提供团队工作效率,避免差错。参与方包括:建筑设计师、结构工程师、机电工程师、概预算工程师、深化设计工程师等。
IFC与EXPRESS为了适应计算机辅助技术(CAD、CAE、CAPP、CAM等)国际标准化,实现各应用子系统之间进行有效的信息传递和产品数据交换,采用统一的数据标准进行产品的开发和应用,在计算机辅助设置行业产生了step产品信息格式,也称为ISO10303,这项标准在于建筑行业的分支就是IFC。Step是一套关于产品全身的周期数据的表达与交换的国际标准,这个数据格式是一个中性格式,不依赖于某个单一软件支持产品,信息在不同的计算机应用系统之间,集成与交换确保完整性和一致性,Step不仅适用于中间文件交换,而且可以作为产品数据共享或者是存档的一种通用格式,Step使用的数据格式语言就是express,IFC也同样采用express语言,把产品数据格式的描述延伸到建筑行业。
IFC文件的express语言格式Express是一种概念模式语言,它用来描述一定对象的类,除了产品对象的定义,还包括这些对象的信息或者属性,比如颜色、尺寸、形状等等,以及这些对象的约束,比如它的唯一性。
EXPRESS语言格式
Express语言用“;”结束每条语句,每条语句之间可以不用空格和换行,但是空格和换行可以提高语言的可读性。
Express类
在类的定义中,所有表示他特征的属性和行为关系都要声明,类的声明要用关键词Entity开始和End Entity结束。
属性是类的特性,需要用它来对类进行详细的描述,对类的属性进行描述的参数可以是简单的数据类型,比如实数、整数、字符串等,也可以是列表,以及其他的类对象。
简单的类示例如下:
ENTITY IfcOwnerID;
Identifier:IfcString;
OwningApp:IfcString;
OwningUser:IfcActor;
END _ENTITY;
Express数据类型,
(1)简单的数据类型
在express语言中,简单的数据类型就是最小的数据单元,简单数据类型分为实数、整数、逻辑型、布尔型、二进制型和字符串型。
(2)聚合数据类型(AGGREATION)
聚合数据类型与给定的基本数据类型集合,作为他的这些基本数据类型,成为聚合引力的元素,express语言提供4种聚合数据类型,分别是数组型,袋型,数表型和集合型,在IFC规范里list和set是应用最广的聚合数据类型。
(3)属性
属性表示实体的基本特点,性能和性质,属性说明建立实体数据类型的,属性表示的数据类型间的关系,可以有关系的名称和其他有关系的类来表示有三种属性:
第1种属性是显示属性使人生成引例而具有其值的属性。
第2种是派生属性,关键字DERIVE,有属性标识符、表示类型和计算属性值的表达式组成。
第3种是反向属性,关键字是INVERSE。
唯一规则
Express人数对属性的微信使用"unique rule"来定义。
领域规则(Domain Rule)
领域规则是用于给定的属性,可能有的值的约束,用关键字where来定义,在下面例子中,如果三个表中具有相同成员个数的话,那么实体存在。
ENTITY IfcmaterialLayerSet;
SetName:OPTIONAL String;
Offsets:LIST[1:?] OF IfclengthMeasure;
Thicknesses:LIST[1:?] OF IfclengthMeasure;
Materials: LIST[1:?] OF Ifcmaterial;
WHERE
WR1:(HINDEX(SELF.Offsets) = HINDEX(SELF.Thicknesses)) AND
(HINDEX(SELF.Thicknesses)=HINDEX(SELF.Materials));
END _ENTITY;
在EXPRESS中使用的算术语句可以为领域规则相关的属性值提供约束。比如,如果一个窗的周长限制在4m以内,规则为:
ENTITY Window;
WINDOW _LENGTH:REAL;
WINDOW -HEIGHT:REAL;
WHERE
perimeter:(WINDOW _LENGTH*2 WINDOW _HEIGHT*2) <= 4.0;
END _ENTITY;
超类型和子类型
EXPRESS容许将实体类作为其他实体的子类型,这样在实体类之间建立了一个层次关系,即子类型/超类型,并在这个层次关系中,由子类型继承它的超类型特性,即属性和限制,连续的子类型和超类型关系建立一个层次图,在这个图中,子类型的每个实例是超类型的实例。
构造数据类型
在EXPRESS语言中,构造数据类型有:枚举数据类型和选择数据类型,枚举数据类型以名称的有序集合作为它的域,该名字表示枚举类型的值。例如,一个空间类型是从枚举表中选择出来的,数据类型的枚举声明如下:
TYPE IfcSpaceTYPEEnum = ENUMERATION OF
(Occupied,Tchnical,Circulation);
END _TYPW;
选择数据类型定义了一个数据表,可能是实体数据表、字符串表、实数表等。与枚举型一样,只能从选择表中选一个实例。
TYPE IfcBuildingSelect = SELECT
(IfcBuilding,IfcBuildingStorey);
END _TYPE;
使用其他模式(Schema)
通过EXPRESS接口,用其他模式来定义类。允许模式被分成易于操作的部分和再利用先前定义的或其他地方定义的模式。
REFERENCE规格允许引用其他模式(类)所做的申明,但不能称为当前模式的一部分。
IFC文件为了数据交换的目的,STEP标准Part21规定了正文文件的结构,认为一个STEP文件或一个Part21文件包含两段:头部分和数据部分。IFC文件同STEP文件一样,也包括两部分:头部分和数据部分,示例如下:
示例1:一个IFC文件
头部分
头部分给出文件的种类和作者信息,在每一个IFC交换文件中头部分必须 出现,该部分以关键字“HEADER”开始,以“ENDSEC”结束。
在每一个交换文件结构中要规定头部分,包括文件描述file_description ,文件名file_name,文件模式file_schema。
数据部分
数据部分包括用于交换的产品数据。每一个IFC文件都有数据段落,该数据部分以关键字“DATA”开始,以“ENDSEC”结束。
实体语句采用以下形式:
#<integer value> = <entity name>(<attribute values>);
类实例在数据部分的表达语句为: