IFCファイルを作る/(14)アプリケーションソフトでデータを生成する

2003年6月24日作成、2024年1月1日変更
三木(作成時、IAI設備FM分科会に所属)


(注)利用したIFCのバージョンは2.0。以降のバージョンでは差異がある。

◆IFCの利用

IFCの利用方法の一つとして、計算等の処理結果をIFCで表現することが考えられる。 IFCで表現すれば、結果の表示や修正はIFC対応ソフトでおこなえば良いため、開発効率の向上が期待される。
IFCで表現するにあたっては、IFC対応ソフトが実際にデータをどのように扱っているかを知ることがまず重要である。 そこで今回、IFC対応ソフト(Microsofft VISIO 2002 IFC対応開発版)を使用してIFCデータを生成し、その内容を調査してみた。

◆モデル

下記にモデルを示す。 4個の壁(高さ2600)だけからなる極めて単純なものである。
Get VISIO Data/Get DWG Data/Get IFC Data/Get IFX Data

◆IFCデータ

下記に生成したデータ(注釈を付記)を列記する。

ISO-10303-21;
↑ Part21形式のファイルは、「ISO-10303-21;」で始まり「END-ISO-10303-21;」で終わる。 この間には、「HEADER;」で始まり「ENDSEC;」で終わるHEADERセクションと、「DATA;」で始まり「ENDSEC;」で終わるDATAセクションが含まれる。
HEADER;
/* Generated by software containing ST-Developer
 * from STEP Tools, Inc. (www.steptools.com)
 */
↑ Part21形式のファイルでは、データの区切りは「;」で示される。 改行はデータの区切りではない。 また「/*」と「*/」で囲まれた部分はコメントである。
FILE_DESCRIPTION(
/* description */ (''),
/* implementation_level */ '2;1');

