Ifc 人工解析——拿一根梁来举例说明

原始天尊

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表示类型定义(模板),如具有特定型号或通用形状的产品类型。对象和类型进一步细分为六个基本概念: actorscontrolsgroups products processesresources

·   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是所有物理对象的基类,并细分为空间元素,物理元素,结构分析项目和其他概念。产品可能有相关的材料,形状和空间位置。空间元素包括IfcSiteIfcBuildingIfcBuildingStoreyIfcSpace。物理建筑元素包括IfcWallIfcBeamIfcDoorIfcWindowIfcStair等。分配元素(HVAC,电气,管道)具有端口的概念,其中元素可以具有用于各种服务的特定连接,并且使用电缆,管道或管道连接在一起形成一个系统。各种连接关系被用于构建诸如具有由门或窗填充的开口的墙的元件。

Processes

IfcProcess是进程的基类,细分为任务,事件和过程。流程可能会有持续时间,并且会安排在特定的时间段进行。进程可以被排序,以便后继任务可以在前置任务完成之后开始,遵循关键路径方法。流程可以嵌套到子流程中进行汇总汇总。可以将过程分配给指示由所执行的工作产生的输出的产品。

Resources

IfcResource是资源的基础类别,细分为材料,人工,设备,分包合同,工作人员等。资源可能有各种成本和可用性日历。资源可以嵌套到子资源中进行粒度分配。可以将资源分配给指示代表资源执行的任务的进程。

Contexts

IfcProject封装了一个整体项目,并指出项目名称,说明,默认单位,货币,坐标系和其他上下文信息。有效的IFC文件必须始终包含一个IfcProject实例,其中所有其他对象都与其直接或间接相关。根据特定用途,项目可能包括多个建筑物,多个参与者和/或多个阶段。













猜你喜欢

转载自blog.csdn.net/jerryzfc/article/details/80829217