原始天尊
ISO-10303-21;
HEADER;
FILE_DESCRIPTION(('ViewDefinition [ReferenceView_V1]'),'2;1');
FILE_NAME(
/* name */ 'C:\\My Work\\Geometry Gym\\documents\\building smart\\github\\ifcscript\\examples\\BeamExtruded.ifc',
/* time_stamp */ '2017-06-27T13:32:38',
/* author */ ('jonm'),
/* organization */ ('Geometry Gym'),
/* preprocessor_version */ 'GeometryGymIFC v0.0.15.0 by Geometry Gym Pty Ltd built 2017-06-27T02:48:24',
/* originating_system */ 'IFCExamples v0.0.1.0',
/* authorization */ 'None');
FILE_SCHEMA (('IFC4'));
ENDSEC;
DATA;
#10= IFCCARTESIANPOINT((0.0,0.0,0.0));
#11= IFCAXIS2PLACEMENT3D(#10,$,$);
#12= IFCLOCALPLACEMENT($,#11);
/* defines the default building (as required as the minimum spatial element) */
#13= IFCBUILDING('39t4Pu3nTC4ekXYRIHJB9W',$,'IfcBuilding',$,$,#12,$,$,$,$,$,#18);
#14= IFCRELCONTAINEDINSPATIALSTRUCTURE('3Sa3dTJGn0H8TQIGiuGQd5',$,'Building','Building Container for Elements',(#61),#13);
#15= IFCCARTESIANPOINT((0.0,0.0,0.0));
#16= IFCAXIS2PLACEMENT3D(#15,$,$);
#18= IFCPOSTALADDRESS($,$,$,$,('Unknown'),$,'Unknown',$,'Unknown','Unknown');
/* general entities required for all IFC sets, defining the context for the exchange */
#20= IFCPROJECT('0$WU4A9R19$vKWO$AdOnKA',$,'IfcProject',$,$,$,$,(#28),#21);
#21= IFCUNITASSIGNMENT((#22,#23,#24,#25,#26));
#22= IFCSIUNIT(*,.LENGTHUNIT.,.MILLI.,.METRE.);
#23= IFCSIUNIT(*,.AREAUNIT.,$,.SQUARE_METRE.);
#24= IFCSIUNIT(*,.VOLUMEUNIT.,$,.CUBIC_METRE.);
#25= IFCSIUNIT(*,.PLANEANGLEUNIT.,$,.RADIAN.);
#26= IFCSIUNIT(*,.TIMEUNIT.,$,.SECOND.);
#27= IFCRELAGGREGATES('091a6ewbvCMQ2Vyiqspa7a',$,'Project Container','Project Container for Buildings',#20,(#13));
#28= IFCGEOMETRICREPRESENTATIONCONTEXT($,'Model',3,0.0001,#30,#31);
#29= IFCCARTESIANPOINT((0.0,0.0,0.0));
#30= IFCAXIS2PLACEMENT3D(#29,$,$);
#31= IFCDIRECTION((0.0,1.0));
#32= IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Body','Model',*,*,*,*,#28,$,.MODEL_VIEW.,$);
/* Example data for BeamExtruded */
#50= IFCCARTESIANPOINTLIST2D(((2.8,-79.5),(2.8,79.5),(6.31472,87.98528),(14.8,91.5),(50.0,91.5),(50.0,100.0),(-50.0,100.0),(-50.0,91.5),(-14.8,91.5),(-6.31472,87.98528),(-2.8,79.5),(-2.8,-79.5),(-6.31472,-87.98528),(-14.8,-91.5),(-50.0,-91.5),(-50.0,-100.0),(50.0,-100.0),(50.0,-91.5),(14.8,-91.5),(6.31472,-87.98528)));
#51= IFCINDEXEDPOLYCURVE(#50,(IFCLINEINDEX((1,2)),IFCARCINDEX((2,3,4)),IFCLINEINDEX((4,5)),IFCLINEINDEX((5,6)),IFCLINEINDEX((6,7)),IFCLINEINDEX((7,8)),IFCLINEINDEX((8,9)),IFCARCINDEX((9,10,11)),IFCLINEINDEX((11,12)),IFCARCINDEX((12,13,14)),IFCLINEINDEX((14,15)),IFCLINEINDEX((15,16)),IFCLINEINDEX((16,17)),IFCLINEINDEX((17,18)),IFCLINEINDEX((18,19)),IFCARCINDEX((19,20,1))),$);
#52= IFCARBITRARYCLOSEDPROFILEDEF(.AREA.,'IPE200',#51);
#53= IFCCARTESIANPOINT((0.0,0.0,0.0));
#54= IFCDIRECTION((0.0,1.0,0.0));
#55= IFCDIRECTION((1.0,0.0,0.0));
#56= IFCAXIS2PLACEMENT3D(#53,#54,#55);
#57= IFCDIRECTION((0.0,0.0,1.0));
#58= IFCEXTRUDEDAREASOLID(#52,#56,#57,1000.0);
#59= IFCSHAPEREPRESENTATION(#32,'Body','SweptSolid',(#58));
#60= IFCPRODUCTDEFINITIONSHAPE($,$,(#59));
#61= IFCBEAM('0EF5_zZRv0pQPddeofU3KT',$,'ExampleBeamName','ExampleBeamDescription',$,#62,#60,'Tag',$);
#62= IFCLOCALPLACEMENT(#12,#16);
ENDSEC;
END-ISO-10303-21;
IFC定义(类继承关系 继承类==》继承了类的对应属性==》赋值的时候赋值到对应的属性)
XPRESS specification:
ENTITY IfcBeam
SUBTYPE OF ( IfcBuildingElement);
END_ENTITY;
Inheritance graph
ENTITY IfcBeam;
ENTITY IfcRoot;
GlobalId : IfcGloballyUniqueId;
OwnerHistory : IfcOwnerHistory;
Name : OPTIONAL IfcLabel;
Description : OPTIONAL IfcText;
ENTITY IfcObjectDefinition;
INVERSE
HasAssignments : SET OF IfcRelAssigns FOR RelatedObjects;
IsDecomposedBy : SET OF IfcRelDecomposes FOR RelatingObject;
Decomposes : SET [0:1] OF IfcRelDecomposes FOR RelatedObjects;
HasAssociations : SET OF IfcRelAssociates FOR RelatedObjects;
ENTITY IfcObject;
ObjectType : OPTIONAL IfcLabel;
INVERSE
IsDefinedBy : SET OF IfcRelDefines FOR RelatedObjects;
ENTITY IfcProduct;
ObjectPlacement : OPTIONAL IfcObjectPlacement;
Representation : OPTIONAL IfcProductRepresentation;
INVERSE
ReferencedBy : SET OF IfcRelAssignsToProduct FOR RelatingProduct;
ENTITY IfcElement;
Tag : OPTIONAL IfcIdentifier;
INVERSE
HasStructuralMember : SET OF IfcRelConnectsStructuralElement FOR RelatingElement;
FillsVoids : SET [0:1] OF IfcRelFillsElement FOR RelatedBuildingElement;
ConnectedTo : SET OF IfcRelConnectsElements FOR RelatingElement;
HasCoverings : SET OF IfcRelCoversBldgElements FOR RelatingBuildingElement;
HasProjections : SET OF IfcRelProjectsElement FOR RelatingElement;
ReferencedInStructures : SET OF IfcRelReferencedInSpatialStructure FOR RelatedElements;
HasPorts : SET OF IfcRelConnectsPortToElement FOR RelatedElement;
HasOpenings : SET OF IfcRelVoidsElement FOR RelatingBuildingElement;
IsConnectionRealization : SET OF IfcRelConnectsWithRealizingElements FOR RealizingElements;
ProvidesBoundaries : SET OF IfcRelSpaceBoundary FOR RelatedBuildingElement;
ConnectedFrom : SET OF IfcRelConnectsElements FOR RelatedElement;
ContainedInStructure : SET [0:1] OF IfcRelContainedInSpatialStructure FOR RelatedElements;
ENTITY IfcBuildingElement;
ENTITY IfcBeam;
END_ENTITY;
中性文件规定所有的反转属性和UNIQUE、WHERE都不在中性文件里面表示,中性文件只按照定义顺序表达一般属性
//清理之后
XPRESS specification:
ENTITY IfcBeam
SUBTYPE OF ( IfcBuildingElement);
END_ENTITY;
Inheritance graph
ENTITY IfcBeam;
ENTITY IfcRoot;
GlobalId : IfcGloballyUniqueId;
OwnerHistory : IfcOwnerHistory;
Name : OPTIONAL IfcLabel;
Description : OPTIONAL IfcText;
ENTITY IfcObjectDefinition;
ENTITY IfcObject;
ObjectType : OPTIONAL IfcLabel;
ENTITY IfcProduct;
ObjectPlacement : OPTIONAL IfcObjectPlacement;
Representation : OPTIONAL IfcProductRepresentation;
ENTITY IfcElement;
Tag : OPTIONAL IfcIdentifier;
ENTITY IfcBuildingElement;
ENTITY IfcBeam;
END_ENTITY;
beautified
ENTITY IfcBeam;
ENTITY IfcRoot;
GlobalId : IfcGloballyUniqueId;
OwnerHistory : IfcOwnerHistory;
Name : OPTIONAL IfcLabel;
Description : OPTIONAL IfcText;
ENTITY IfcObject;
ObjectType : OPTIONAL IfcLabel;
ENTITY IfcProduct;
ObjectPlacement : OPTIONAL IfcObjectPlacement;
Representation : OPTIONAL IfcProductRepresentation;
ENTITY IfcElement;
Tag : OPTIONAL IfcIdentifier;
ENTITY IfcBuildingElement;
ENTITY IfcBeam;
END_ENTITY;
再战原始天尊
IFCBEAM('0EF5_zZRv0pQPddeofU3KT',$,'ExampleBeamName','ExampleBeamDescription',$,#62,#60,'Tag',$);
ENTITY IfcBeam;
ENTITY IfcRoot;
GlobalId : IfcGloballyUniqueId; '0EF5_zZRv0pQPddeofU3KT'
OwnerHistory : IfcOwnerHistory; $
Name : OPTIONAL IfcLabel; 'ExampleBeamName'
Description : OPTIONAL IfcText; 'ExampleBeamDescription'
ENTITY IfcObject;
ObjectType : OPTIONAL IfcLabel; $
ENTITY IfcProduct;
ObjectPlacement : OPTIONAL IfcObjectPlacement; #62 =>(#62= IFCLOCALPLACEMENT(#12,#16);)=>{#10= IFCCARTESIANPOINT((0.0,0.0,0.0));#11= IFCAXIS2PLACEMENT3D(#10,$,$);#12= IFCLOCALPLACEMENT($,#11); #15= IFCCARTESIANPOINT((0.0,0.0,0.0));#16= IFCAXIS2PLACEMENT3D(#15,$,$);}
Representation : OPTIONAL IfcProductRepresentation; #60 =>{
#50= IFCCARTESIANPOINTLIST2D(((2.8,-79.5),(2.8,79.5),(6.31472,87.98528),(14.8,91.5),(50.0,91.5),(50.0,100.0),(-50.0,100.0),(-50.0,91.5),(-14.8,91.5),(-6.31472,87.98528),(-2.8,79.5),(-2.8,-79.5),(-6.31472,-87.98528),(-14.8,-91.5),(-50.0,-91.5),(-50.0,-100.0),(50.0,-100.0),(50.0,-91.5),(14.8,-91.5),(6.31472,-87.98528)));
#51= IFCINDEXEDPOLYCURVE(#50,(IFCLINEINDEX((1,2)),IFCARCINDEX((2,3,4)),IFCLINEINDEX((4,5)),IFCLINEINDEX((5,6)),IFCLINEINDEX((6,7)),IFCLINEINDEX((7,8)),IFCLINEINDEX((8,9)),IFCARCINDEX((9,10,11)),IFCLINEINDEX((11,12)),IFCARCINDEX((12,13,14)),IFCLINEINDEX((14,15)),IFCLINEINDEX((15,16)),IFCLINEINDEX((16,17)),IFCLINEINDEX((17,18)),IFCLINEINDEX((18,19)),IFCARCINDEX((19,20,1))),$);
#52= IFCARBITRARYCLOSEDPROFILEDEF(.AREA.,'IPE200',#51);
#53= IFCCARTESIANPOINT((0.0,0.0,0.0));
#54= IFCDIRECTION((0.0,1.0,0.0));
#55= IFCDIRECTION((1.0,0.0,0.0));
#56= IFCAXIS2PLACEMENT3D(#53,#54,#55);
#57= IFCDIRECTION((0.0,0.0,1.0));
#58= IFCEXTRUDEDAREASOLID(#52,#56,#57,1000.0);
#59= IFCSHAPEREPRESENTATION(#32,'Body','SweptSolid',(#58));
#60= IFCPRODUCTDEFINITIONSHAPE($,$,(#59));
}
ENTITY IfcElement;
Tag : OPTIONAL IfcIdentifier; 'Tag'
ENTITY IfcBuildingElement;
ENTITY IfcBeam;
END_ENTITY;
注:上述的sample为IFC4定义的格式,但是类定义为2x3的格式,因此最后的一个$可以不管。。
如果某个属性没有赋值,也就是为空,就用作为占位符,对应这个例子,这根梁的Name、Description、ObjectType等几个属性没有赋值,用 【$】 代替
用集合Set、列表List、数组Array表达的组合类型属性,在中性文件中一律用括号加上属性列的形式表达。
IFC格式说明
https://blog.csdn.net/zfffp/article/details/79552597
IFC是采用EXPRESS语言定义的实体关系模型,由几百个实体对象组成。实体对象包括建筑要素如IfcWall,几何元素如IfcExtrudedAreaSolid和基本结构如IfcCartesianPoint
在IFC对象模型中,实体分为有根和无根实体,
有根实体从IfcRoot派生,具备身份唯一标识(GUID)、名称、描述以及版本控制。
无根实体没有身份标识(GUID),实例只有直接或间接被引用时才存在。
IfcRoot细分为三个抽象概念:对象定义,关系和属性集:
-IfcObjectDefinition 对象的定义
-IfcRelationship 对象之间关系
-IfcPropertyDefinition 对象属性,动态可扩展
IfcObjectDefinition
IfcObjectDefinition派生出对象(IfcObject)以及对象类型(IfcTypeObject),IfcObject表示实例化的对象,IfcTypeObject表示类型定义(模板),如具有特定型号或通用形状的产品类型。对象和类型进一步细分为六个基本概念: actors、controls、groups 、 products 、 processes、resources。
· IfcActor代表人员或组织。
· IfcControl代表控制时间,成本或范围的规则,例如工单。
· IfcGroup表示特定用途的对象集合,例如电路。
· IfcProduct表示空间中的对象,例如物理建筑元素和空间位置。
· IfcProcess表示时间上的过程,例如任务,事件和过程。
· IfcResource表示资源,如材料,劳动力和设备。
IfcRelationship
IfcRelationship表示对象之间的关系。有五种基本关系类型:composition(组合)、 assignment(分配)、 connectivity(连接)、 association(关联)、definition(定义)。
· IfcRelDecomposes组成结构、部分-整体关系,例如将建筑物细分为地板和房间或墙壁,并将其分解为立柱和护套。
· IfcRelAssigns分配关系,表示一个对象消耗另一个对象的服务,例如分配给任务的劳动力资源或分配给建筑元素的任务。
· IfcRelConnects指对象之间的连接,例如连接到梁的楼板或连接到接收器的管道。
· IfcRelAssociates指示对象的外部引用,例如定义对象的外部IFC库文件。
· IfcRelDefines表示一个实例关系,例如一个特定类型的管段。
IfcPropertyDefinition
IfcPropertyDefinition属性定义且可扩展。属性集包含一个或多个属性,这些属性可能是单个值(例如,字符串,数字,单位测量),有界值(具有最小值和最大值),枚举值,值列表,值表或数据结构体。尽管IFC为特定类型定义了数百个属性集,但自定义属性集可能由应用程序供应商或最终用户定义。
· IfcPropertySet表示一组附加到对象或对象类型的属性。
· IfcPropertySetTemplate [IFC2x4]表示属性及其数据类型的定义
Products
IfcProduct是所有物理对象的基类,并细分为空间元素,物理元素,结构分析项目和其他概念。产品可能有相关的材料,形状和空间位置。空间元素包括IfcSite,IfcBuilding,IfcBuildingStorey和IfcSpace。物理建筑元素包括IfcWall,IfcBeam,IfcDoor,IfcWindow,IfcStair等。分配元素(HVAC,电气,管道)具有端口的概念,其中元素可以具有用于各种服务的特定连接,并且使用电缆,管道或管道连接在一起形成一个系统。各种连接关系被用于构建诸如具有由门或窗填充的开口的墙的元件。
Processes
IfcProcess是进程的基类,细分为任务,事件和过程。流程可能会有持续时间,并且会安排在特定的时间段进行。进程可以被排序,以便后继任务可以在前置任务完成之后开始,遵循关键路径方法。流程可以嵌套到子流程中进行汇总汇总。可以将过程分配给指示由所执行的工作产生的输出的产品。
Resources
IfcResource是资源的基础类别,细分为材料,人工,设备,分包合同,工作人员等。资源可能有各种成本和可用性日历。资源可以嵌套到子资源中进行粒度分配。可以将资源分配给指示代表资源执行的任务的进程。
Contexts
IfcProject封装了一个整体项目,并指出项目名称,说明,默认单位,货币,坐标系和其他上下文信息。有效的IFC文件必须始终包含一个IfcProject实例,其中所有其他对象都与其直接或间接相关。根据特定用途,项目可能包括多个建筑物,多个参与者和/或多个阶段。