FILE_NAME(
/* name */ 'wall',
/* time_stamp */ '2003-06-10T10:23:12+09:00',
/* author */ ('ma-korai'),
/* organization */ ('\X\90{\X\89\X\EA\X\8DH\X\8B\X\C6\X\8A\X\94\X\8E\X\AE
\X\89\X\EF\X\8E\X\D0'),
/* preprocessor_version */ 'ST-DEVELOPER v7',
/* originating_system */ 'Microsoft(R) Visio(R) 10 Professional',
/* authorisation */ 'ma-korai');

FILE_SCHEMA (('IFC20_LONGFORM'));
ENDSEC;
↑ Part21形式のファイルでは、データは線型リストで表現される。 線型リストとは、いくつかの要素をカンマ「,」で区切って一列に並べたものをカッコ「()」で囲ったものである。 また、線型リストの要素に線型リストを含める(入れ子にする)こともできる。
DATA;
#10=IFCMATERIALLAYERSETUSAGE(#16,0.,.F.);
#11=IFCMATERIALLAYERSETUSAGE(#16,0.,.F.);
#12=IFCMATERIALLAYERSETUSAGE(#16,0.,.F.);
#13=IFCMATERIALLAYERSETUSAGE(#16,0.,.F.);
↑ 「IfcMaterialLayerSetUsage」は材料の層の組み合わせの使い方を表わすもので、3個の属性「ForLayerSet」(材料の層の組み合わせ)、「MlsOffsetFromBaseline」(オフセット寸法)、「MlsSenseLtoR」(層の方向)を持つ。
ENTITY IfcMaterialLayerSetUsage;
    ForLayerSet           : IfcMaterialLayerSet;
    MlsOffsetFromBaseline : IfcLengthMeasure;
    MlsSenseLtoR          : BOOLEAN;
  DERIVE
    (略)
END_ENTITY;
#14=IFCMATERIAL('See layers for construction type',$,(),());
↑ 「IfcMaterial」は材料を表わすもので、4個の属性「MaterialName」(名称)、「MaterialClassification」(分類)、「MaterialFinishes」(仕上げ)、「Properties」(特性)の属性を持つ。
ENTITY IfcMaterial;
    MaterialName           : STRING;
    MaterialClassification : OPTIONAL IfcClassificationList;
    MaterialFinishes       : SET [0:?] OF IfcMaterialFinish;
    Properties             : SET [0:?] OF IfcMaterialPropertySelect;
END_ENTITY;
#15=IFCMATERIALLAYER(#14,0.,150.);
↑ 「IfcMaterialLayer」は材料の層を表わすもので、3個の属性「Material」(材料)、「OffsetFromMLSBase」(オフセット寸法)、「LayerThickness」(厚さ)を持つ。
ENTITY IfcMaterialLayer;
    Material          : IfcMaterial;
    OffsetFromMLSBase : IfcLengthMeasure;
    LayerThickness    : IfcPositiveLengthMeasure;
  INVERSE
    (略)
END_ENTITY;
#16=IFCMATERIALLAYERSET((#15),.F.);
↑ 「IfcMaterialLayerSet」は複数の材料の層の組み合わせを表わすもので、2個の属性「HasMaterialLayers 」(材料の層)、「IsVentilated」(中空層換気/非換気の区別)を持つ。
ENTITY IfcMaterialLayerSet;
    HasMaterialLayers : LIST [1:?] OF IfcMaterialLayer;
    IsVentilated      : BOOLEAN;
END_ENTITY;
Get Tree View
↑↑↑材料↑↑↑
#17=IFCRELCONNECTSPATHELEMENTS('qYnvH.yTE#sU|+30e6Ih',#146,$,.F.,.F.,$,#87,
#90,(),(),.START.,.ATEND.);
#18=IFCRELCONNECTSPATHELEMENTS('pAgKNbn??Ehi_VgfdvV7',#146,$,.F.,.F.,$,#87,
#88,(),(),.ATEND.,.START.);
#19=IFCRELCONNECTSPATHELEMENTS('Y+E*U!T^0<qi!2`o>.T6',#146,$,.F.,.F.,$,#88,
#89,(),(),.ATEND.,.START.);
#20=IFCRELCONNECTSPATHELEMENTS('X5*?iNh3h@ja9E`hR6kt',#146,$,.F.,.F.,$,#89,
#90,(),(),.ATEND.,.START.);
↑ 「IfcRelConnectsPathElements」はオブジェクトの接続関係を表わしたもので、上位から継承する8個の属性「GlobalId」、「OwnerHistory」、「Label」、「UserDefinedType」、「DocumentReferences」、「ConnectionGeometry」、「RelatingElement」(関係する側の要素)、「RelatedElement」(関係される側の要素)と、自身で定義する4個の属性「RelatingPriorities」(関係する側の順序)、「RelatedPriorities」(関係される側の順序)、「RelatingConnectionType」(関係する側の接続形態)、「RelatedConnectionType」(関係される側の接続形態)を持つ。
ENTITY IfcRelConnectsPathElements
  SUBTYPE OF (IfcRelConnectsElements);
    RelatingPriorities     : LIST [0:RelatingLayerCount] OF INTEGER;
    RelatedPriorities      : LIST [0:RelatedLayerCount] OF INTEGER;
    RelatingConnectionType : IfcConnectionEnum;
    RelatedConnectionType  : IfcConnectionEnum;
  DERIVE
    (略)
END_ENTITY;

TYPE IfcConnectionEnum = ENUMERATION OF (
    AtPath
   ,Start
   ,AtEnd
   ,NotDefined);
END_TYPE;
 IfcRoot /GlobalId,OwnerHistory,Label
IfcRelationship /RelatedIsDependent,RelatingIsDependent
IfcRelConnectsElements /ConnectionGeometry,RelatingElement,RelatedElement
IfcRelConnectsPathElements /RelatingPriorities,RelatedPriorities,RelatingConnectionType,RelatedConnectionType
ENTITY IfcRelConnectsElements
  SUPERTYPE OF (ONEOF(
    IfcRelConnectsPathElements
   ,IfcRelJoinsElements ))
  SUBTYPE OF (IfcRelationship);
    ConnectionGeometry : OPTIONAL IfcConnectionGeometry;
    RelatingElement    : IfcElement;
    RelatedElement     : IfcElement;
  WHERE
    (略)
END_ENTITY;
Get Tree View
#21=IFCRELGROUPS('*5>gY1GY<OkXLzsd>r*j',#146,$,.T.,.F.,#23,(#87,#88,#89,
#90));
#22=IFCRELGROUPS('.Ihn^av<EhtLapHngcX%',#146,$,.T.,.F.,#24,(#87,#88,#89,
#90));
↑ 「IfcRelGroups」はグループの関係を表わすもので、上位から継承する5個の属性「GlobalId」、「OwnerHistory」、「Label」、「RelatedIsDependent」、「RelatingIsDependent」と、自身で定義する2個の属性「RelatingGroup」(関係する側のグループ)、「RelatedObjects」(関係される側のオブジェクト)を持つ。
ENTITY IfcRelGroups
  SUBTYPE OF (IfcRelationship);
    RelatingGroup  : IfcGroup;
    RelatedObjects : LIST [1:?] OF UNIQUE IfcObject;
  WHERE
    (略)
END_ENTITY;
 IfcRoot /GlobalId,OwnerHistory,Label
IfcRelationship /RelatedIsDependent,RelatingIsDependent
IfcRelGroups /RelatingGroup,RelatedObjects
Get Tree View
#23=IFCGROUP('*F9NFdNxVzvWul>h*O--',#146,$,$,(),'\X\8C\X\9A\X\92z\X\95\X\A8
\X\8AO\X\95\X\C7');/*「\X・・」は「建築物外壁」*/;
#24=IFCGROUP('#XWe>=e~xykpFw+<BCFq',#146,$,$,(),'\X\95\X\C7');/*「\X・・」は「壁」*/;
↑ 「IfcGroup」はグループを表わすもので、上位から継承する5個の属性「GlobalId」、「OwnerHistory」、「Label」、「UserDefinedType」、「DocumentReferences」と、自身で定義する1個の属性「GroupPurpose」(グループの目的)を持つ。
ENTITY IfcGroup
  SUPERTYPE OF (ONEOF(
    IfcInventory
   ,IfcSpaceProgramGroup
   ,IfcSystem
   ,IfcZone ))
  SUBTYPE OF (IfcObject);
    GroupPurpose : OPTIONAL STRING;
  INVERSE
    (略)
END_ENTITY;
 IfcRoot /GlobalId,OwnerHistory,Label
IfcObject /UserDefinedType,DocumentReferences
IfcGroup /GroupPurpose
↑↑↑接続↑↑↑
#25=IFCSIMPLEPROPERTY('ExtendToStructure',IFCBOOLEAN(.F.));
#26=IFCSIMPLEPROPERTY('ExternalWall',IFCBOOLEAN(.T.));
#27=IFCSIMPLEPROPERTY('ExtendToStructure',IFCBOOLEAN(.F.));
#28=IFCSIMPLEPROPERTY('ExternalWall',IFCBOOLEAN(.T.));
#29=IFCSIMPLEPROPERTY('ExtendToStructure',IFCBOOLEAN(.F.));
#30=IFCSIMPLEPROPERTY('ExternalWall',IFCBOOLEAN(.T.));
#31=IFCSIMPLEPROPERTY('ExtendToStructure',IFCBOOLEAN(.F.));
#32=IFCSIMPLEPROPERTY('ExternalWall',IFCBOOLEAN(.T.));
↑「IfcSimpleProperty」は値を表わすもので、上位から継承する1個の属性「Name」(名前)と、自身で定義する1個の属性「ValueComponent」(実数、整数、自然数、ブール値、文字列のいずれか)を持つ。
ENTITY IfcSimpleProperty
  SUBTYPE OF (IfcProperty);
    ValueComponent : IfcMeasureValue;
END_ENTITY;
 IfcProperty /Name
IfcSimpleProperty /ValueComponent
ENTITY IfcProperty
  ABSTRACT SUPERTYPE OF (ONEOF(
    IfcEnumeratedProperty
   ,IfcLibraryReference
   ,IfcObjectReference
   ,IfcPropertyList
   ,IfcSimpleProperty
   ,IfcSimplePropertyWithUnit));
    Name : STRING;
  INVERSE
    (略)
END_ENTITY;
#33=IFCPROPERTYSET('og#y|&74M`tWT0z#tQXb',#146,$,'Pset_WallCommon',(#25,
#26));
#34=IFCPROPERTYSET('bMv=7k8VmJgiGy>8;,AO',#146,$,'Pset_WallCommon',(#27,
#28));
#35=IFCPROPERTYSET('NzcX>e!NXLjfUQTK#0&H',#146,$,'Pset_WallCommon',(#29,
#30));
#36=IFCPROPERTYSET('eB2Pn!njEvg7Wgg/M5u+',#146,$,'Pset_WallCommon',(#31,
#32));
↑ 「IfcPropertySet」は特性の集まりを表わすもので、上位から継承する3個の属性「GlobalId」、「OwnerHistory」、「Label」と、自身で定義する2個の属性「Name」(名前)、「HasProperties」(特性)を持つ。
ENTITY IfcPropertySet
  SUPERTYPE OF (ONEOF(
    IfcExtensionPropertySet))
  SUBTYPE OF (IfcPropertyDefinition);
    Name          : STRING;
    HasProperties : LIST [1:?] OF IfcProperty;
END_ENTITY;
 IfcRoot /GlobalId,OwnerHistory,Label
IfcPropertyDefinition /
IfcPropertySet /Name,HasProperties
ENTITY IfcPropertyDefinition
  ABSTRACT SUPERTYPE OF (ONEOF(
    IfcPropertySet
   ,IfcElectricalCharacteristics
   ,IfcManufactureInformation
   ,IfcMetricValue
   ,IfcOccupancyNumber
   ,IfcSpaceUseCase ))
  SUBTYPE OF (IfcRoot);
  INVERSE
    (略)
END_ENTITY;
#37=IFCRELASSIGNSPROPERTIES('6>aXieh=E:h5L~wnE?K-',#146,$,.F.,.T.,#33,(#87),
'Generic');
#38=IFCRELASSIGNSPROPERTIES('i%gyhXURt&oW`WfI>.v7',#146,$,.F.,.T.,#34,(#88),
'Generic');
#39=IFCRELASSIGNSPROPERTIES('Ey88vY7b8%umt|%x2H+e',#146,$,.F.,.T.,#35,(#89),
'Generic');
#40=IFCRELASSIGNSPROPERTIES('1!Z9e*0N0Nzq~j^-clYn',#146,$,.F.,.T.,#36,(#90),
'Generic');
↑ 「IfcRelAssignsProperties」はプロパティセットとオブジェクトを関係付けるもので、上位から継承する5個の属性「GlobalId」、「OwnerHistory」、「Label」、「RelatedIsDependent」(関係される側が独立かどうか)、「RelatingIsDependent」(関係される側が独立かどうか)と、自身で定義する3個の属性「RelatingPropertyDefinition」(関係する側の定義=プロパティセット)、「RelatedObjects」(関係される側のオブジェクト)、「DomainView」を持つ。
ENTITY IfcRelAssignsProperties
  SUPERTYPE OF (ONEOF(
    IfcRelAssignsTypedProperties))
  SUBTYPE OF (IfcRelationship);
    RelatingPropertyDefinition : IfcPropertyDefinition;
    RelatedObjects             : LIST [1:?] OF UNIQUE IfcObject;
    DomainView                 : OPTIONAL STRING;
  DERIVE
    (略)
