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