建築設備のIFC(Industry Foundation Classes)/【IFCの仕様】
2000年3月27日作成、2024年1月1日変更
三木(作成時、IAI設備FM分科会に所属)
(注)利用したIFCのバージョンは2.0。以降のバージョンでは差異がある。
◆クラス(Class)
「クラス」は、建築物を構成する要素を共通の特性により分類したものである。要素の中には壁、窓、配管のように実体のあるものはもちろん、抽象的に定義された概念的なものも含まれている。例えば、空間、開口部、流体の流れるものなどといったものなど。さらに、付随して必要になる単位、幾何形状などさまざまなクラスが定義されている。
例えば、
配管やダクトの継手はIfcFlowFittingクラスに分類されている。
このクラス定義の説明は、
「流体搬送システムでの接合あるいは変化(例えば、エルボ、チーズ、など)。」
である。
配管とダクトという違いはあるが、基本的な特性により同じクラスに分類されている。異なる特性の部分は後述するプロパティセットより個別に定義される。
◆属性(Attribute)
クラスはそれぞれの特性をあらわす属性が定義される。属性には以下のデータ型がある。
| ・ |
単純データ型(Simple Data Type) 通常のプログラム言語と同様の仕様で、バイナリ、論理値、数値、文字列などがある。 |
| ・ |
列挙データ型(Enumeration Type) あらかじめ定義された列挙リストから何れかを指定する。"定義なし"や"ユーザー定義"などもある。 |
| ・ |
選択データ型(Select Data Type) 選択可能なクラス定義のリストからクラスを選択する。属性の情報として複数のクラスの何れかが利用できる場合に使われる。 |
| ・ |
定義データ型(Defined Data Type) 単純データ型や集合体データ型に名前と意味を定義したもの。データの意味を明確にするために使われる。例えば、属性として座標を指定している時に、3つの実数値のリストとせずに、座標を定義した型IfcPointと表現するなど。 |
例えば、IfcFlowFittingクラスでは、
PredefinedType(定義済みタイプ)
PrimaryFittingType(継手の主要なタイプ)
という列挙データ型の属性がある。
それぞれの列挙データはIfcFlowFittingTypeEnum、IfcPrimaryFittingEnumで定義されている。
◆関係(Relationship)
クラスの属性には、値として他のオブジェクトインスタンスが指定される場合がある。これはクラス間の「関係」と呼ばれる。インスタンスとは、クラスによって定義されたオブジェクトが実際に実体として発生したものである。この関係によってオブジェクトインスタンスが互いに連携し動作することが可能となる。EXPRESS-Gでは実線と末端小さい円で表す。
◆逆関係(Inverse Relationship)
クラス間の「関係」には、それを参照する方向がある。同じ部分で逆から参照するためには逆の「関係」が定義されている必要がある。これは逆関係と呼ばれ、EXPRESS-Gでは"(INV)"を付けて表す。
◆誘導属性(Deriverd Attribute)
この属性は式を評価することによって値が求まる属性である。例えば、円図形のクラス属性として半径があるとき、円周を属性とすれば、式は「円周率×半径×2」と定義される。このような属性を誘導属性と呼ぶ。EXPRESS-Gでは"(DER)"を付けて表す。
◆集合体データ型(Aggregation)
集合体は、属性や関係などのデータを複数指定できるようにしたものである。集合体データ型には4つの種類があり、中でもLISTとSETが多く使われる。
| ・ |
配列(ARRAY) |
固定サイズで順序のあるデータの集合 |
| ・ |
多重集合(BAG) |
順序がなく、重複が許されたデータの集合 |
| ・ |
リスト(LIST) |
順序があるデータの集合 |
| ・ |
集合(SET) |
順序がなく、重複が許されないデータの集合 |
EXPRESS-Gでは属性名に続けて"SET[0:?]"のように表す。これは、SET型の集合データでデータ個数が0以上という意味である。
◆属性や関係のOPTION
定義されている属性や関係は全てが必須のものではない。必須であるか選択的であるかは仕様として定義されている。選択的なデータは、EXPRESS-Gでは破線による接続で示される。また、集合体データでは最小データ数を0として表現する。
◆クラスの階層構造
クラスは階層的な構造をもっている。階層構造は下位クラスが上位クラスの一部分となるように構成される。例として挙げたIfcFlowFittingクラスの最上位からの階層は次のようになる。
IfcRoot
IfcObject (物、事象)
IfcProduct (製品)
IfcElement (要素)
IfcBuildingElemennt (建築物要素)
IfcDistributionElemennt (搬送要素)
IfcDistributionFlowElemennt (流体搬送要素)
IfcFlowFitting (流体搬送の接合・変形部分)
階層において上位のクラスをスーパークラス、下位のクラスをサブクラスと呼ぶ。
◆特性の継承
クラスの階層構造において、下位クラスは上位クラスの特性を継承する。また、その他に下位クラス独自の属性が定義される。
IfcFlowFittingでは2つの属性が定義されているが、上位クラスから継承する属性は30にもなる。
◆抽象上位型(Abstract)
上位クラスが抽象的な概念であり、それ自身では利用されず、下位のクラスのために存在するクラスは抽象上位型と呼ばれる。
◆ONEOF制約(one of)
下位のクラスが排他的に定義されている場合、上位クラスにはONEOF制約が宣言される。排他的とは上位クラスのインスタンスがその下位クラスのどれかひとつにのみ属することを意味する。
これとは別に、複数の下位クラスに属する場合はANDOR制約で宣言される。
◆プロパティセット
クラスにおいて共通の属性として定義することができない個別の特性が必要な場合がある。これに対処するために、ある条件の時に利用される特性の集まりがあらかじめ定義されている。これをプロパティセットと呼ぶ。
例えば、IfcFlowFittingでは、
PreDefinedTypeがDuctFittihgであればプロパティセットはPset_DuctFittingとなり、
PreDefinedTypeがPipeFittingであればプロパティセットはPset_PipeFittingとなる。