END_ENTITY;
 IfcRoot /GlobalId,OwnerHistory,Label
IfcRelationship /RelatedIsDependent,RelatingIsDependent
IfcRelAssignsProperties /RelatingPropertyDefinition,RelatedObjects,DomainView
ENTITY IfcRelationship
  ABSTRACT SUPERTYPE OF (ONEOF(
    (略)
   ,IfcRelAssignsProperties
   ,(略)                  ))
  SUBTYPE OF (IfcRoot);
    RelatedIsDependent  : BOOLEAN;
    RelatingIsDependent : BOOLEAN;
END_ENTITY;
Get Tree View
↑↑↑特性↑↑↑
#41=IFCAXIS2PLACEMENT2D(#112,$);
#42=IFCAXIS2PLACEMENT2D(#116,$);
#43=IFCAXIS2PLACEMENT2D(#120,$);
#44=IFCAXIS2PLACEMENT2D(#124,$);
↑ 「IfcAxis2Placement2D」は2次元の座標系を表わすもので、上位から継承する1個の属性「Location」(原点)と、自身で定義する1個の属性「RefDirection」(X軸方向)を持つ。(Y軸は誘導)
ENTITY IfcAxis2Placement2D
  SUBTYPE OF (IfcPlacement);
    RefDirection : OPTIONAL IfcDirection;
  DERIVE
    (略)
  WHERE
    (略)
END_ENTITY;
 IfcPlacement /Location
IfcAxis2Placement2D /RefDirection
ENTITY IfcPlacement
  ABSTRACT SUPERTYPE OF (ONEOF(
    IfcAxis1Placement
   ,IfcAxis2Placement2D
   ,IfcAxis2Placement3D))
  SUBTYPE OF (IfcGeometricRepresentationItem);
    Location : IfcCartesianPoint;
  DERIVE
    (略)
END_ENTITY;
#45=IFCRECTANGLEPROFILEDEF(#41,.AREA.,2600.,150.);
#46=IFCRECTANGLEPROFILEDEF(#42,.AREA.,2600.,150.);
#47=IFCRECTANGLEPROFILEDEF(#43,.AREA.,2600.,150.);
#48=IFCRECTANGLEPROFILEDEF(#44,.AREA.,2600.,150.);
↑ 「IfcRectangleProfileDef」は矩形形状定義を表わすもので、上位から継承する2個の属性「Position」(位置)、「ProfileType」(形状)と、自身で定義する2個の属性「XDim」(X方向寸法)、「YDim」(Y方向距離)を持つ。
ENTITY IfcRectangleProfileDef
  SUBTYPE OF (IfcAttDrivenProfileDef);
    XDim : IfcPositiveLengthMeasure;
    YDim : IfcPositiveLengthMeasure;
  DERIVE
    (略)
END_ENTITY;
 IfcAttDrivenProfileDef /Position,ProfileType
IfcRectangleProfileDef /XDim,YDim
ENTITY IfcAttDrivenProfileDef
  ABSTRACT SUPERTYPE OF (ONEOF(
    IfcArbitraryProfileDef
   ,IfcCircleProfileDef
   ,IfcRectangleProfileDef
   ,IfcTrapeziumProfileDef));
    Position    : IfcAxis2Placement2D;
    ProfileType : IfcProfileTypeEnum;
END_ENTITY;

TYPE IfcProfileTypeEnum = ENUMERATION OF (
    Curve
   ,Area);
END_TYPE;
#49=IFCATTDRIVENEXTRUDEDSEGMENT(*,*,2500.,#130,#45);
#50=IFCATTDRIVENEXTRUDEDSEGMENT(*,*,3000.,#132,#46);
#51=IFCATTDRIVENEXTRUDEDSEGMENT(*,*,2500.,#134,#47);
#52=IFCATTDRIVENEXTRUDEDSEGMENT(*,*,3000.,#136,#48);
↑ 「IfcAttDrivenExtrudedSegment」は立体の要素を表わすもので、上位から継承する3個の属性「SweptArea」(掃き出し面)、「ExtrudedDirection」(押し出し方向)、「Depth」(深さ)と、自身で定義する2個の属性「Position」(位置)、「ProfileDef」(形状定義)を持つ。
ENTITY IfcAttDrivenExtrudedSegment
  SUPERTYPE OF (ONEOF(
    IfcAttDrivenMorphedExtrudedSegment
   ,IfcAttDrivenTaperedExtrudedSegment))
  SUBTYPE OF (IfcExtrudedAreaSolid);
    Position   : IfcAxis2Placement3D;
    ProfileDef : IfcAttDrivenProfileDef;
  DERIVE
    (略)
  INVERSE
    (略)
  WHERE
    (略)
