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實例,其中所有其他對象都與其直接或間接相關。根據特定用途,項目可能包括多個建築物,多個參與者和/或多個階段。













發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章