END_ENTITY;
 IfcSweptAreaSolid /SweptArea
IfcExtrudedAreaSolid /ExtrudedDirection,Depth
IfcAttDrivenExtrudedSegment /Position,ProfileDef
ENTITY IfcExtrudedAreaSolid
  SUPERTYPE OF (ONEOF(
    IfcAttDrivenExtrudedSegment))
  SUBTYPE OF (IfcSweptAreaSolid);
    ExtrudedDirection : IfcDirection;
    Depth             : IfcPositiveLengthMeasure;
  WHERE
    (略)
END_ENTITY;

ENTITY IfcSweptAreaSolid
  ABSTRACT SUPERTYPE OF (ONEOF(
    IfcExtrudedAreaSolid
   ,IfcRevolvedAreaSolid))
  SUBTYPE OF (IfcSolidModel);
    SweptArea : IfcCurveBoundedPlane;
  WHERE
    (略)
END_ENTITY;
#53=IFCATTDRIVENEXTRUDEDSOLID((#49));
#54=IFCATTDRIVENEXTRUDEDSOLID((#50));
#55=IFCATTDRIVENEXTRUDEDSOLID((#51));
#56=IFCATTDRIVENEXTRUDEDSOLID((#52));
↑ 「IfcAttDrivenExtrudedSolid」は立体を表わすもので、1個の属性「Segments」(立体の要素)を持つ。
ENTITY IfcAttDrivenExtrudedSolid
  SUPERTYPE OF (ONEOF(
    IfcAttDrivenClippedExtrudedSolid))
  SUBTYPE OF (IfcSolidModel);
    Segments : LIST [1:?] OF IfcAttDrivenExtrudedSegment;
  DERIVE
    (略)
  WHERE
    (略)
END_ENTITY;
#57=IFCBOUNDINGBOX(#110,2500.,150.,2600.);
#58=IFCBOUNDINGBOX(#114,3000.,150.,2600.);
#59=IFCBOUNDINGBOX(#118,2500.,150.,2600.);
#60=IFCBOUNDINGBOX(#122,3000.,150.,2600.);
↑ 「IfcBoundingBox」は境界を表わすもので、4個の属性「Corner」(隅点)、「XDim」(X方向寸法)、「YDim」(Y方向寸法)、「ZDim」(Z方向寸法)を持つ。
ENTITY IfcBoundingBox
  SUBTYPE OF (IfcGeometricRepresentationItem);
    Corner : IfcCartesianPoint;
    XDim   : IfcPositiveLengthMeasure;
    YDim   : IfcPositiveLengthMeasure;
    ZDim   : IfcPositiveLengthMeasure;
  DERIVE
    (略)
END_ENTITY;
#61=IFCSHAPEREPRESENTATION(#147,'IAI','BoundingBox',(#57));
#62=IFCSHAPEREPRESENTATION(#147,'IAI','Standard',(#53));
#63=IFCSHAPEREPRESENTATION(#147,'IAI','BoundingBox',(#58));
#64=IFCSHAPEREPRESENTATION(#147,'IAI','Standard',(#54));
#65=IFCSHAPEREPRESENTATION(#147,'IAI','BoundingBox',(#59));
#66=IFCSHAPEREPRESENTATION(#147,'IAI','Standard',(#55));
#67=IFCSHAPEREPRESENTATION(#147,'IAI','BoundingBox',(#60));
#68=IFCSHAPEREPRESENTATION(#147,'IAI','Standard',(#56));
↑ 「IfcShapeRepresentation」は形状表現を表わすもので、上位から継承する3個の属性「ContextOfItems」()、「RepresentationIdentifier」()、「RepresentationType」()と、自身で定義する1個の属性「Items」(幾何表現の種類)を持つ。
ENTITY IfcShapeRepresentation
  SUBTYPE OF (IfcRepresentation);
    Items : SET [1:?] OF IfcGeometricRepresentationItem;
  INVERSE
    (略)
  WHERE
    (略)
END_ENTITY;

ENTITY IfcGeometricRepresentationItem
  ABSTRACT SUPERTYPE OF (ONEOF(
    IfcBooleanResult
   ,IfcBoundingBox
   ,IfcCompositeCurveSegment
   ,IfcCurve
   ,IfcDirection
   ,IfcHalfSpaceSolid
   ,IfcPlacement
   ,IfcPoint
   ,IfcPolyLoop
   ,IfcSolidModel
   ,IfcSurface
   ,IfcVector));
END_ENTITY;
 IfcRepresentation /ContextOfItems,RepresentationIdentifier,RepresentationType
IfcShapeRepresentation /Items
ENTITY IfcRepresentation
  ABSTRACT SUPERTYPE OF (ONEOF(
    IfcShapeRepresentation
   ,IfcTopologyRepresentation));
    ContextOfItems           : IfcRepresentationContext;
    RepresentationIdentifier : STRING;
    RepresentationType       : STRING;
END_ENTITY;

ENTITY IfcRepresentationContext
  SUPERTYPE OF (ONEOF(
    IfcGeometricRepresentationContext));
    GlobalId          : IfcGloballyUniqueId;
    ContextIdentifier : STRING;
    ContextType       : STRING;
  INVERSE
    (略)
END_ENTITY;
Get Tree View
Get Tree View
#69=IFCPRODUCTDEFINITIONSHAPE('D0M=eMIle-o,nGI^BZf_',#146,$,$,(#61,#62));
#70=IFCPRODUCTDEFINITIONSHAPE('>q7lcf+0;Hs$v#Q=LTBA',#146,$,$,(#63,#64));
#71=IFCPRODUCTDEFINITIONSHAPE('F|caIXW2.tu~IKXnw%F$',#146,$,$,(#65,#66));
#72=IFCPRODUCTDEFINITIONSHAPE('t~gCAOx-7ju^9RbRSFn7',#146,$,$,(#67,#68));
↑ 「IfcProductDefinitionShape」はを表わすもので、上位から継承する4個の属性「GlobalId」、「OwnerHistory」、「Name」(名前)、「Description」(記述)と、自身で定義する1個の属性「ShapeRepresentations」(形状表現)を持つ。
ENTITY IfcProductDefinitionShape
  SUBTYPE OF (IfcProductRepresentation);
    ShapeRepresentations : LIST [1:?] OF IfcShapeRepresentation;
  INVERSE
    (略)
END_ENTITY;
 IfcProductRepresentation /GlobalId,OwnerHistory,Name,Description
IfcProductDefinitionShape /ShapeRepresentations
ENTITY IfcProductRepresentation
  ABSTRACT SUPERTYPE OF (ONEOF(
    IfcProductDefinitionShape
   ,IfcProductDefinitionTopology));
    GlobalId     : IfcGloballyUniqueId;
    OwnerHistory : IfcOwnerHistory;
    Name         : OPTIONAL STRING;
    Description  : OPTIONAL STRING;
END_ENTITY;
#73=IFCDIRECTION((0.,0.,1.));
#74=IFCDIRECTION((0.,-1.,0.));
#75=IFCDIRECTION((1.,0.,0.));
#76=IFCDIRECTION((0.,0.,1.));
#77=IFCDIRECTION((0.,0.,1.));
#78=IFCDIRECTION((-1.,-7.105427357601E-015,0.));
#79=IFCDIRECTION((1.,0.,0.));
#80=IFCDIRECTION((0.,0.,1.));
#81=IFCDIRECTION((0.,0.,1.));
#82=IFCDIRECTION((0.,1.,0.));
#83=IFCDIRECTION((1.,0.,0.));
#84=IFCDIRECTION((0.,0.,1.));
#85=IFCDIRECTION((1.,0.,0.));
#86=IFCDIRECTION((0.,0.,1.));
↑ 「IfcDirection」は方向を表わすもので、1個の属性「DirectionRatios」(方向ベクトル)を持つ。
ENTITY IfcDirection
  SUBTYPE OF (IfcGeometricRepresentationItem);
    DirectionRatios : LIST [2:3] OF REAL;
  DERIVE
    (略)
  WHERE
    (略)
END_ENTITY;
#87=IFCWALL('E^-9FL+VGJh:;ii&c1ve',#146,'Sheet.2',$,(),#100,(#69),$,*,#10,
6.5,0.98);
#88=IFCWALL('N2f4q8H>`pm;aEOMQ%kc',#146,'Sheet.9',$,(),#101,(#70),$,*,#11,
7.8,1.17);
#89=IFCWALL('f8o4J3Kc?=qVla#2@0Ta',#146,'Sheet.16',$,(),#102,(#71),$,*,#12,
6.5,0.98);
#90=IFCWALL('FLr|x2YEnhm@#oY9-Xy-',#146,'Sheet.23',$,(),#103,(#72),$,*,#13,
7.8,1.17);
↑ 「IfcWall」は壁を表わすもので、上位から継承する9個の属性「GlobalId」、「OwnerHistory」、「Label」、「UserDefinedType」、「DocumentReferences」、「LocalPlacement」、「Representations」、「Classification」、「HasMaterial」と、自身で定義する3個の属性「LayerInformation」(材質レイヤセットの使用方法)、「calcWallArea」(壁の面積)、「calcWallVolume」(壁の体積)を持つ。
ENTITY IfcWall
  SUBTYPE OF (IfcBuildingElement);
    LayerInformation : IfcMaterialLayerSetUsage;
    calcWallArea     : OPTIONAL IfcAreaMeasure;
    calcWallVolume   : OPTIONAL IfcVolumeMeasure;
  DERIVE
    (略)
  WHERE
    (略)
END_ENTITY;
 IfcRoot /GlobalId,OwnerHistory,Label
IfcObject /UserDefinedType,DocumentReferences
IfcProduct /LocalPlacement,Representations,Classification
IfcElement /
IfcBuildingElement /HasMaterial
IfcWall /LayerInformation,calcWallArea,calcWallVolume
#91=IFCBUILDINGSTOREY('T+>4Uj<wEJkuO@QxA9,u',#146,$,$,(),#99,(),$,$,
'\X\83t\X\83\X\8D\X\83A-1',0.,2000.,0.,0.);
↑ 「IfcBuildingStorey」は階を表わすもので、上位から継承する8個の属性「GlobalId」、「OwnerHistory」、「Label」、「UserDefinedType」、「DocumentReferences」、「LocalPlacement」、「Representations」、「Classification」と、自身で定義する6個の属性「BuildingStoreyReference」(階参照)、「BuildingStoreyName」(階名)、「Elevation」(基準高)、「calcTotalHeight」(階高)、「calcTotalArea」(面積)、「calcTotalVolume」(容積)を持つ。
ENTITY IfcBuildingStorey
  SUBTYPE OF (IfcProduct);
    BuildingStoreyReference : OPTIONAL STRING;
    BuildingStoreyName      : OPTIONAL STRING;
    Elevation               : IfcLengthMeasure;
    calcTotalHeight         : OPTIONAL IfcLengthMeasure;
    calcTotalArea           : OPTIONAL IfcAreaMeasure;
    calcTotalVolume         : OPTIONAL IfcVolumeMeasure;
  WHERE
    (略)
END_ENTITY;
 IfcRoot /GlobalId,OwnerHistory,Label
IfcObject /UserDefinedType,DocumentReferences
IfcProduct /LocalPlacement,Representations,Classification
IfcBuildingStorey /BuildingStoreyReference,BuildingStoreyName,Elevation,calcTotalHeight,calcTotalArea,calcTotalVolume
#92=IFCBUILDING('8O#g1uF*shzxXo21kWuG',#146,$,$,(),#98,(),$,$,$,0.,0.,0.,
0.,0.);
↑ 「IfcBuilding」は建物を表わすもので、上位から継承する8個の属性「GlobalId」、「OwnerHistory」、「Label」、「UserDefinedType」、「DocumentReferences」、「LocalPlacement」、「Representations」、「Classification」と、自身で定義する7個の属性「BuildingReference」(建物参照)、「BuildingName」(建物名称)、「calcTotalHeight」(全高)、「calcSiteCoverage」(敷地占有率)、「calcTotalVolume」(全容積)、「ElevationOfRefHeight」(高度参照高さ)、「ElevationOfTerrain」(地形の高度)を持つ。
ENTITY IfcBuilding
  SUBTYPE OF (IfcProduct);
    BuildingReference    : OPTIONAL STRING;
    BuildingName         : OPTIONAL STRING;
    calcTotalHeight      : OPTIONAL IfcLengthMeasure;
    calcSiteCoverage     : OPTIONAL IfcAreaMeasure;
    calcTotalVolume      : OPTIONAL IfcVolumeMeasure;
    ElevationOfRefHeight : OPTIONAL IfcLengthMeasure;
    ElevationOfTerrain   : OPTIONAL IfcLengthMeasure;
  INVERSE
    (略)
  WHERE
    (略)
END_ENTITY;
 IfcRoot /GlobalId,OwnerHistory,Label
IfcObject /UserDefinedType,DocumentReferences
IfcProduct /LocalPlacement,Representations,Classification
IfcBuilding /BuildingReference,BuildingName,calcTotalHeight,calcSiteCoverage,calcTotalVolume,ElevationOfRefHeight,ElevationOfTerrain
#93=IFCRELCONTAINS(',.^:Z298SeqZ6?E+pmH-',#146,$,.T.,.F.,#137,(#104),.PROJECTCONTAINER.,
.CONTAINED.);
#94=IFCRELCONTAINS('ClhJ@kv31^keA2D-WBWX',#146,$,.T.,.F.,#104,(#92),.SITECONTAINER.,
.CONTAINED.);
#95=IFCRELCONTAINS('nDskF6lY8#x=_Yc#IGBH',#146,$,.T.,.F.,#92,(#91),.BUILDINGCONTAINER.,
.CONTAINED.);
#96=IFCRELCONTAINS('2Bd^W2P~oqf<w8W0v._j',#146,$,.T.,.F.,#91,(#87,#88,#89,
#90),.BUILDINGSTOREYCONTAINER.,.CONTAINED.);
↑ 「IfcRelContains」は、関連するオブジェクト(例えば、プロジェクトと敷地、敷地と建物、建物と階、階と壁)を関係付けるもので、上位から継承する5個の属性「GlobalId」、「OwnerHistory」、「Label」、「UserDefinedType」、「DocumentReferences」と、自身で定義する4個の属性「RelatingObject」(関係する側のオブジェクト)、「RelatedObjects」(関係される側のオブジェクト)、「RelationshipType」(関係の種類)、「ContainedOrReferenced」(包含/参照の区別)を持つ。
ENTITY IfcRelContains
  SUBTYPE OF (IfcRelationship);
    RelatingObject        : IfcObject;
    RelatedObjects        : LIST [1:?] OF UNIQUE IfcObject;
    RelationshipType      : IfcContainmentEnum;
    ContainedOrReferenced : IfcContainedOrReferencedEnum;
  WHERE
    (略)
END_ENTITY;
ENTITY IfcRelationship
  ABSTRACT SUPERTYPE OF (ONEOF(
    IfcRelActsUpon
   ,IfcRelAssignsProperties
   ,IfcRelContains
   ,IfcRelControls
   ,IfcRelGroups
   ,IfcRelNests
   ,IfcRelProcessOperatesOn
   ,IfcRelSequence
   ,IfcRelAdjacencyReq
   ,IfcRelAggregatesConstraints
   ,IfcRelAggregatesCrewResources
   ,IfcRelAssemblesElements
   ,IfcRelAssemblesSpaces
   ,IfcRelAttachesElements
   ,IfcRelAttachesToBoundaries
   ,IfcRelConnectsElements
   ,IfcRelConnectsPorts
   ,IfcRelCoversBldgElements
   ,IfcRelFillsElement
   ,IfcRelSeparatesSpaces
   ,IfcRelServicesBuildings
   ,IfcRelUsesResource
   ,IfcRelVoidsElement
   ,IfcRelWorkInteraction ))
  SUBTYPE OF (IfcRoot);
    RelatedIsDependent  : BOOLEAN;
    RelatingIsDependent : BOOLEAN;
END_ENTITY;
 IfcRoot /GlobalId,OwnerHistory,Label
IfcRelationship /RelatingIsDependent,RelatingIsDependent
IfcRelContains /RelatingObject,RelatedObjects,RelationshipType,ContainedOrReferenced
Get Tree View
#97=IFCLOCALPLACEMENT('Z@7p.xUxZffNr39u_8VK',#146,$,#137,#126);
#98=IFCLOCALPLACEMENT('0LC-aG3QJBwPi&zkS#M*',#146,$,#104,#127);
#99=IFCLOCALPLACEMENT('Yp2FD/g3V%ve_F@Sih+6',#146,$,#92,#128);
#100=IFCLOCALPLACEMENT('iC|LU#C1V6sOF>J!p4$u',#146,$,#91,#129);
#101=IFCLOCALPLACEMENT('5Pj_2Q+,43j/3Xsi&NO9',#146,$,#91,#131);
#102=IFCLOCALPLACEMENT('50:w?dd*1wk62?pw*imF',#146,$,#91,#133);
#103=IFCLOCALPLACEMENT('UyZMMILkm/iZC&bnPJQq',#146,$,#91,#135);
↑ 「IfcLocalPlacement」は位置を表わすもので、上位から継承する3個の属性「GlobalId」、「OwnerHistory」、「Label」と、自身で定義する2個の属性「PlacementRelTo」(相対位置基準)、「RelativePlacement」(相対位置)を持つ。
ENTITY IfcLocalPlacement
  SUBTYPE OF (IfcModelingAid);
    PlacementRelTo    : OPTIONAL IfcObjectWithPlacementSelect;
    RelativePlacement : IfcAxis2Placement;
  WHERE
    (略)
END_ENTITY;
IfcRoot /GlobalId,OwnerHistory,Label
IfcModelingAid
IfcLocalPlacement /PlacementRelTo,RelativePlacement
ENTITY IfcRoot
  ABSTRACT SUPERTYPE OF (ONEOF(
    (略)
   ,IfcObject
    (略)));
    GlobalId     : IfcGloballyUniqueId;
    OwnerHistory : IfcOwnerHistory;
    Label        : OPTIONAL STRING;
  UNIQUE
    (略)
END_ENTITY;
Get Tree View
#104=IFCSITE('M>#;/aJWOVzD1NFpFp,2',#146,$,$,(),#97,(),$,(0,0,0),(0,0,0),
0.,$,1.E-012,0.);
↑ 「IfcSite」は敷地を表わすもので、上位から継承する8個の属性「GlobalId」、「OwnerHistory」、「Label」、「UserDefinedType」、「DocumentReferences」、「LocalPlacement」、「Representations」、「Classification」 と、自身で定義する6個の属性「RefLatitude」(参照緯度)、「RefLongitude」(参照経度)、「RefElevation」(参照高度)、「TrueNorth」(北方位)、「calcSitePerimeter」(敷地周囲長さ)、「calcSiteArea」(敷地面積)を持つ。
ENTITY IfcSite
  SUBTYPE OF (IfcProduct);
    RefLatitude       : OPTIONAL IfcCompoundPlaneAngleMeasure;
    RefLongitude      : OPTIONAL IfcCompoundPlaneAngleMeasure;
    RefElevation      : OPTIONAL IfcLengthMeasure;
    TrueNorth         : OPTIONAL IfcDirection;
    calcSitePerimeter : OPTIONAL IfcPositiveLengthMeasure;
    calcSiteArea      : OPTIONAL IfcAreaMeasure;
  WHERE
    (略)
END_ENTITY;
 IfcRoot /GlobalId,OwnerHistory,Label
IfcObject /UserDefinedType,DocumentReferences
IfcProduct /LocalPlacement,Representations,Classification
IfcSite /RefLatitude,RefLongitude,RefElevation,TrueNorth,calcSitePerimeter,calcSiteArea
#105=IFCCARTESIANPOINT((0.,0.,0.));
#106=IFCCARTESIANPOINT((0.,0.,0.));
#107=IFCCARTESIANPOINT((0.,0.,0.));
#108=IFCCARTESIANPOINT((0.,0.,0.));
#109=IFCCARTESIANPOINT((5000.,4000.00000000002,0.));
#110=IFCCARTESIANPOINT((0.,0.,0.));
#111=IFCCARTESIANPOINT((0.,150.,0.));
#112=IFCCARTESIANPOINT((0.,0.));
#113=IFCCARTESIANPOINT((5000.00000000001,1500.00000000002,0.));
#114=IFCCARTESIANPOINT((0.,0.,0.));
#115=IFCCARTESIANPOINT((0.,150.,0.));
#116=IFCCARTESIANPOINT((0.,0.));
#117=IFCCARTESIANPOINT((2000.,1500.,0.));
#118=IFCCARTESIANPOINT((0.,0.,0.));
#119=IFCCARTESIANPOINT((0.,150.,0.));
#120=IFCCARTESIANPOINT((0.,0.));
#121=IFCCARTESIANPOINT((2000.00000000002,4000.,0.));
#122=IFCCARTESIANPOINT((0.,0.,0.));
#123=IFCCARTESIANPOINT((0.,150.,0.));
#124=IFCCARTESIANPOINT((0.,0.));
↑ 「IfcCartesianPoint」は点を表わすもので、1個の属性「Coordinates」(座標)を持つ。
ENTITY IfcCartesianPoint
  SUBTYPE OF (IfcPoint);
    Coordinates : LIST [1:3] OF IfcLengthMeasure;
  DERIVE
    (略)
  WHERE
    (略)
END_ENTITY;
#125=IFCAXIS2PLACEMENT3D(#105,$,$);
#126=IFCAXIS2PLACEMENT3D(#106,$,$);
#127=IFCAXIS2PLACEMENT3D(#107,$,$);
#128=IFCAXIS2PLACEMENT3D(#108,$,$);
#129=IFCAXIS2PLACEMENT3D(#109,#73,#74);
#130=IFCAXIS2PLACEMENT3D(#111,#75,#76);
#131=IFCAXIS2PLACEMENT3D(#113,#77,#78);
#132=IFCAXIS2PLACEMENT3D(#115,#79,#80);
#133=IFCAXIS2PLACEMENT3D(#117,#81,#82);
#134=IFCAXIS2PLACEMENT3D(#119,#83,#84);
#135=IFCAXIS2PLACEMENT3D(#121,$,$);
#136=IFCAXIS2PLACEMENT3D(#123,#85,#86);
↑ 「IfcAxis2Placement3D」は3次元の座標系を表わすもので、上位から継承する1個の属性「Location」(原点)と、自身で定義する2個の属性「Axis」(Z軸方向)、「RefDirection」(X軸方向)を持つ。(Y軸は誘導)
ENTITY IfcAxis2Placement3D
  SUBTYPE OF (IfcPlacement);
    Axis         : OPTIONAL IfcDirection;
    RefDirection : OPTIONAL IfcDirection;
  DERIVE
    (略)
  WHERE
    (略)
END_ENTITY;
↑↑↑形状↑↑↑
#137=IFCPROJECT('<X0w0l5tC&phyOZfx>O/',#146,$,$,(),$,$,$,#153,$,#125);
↑ 「IfcProject」はを表わすもので、上位から継承する5個の属性「GlobalId」、「OwnerHistory」、「Label」、「UserDefinedType」、「DocumentReferences」と、自身で定義する6個の属性「ReferenceName」(参照名称)、「Name」(名称)、「Phase」()、「UnitsInContext」()、「Classification」(分類)、「AbsolutePlacement」(絶対位置)を持つ。
ENTITY IfcProject
  SUBTYPE OF (IfcObject);
    ReferenceName     : OPTIONAL STRING;
    Name              : OPTIONAL STRING;
    Phase             : OPTIONAL STRING;
    UnitsInContext    : IfcUnitAssignment;
    Classification    : OPTIONAL IfcClassificationList;
    AbsolutePlacement : IfcAxis2Placement;
END_ENTITY;
 IfcRoot /GlobalId,OwnerHistory,Label
IfcObject /UserDefinedType,DocumentReferences
IfcProject /ReferenceName,Name,Phase,UnitsInContext,Classification,AbsolutePlacement
Get Tree View
#138=IFCACTORROLE(.NOTDEFINED.,$);
↑ 「IfcActorRole」は役割を表わすもので、2個の属性「Role」(役割)、「Description」(記述)を持つ。
ENTITY IfcActorRole;
    Role        : IfcRoleEnum;
    Description : OPTIONAL STRING;
END_ENTITY;
#139=IFCADDRESS($,(),$,$,$,$,(),(),(),$,$,$,$);
#140=IFCADDRESS($,(),$,$,$,$,(),(),(),$,$,$,$);
↑ 「IfcAddress」は所在を表わすもので、13個の属性「InternalLocation」(部屋番号)、「AddressLines」(番地)、「Town」(町)、「Region」(地域)、「PostalCode」(郵便番号)、「Country」(国)、「FacsimileNumbers」(FAX番号)、「TelephoneNumbers」(電話番号)、「ElectronicMailAddresses」(Eメールアドレス)、「TelexNumber」(TELEX番号)、「WWWHomePageURL」(ホームページURL)、「Description」(記述)、「PostalBox」(私書箱)を持つ。
ENTITY IfcAddress;
    InternalLocation        : OPTIONAL STRING;
    AddressLines            : LIST [0:?] OF STRING;
    Town                    : OPTIONAL STRING;
    Region                  : OPTIONAL STRING;
    PostalCode              : OPTIONAL STRING;
    Country                 : OPTIONAL STRING;
    FacsimileNumbers        : LIST [0:?] OF STRING;
    TelephoneNumbers        : LIST [0:?] OF STRING;
    ElectronicMailAddresses : LIST [0:?] OF STRING;
    TelexNumber             : OPTIONAL STRING;
    WWWHomePageURL          : OPTIONAL STRING;
    Description             : OPTIONAL STRING;
    PostalBox               : OPTIONAL STRING;
  INVERSE
    (略)
  WHERE
    (略)
END_ENTITY;
#141=IFCPERSON($,$,$,$,$,(#139),(#138));
↑ 「IfcPerson」は人を表わすもので、7個の属性「FamilyName」(名称)、「GivenName」(名称)、「MiddleNames」(名称)、「PrefixTitles」()、「SuffixTitles」()、「Addresses」(住所)、「Roles」(役割)を持つ。
ENTITY IfcPerson;
    FamilyName   : OPTIONAL STRING;
    GivenName    : OPTIONAL STRING;
    MiddleNames  : OPTIONAL STRING;
    PrefixTitles : OPTIONAL STRING;
    SuffixTitles : OPTIONAL STRING;
    Addresses    : LIST [0:?] OF IfcAddress;
    Roles        : LIST [0:?] OF IfcActorRole;
  WHERE
    (略)
END_ENTITY;
#142=IFCORGANIZATION('Microsoft Corporation',(),(),$);
#143=IFCORGANIZATION($,(#140),(),$);
↑ 「IfcOrganization」は組織を表わすもので、4個の属性「Name」(名称)、「Addresses」(住所)、「Roles」(役割)、「Description」(記述)を持つ。
ENTITY IfcOrganization;
    Name        : STRING;
    Addresses   : LIST [0:?] OF IfcAddress;
    Roles       : LIST [0:?] OF IfcActorRole;
    Description : OPTIONAL STRING;
END_ENTITY;
#144=IFCAPPLICATION('Microsoft Visio',
'Microsoft(R) Visio(R) 2002 Professional','2002',#142);
↑ 「IfcApplication」はアプリケーションソフトを表わすもので、4個の属性「ApplicationIdentifier」(アプリケーション識別名称)、「ApplicationFullName」(アプリケーション名称)、「Version」(バージョン)、「ApplicationDeveloper」(アプリケーション開発者)を持つ。
ENTITY IfcApplication;
    ApplicationIdentifier : STRING(16);
    ApplicationFullName   : STRING(255);
    Version               : STRING(255);
    ApplicationDeveloper  : IfcOrganization;
  UNIQUE
      (略)
END_ENTITY;
#145=IFCPERSONANDORGANIZATION(#141,#143,());
↑ 「IfcPersonAndOrganization」は人および組織を表わすもので、3個の属性「ThePerson」(人)、「TheOrganization」(組織)、「Roles」(役割)を持つ。
ENTITY IfcPersonAndOrganization;
    ThePerson       : IfcPerson;
    TheOrganization : IfcOrganization;
    Roles           : LIST [0:?] OF IfcActorRole;
END_ENTITY;
#146=IFCOWNERHISTORY(#145,#144,"10",$,$,$);
↑ 「IfcOwnerHistory」は所有、作成の履歴を表わすもので、6個の属性「OwningUser」(作成者)、「OwningApplication」(作成アプリケーション)、「ModifiedFlag」(修正フラグ)、「ApplicationId」(アプリケーションID)、「OwnerDescriptor」(作成者)、「AuditTrail」(審査履歴)を持つ。
ENTITY IfcOwnerHistory;
    OwningUser        : IfcPersonAndOrganization;
    OwningApplication : IfcApplication;
    ModifiedFlag      : IfcModifiedFlag;
    ApplicationId     : OPTIONAL STRING;
    OwnerDescriptor   : OPTIONAL STRING;
    AuditTrail        : OPTIONAL IfcAuditTrail;
END_ENTITY;
↑↑↑物件↑↑↑
#147=IFCGEOMETRICREPRESENTATIONCONTEXT('$np*rY|40Lv6CbP/2K|r','Generic',
'NotDefined',3,0.);
↑ 「IfcGeometricRepresentationContext」は幾何表現文脈を表わすもので、上位から継承する3個の属性「GlobalId」、「ContextIdentifier」、「ContextType」と、自身で定義する2個の属性「CoordinateSpaceDimension」(座標空間次元)、「Precision」(精度)を持つ。
ENTITY IfcGeometricRepresentationContext
  SUBTYPE OF (IfcRepresentationContext);
    CoordinateSpaceDimension : IfcDimensionCount;
    Precision                : OPTIONAL REAL;
  WHERE
    (略)
END_ENTITY;
 IfcRepresentationContext /GlobalId,ContextIdentifier,ContextType
IfcGeometricRepresentationContext /CoordinateSpaceDimension,Precision
ENTITY IfcRepresentationContext
  SUPERTYPE OF (ONEOF(
    IfcGeometricRepresentationContext));
    GlobalId          : IfcGloballyUniqueId;
    ContextIdentifier : STRING;
    ContextType       : STRING;
  INVERSE
    (略)
END_ENTITY;
#148=IFCSIUNIT(*,.LENGTHUNIT.,.MILLI.,.METRE.);
#149=IFCSIUNIT(*,.AREAUNIT.,$,.SQUARE_METRE.);
#150=IFCSIUNIT(*,.VOLUMEUNIT.,$,.CUBIC_METRE.);
#151=IFCSIUNIT(*,.PLANEANGLEUNIT.,$,.RADIAN.);
#152=IFCSIUNIT(*,.SOLIDANGLEUNIT.,$,.RADIAN.);
↑ 「IfcSiUnit」は単位を表わすもので、上位から継承する2個の属性「Dimensions」(長さ、質量、時間、電流、熱力学温度、物質量、光度のそれぞれの要素のべき数)、「UnitType」(長さ、質量、時間、・・の単位)と、自身で定義する2個の属性「Prefix」(接頭記号)、「Name」(SI単位名)を持つ。
ENTITY IfcSiUnit
  SUBTYPE OF (IfcNamedUnit);
    Prefix : OPTIONAL IfcSiPrefix;
    Name   : IfcSiUnitName;
  DERIVE
    (略)
END_ENTITY;
 IfcNamedUnit /Dimensions,UnitType
IfcSiUnit /Prefix,Name
ENTITY IfcNamedUnit
  ABSTRACT SUPERTYPE OF (ONEOF(
    IfcContextDependentUnit
   ,IfcConversionBasedUnit
   ,IfcSiUnit));
    Dimensions : IfcDimensionalExponents;
    UnitType   : IfcUnitEnum;
  WHERE
    (略)
END_ENTITY;
#153=IFCUNITASSIGNMENT((#148,#149,#150,#151,#152));
↑ 「IfcUnitAssignment」は単位の割り当てを表わすもので、1個の属性「Units」(単位)を持つ。
ENTITY IfcUnitAssignment;
    Units : SET [1:?] OF IfcUnit;
END_ENTITY;
↑↑↑単位↑↑↑
ENDSEC;
END-ISO-10303-21;

◆考察

IFCファイルを一から生成することは、ユーザーにはかなり難しいことである。 しかしながら、例えば上記のデータを元に、壁の寸法を書き換えて、新しいデータを生成するぐらいなら、そう難しくはないであろう。
必要に応じて、上記の例に床、屋根、扉、窓等を付加して標準データを生成し、書き換えるべき事項を把握しておけば、IFCデータでの出力はすぐにも実現できるものといえる。


目次 / /