第2章 空調・衛生設備部材のIFCによる表現の明確化

2.1 はじめに

BIMの機能を構築するために、建築物のモデルをオブジェクトレベルで定義する仕様であるIndustry Foundation Classes、即ちIFCの利用が進みつつあり、各種のモデリングや解析ソフトにおけるIFCの実装も増えつつある。
しかし、BIM と同様にIFCも発展途上段階にあり、実用化に向けて種々の開発が続いている状況である。例えば、建築設備分野における種々の要素の表現手法は明確にされたとは言えず、開発の制約となっている。
IFCに代わる定義として、例えば、国内ではC-CADEC注1)により、1999年に建築設備の経路部材(ダクトや配管等)に対するBE-Bridge注2)及び機器部材に対するStem注3)が整備され、以降、更新されながら、建築設備分野で利用されている。しかし、これらは建築全般を対象とするものではないため、BIMでの利用は限定的にならざるを得ない。

注1) 'Construction - CAD and Electronic Commerce' Council, (財)建設業振興基金 設計製造情報化評議会
注2) Building Equipment - Brief Integrated Format for Data Exchange, 設備CADデータ交換仕様
注3) Standard for Exchange of Mechanical equipment library data, 設備機器ライブラリデータ交換仕様

また、国土交通省及び同省から委託を受けたSCADEC注4)及びJACIS注5)により、2001年に図面の電子納品の基準としてSXF注6)が整備され、主として土木分野において利用されている。しかし、SXFは未だに3次元形状を扱うことができないため、BIMでの利用は難しい。また、同省が2014年に公開した「官庁営繕事業におけるBIMモデルの作成及び利用に関するガイドライン」には盛り込まれていない。

注4) Standard CAD data Exchange format in japanese Construction field, CADデータ交換標準開発コンソーシアム
注5) Japan Construction Information Center, (財)日本建設情報総合センター
注6) Scadec eXchange Format

そこで筆者らは、IFC を用いて建築設備要素を表現する手法を明確化した1)。本章ではその結果を述べる。

1) 三木秀樹, 一ノ瀬雅之, 須永修通, 中野民雄, 市川憲良: 空調・衛生設備部材のIFCによる表現手法の明確化, 日本建築学会技術報告集, 第20巻, 第44号, pp.375-380,2014.2

2.2 建築設備分野における既往の研究

1996 年にIAI の日本支部が設立され、現在までIFC の普及を目指す活動が続けられてきた。この活動の一環として、1999 年に設備・FM 分科会が、建物モデルと空調熱負荷計算、及び機器選定計算の連携を試行した2)。また、2007 年には研究助成を受けて、許が建物モデルと空調熱負荷計算、CO2 計算、及びリサイクル性評価といった環境設計アプリケーションとの連携を試行した3)。一方、2009 年から、空気調和・衛生工学会のBIM・CFD注7)パーツ化小委員会が、建物モデルと空調熱負荷計算、さらに気流計算(CFD)との連携を試行している4)。

2) 今野一富ほか: 建物モデルと熱負荷計算の連携, (社)IAI日本, セミナー, 1999
3) 許雷: 国際仕様IFCによる建築デジタル環境設計ツールの開発に関する研究, (社)IAI日本, 2007
4) 河野良坪, 石崎陽児, 一ノ瀬雅之ほか: 建築環境CAE ツールにおけるBIM連携化とCFD パーツ化に関する研究, (社)空気調和・衛生工学会, 論文集No.174, pp.15-21, 2010.9
注7) Computational Fluid Dynamics, 数値流体力学

これらの研究では、IFC で構築された建物モデルから、空調熱負荷計算等に必要な情報、例えば、壁や窓の面積や方位等が取得され、再入力の削減・正確さの向上が示されていた。また、IFCを扱うために、ミドルウェアであるIFCsvr コンポーネント(以降、IFCsvr)5)が利用されたことが示されていた。しかし、これらの研究は建物モデルと空調熱負荷計算や気流計算等の連携による効果の検証に重点をおいたものであり、IFC を用いて建築設備要素を表現するための手法は、モデルの構築方法やIFCsvrを利用した実装方法を含め明確にされていない。

5) 足達嘉信: SECOM, IFCsvr, http://groups.yahoo.co.jp/group/ifcsvr-forum/

また、米国ローレンスバークレー研究所は、代表的な空調熱負荷計算ソフトの一つであるEnergyPlus とIFCの連携について検討すると共に、建築環境・設備に関わる中間データフォーマットであるSimModel を提案しているが、上記と同様に建築設備要素の表現については明確にされていない6)7)。

6) Vladimir Bazjanac, Tobias Maile: IFC HVAC INTERFACE TO ENERGYPLUS - A CASE OF EXPANDED INTEROPERABILITY FOR ENERGY SIMULATION, SimBuild 2004, IBPSA-USA National Conference Boulder, CO, August 4-6, 2004
7) James O'Donnell, Richard See, Cody Rose, Tobias Maile, Vladimir Bazjanac and Phil Haves: SIMMODEL: A DOMAIN DATA MODEL FOR WHOLE BUILDING ENERGY SIMULATION, proceedings of Building Simulation2011, pp.382-389

以上のように、IFC を用いて建築設備要素を表現するための手法は明確にされていない。

2.3 目的及び方針

BIMにより建設業における生産性の向上が図られるとしても、その基盤となるIFCによる表現方法が明確にされなければ、BIMの実現は困難である。そのため、本章では、IFCを用いて建築設備要素をモデルとして表現する手法を明確化することを目的とし、下記を方針とした。
建築設備要素を具体的に想定し、モデルに必要な情報を特定する。
IFCを用いて形状と属性を表現する。
また、対象とする建築設備要素は、主要なダクト部材(直管、継手、ダンパー)及び配管部材(直管、継手、バルブ)とした。その理由は、ダクト部材及び配管部材は、空調・衛生設備において、最も一般的に使用される要素であるためである。
ダクトには断面が矩形の角ダクトと円形の丸ダクトがあり、それぞれに部材がある。なお、以下においては、便宜上、角ダクト直管を例として説明する。

2.4 建築設備要素の表現手法に関する課題及び実装

2.4.1 モデルに必要な要件
角ダクト直管を図2.1に示す8)。
図2.1 角ダクト直管の例

角ダクト直管をモデルとして表現するにあたり、まず、その用途を想定した。その理由は、同じ部材であっても、用途が変わればモデルに要求される情報が変わるためである。ここでは、用途として、施工段階における設備要素と建築要素あるいは設備要素同士の干渉確認を想定した。干渉確認は、BIMの利用として最も一般的なものの一つである。
用途として干渉確認を想定することにより、次に角ダクト直管のモデルに要求される形状や属性を下記のような手順で考えた。
まず、形状については、干渉確認の精度に応じた、実体に近い外形形状が必要と考えた。実体と同じであっても良いが、必ずしも必要ではない。これは、2次元での干渉確認に使用されている施工図に示される角ダクト直管の絵姿を見れば理解される。角ダクト直管の絵姿を図2.2に示す。
図2.2 施工図における角ダクト直管の表現
角ダクト直管の実物と施工図の表現には、例えば、表2.1に示すような差異がある。
表2.1角ダクト直管の実物と施工図の表現の差異
区分 実物 施工図の表現
構成要素 板材・フランジ・リベット・ボルト・クリップ・ガスケット等 板材とフランジ
長さ フランジ面間距離−ガスケット厚さ フランジ面間距離
フランジ接続面 個々に独立 一体化(単線)
本モデルの形状は施工図に準じることとし、位置については、形状と同じく、干渉確認の精度に応じた、実体に近い位置が必要と考えた。
次に、属性については、干渉した角ダクト直管を識別するために、部材名称あるいは部材コード等が必要と考えた。また、識別には給気や排気といった区別あるいは呼び寸法(実際の寸法の端数をまるめて標準化した寸法)等も一般的に使用されるため、併せて必要と考えた。さらに、干渉した角ダクト直管を調整する際には寸法を変更する場合があるため、計算の根拠となる風量も必要と考えた。
なお、ここでは一つの用途を想定したが、実際には、一つの用途のためだけにモデルを作成するのは効率的ではないと考えられる。干渉確認のために作成したモデルは、その用途が終わった時に、新たな要求事項を追加することにより、後工程の他の用途に転用することが期待される。新たな要求事項は、後工程が積算や発注であれば、ダクト材質や厚み、フランジ形式、断熱の有無、施工場所等、また、加工であれば、同じくフランジ形式、ガスケット厚さ等、維持管理であれば、完成時期や耐用年数等が考えられる。

2.4.2 IFCによる実装
(1) IFCの概要
角ダクト直管のモデルをIFCにより表現する準備として、まず、IFCの概要を整理しておく。IFCでは、建築物を構成するオブジェクト、即ち要素として、例えば、案件・敷地・建物・階・空間・建築部材・機器部材・立体・面・線・点・ベクトル・数値・文字・単位・プロパティセット・関連付け等が、クラス注8)として定義され、また、その類似性をもとに階層化されている。クラスの数は650を超える。クラスにはアトリビュート(属性)が定義され、上位のクラスのアトリビュートは下位のクラスに継承される。

注8) 実在する物体等についてのシステム的な表現方法の仕様。

これらはIFCの仕様書に記載され、公開されている9)。しかし、仕様書だけで全体を概観することは難しく、また、これに代わる資料も少ないため、IFCを用いて開発を行う際の障害となっている。

9) Building Smart: IFC2x Edition 3, http://iaiweb.lbl.gov/Resources/IFC_Releases/R2x3_final/

そのため、IFCのクラスとアトリビュートを概観するために、仕様書をもとに、角ダクト直管とその周辺のクラスとアトリビュートを拾い出したものを表2.2に示す。表において、全体を概観することができる。
表2.2 IFCのクラスとアトリビュートの概要
クラス及びアトリビュート
(注:クラス / アトリビュート、*は抽象クラスなど、-は省略)
備考
IfcRoot* / GlobalID, OwnerHistrey, Name, Description
├IfcObjectDefinition*
│├IfcObject* / ObjectType
││├IfcProject* / -, -, -, -
││├IfcProduct / ObjectPlacement, Representation
│││├IfcSpatialStructureElement* / -, -
││││├IfcSite / -, -, -, -, -
││││├IfcBuilding / -, -, -
││││├IfcBuildingStorey / -
││││└IfcSpace / -, -
│││├IfcElement* / Tag
││││├IfcFeatureElement*
│││││├IfcFeatureElementSubtraction
││││││├IfcOpeningElement
│││││::
││││├IfcBuildingElement*
│││││├IfcColumn
│││││├IfcBeam
│││││├IfcSlab / -
│││││├IfcWall
│││││├IfcWindow / -, -
│││││├IfcPlate
│││││:
││││├IfcDistributionElement
│││││├IfcDistributionFlowElement
││││││├IfcFlowTerminal
││││││├IfcFlowSegment
││││││├IfcFlowFitting
││││││├IfcFlowController
││││││├IfcFlowMovingDevice
││:::::
│└IfcTypeObject / -, -
│ └IfcTypeProduct / -, -
├IfcPropertyDefinition*
│├IfcPropertySetDefinition*
││├IfcPropertySet /HasProperties
│::
└IfcRelationship*
 ├IfcRelDefines* / RelatedObjects
 │├IfcRelDefinesByType / RelatingType
 │└IfcRelDefinesByProperties / RelatingPropertyDefinition
 │ :
 ├IfcRelConnects*
 │├IfcRelVoidsElement / RelatingBuildingElement, RelatedOpeningElement
 │├IfcRelFillsElement / RelatingOpeningElement, RelatedBuildingElement
 : :



案件
生産物
空間構成要素
敷地
建物

空間
要素
機能要素

開口

建築要素





庇等

分配要素
流体分配要素
端末(下図@)
直管(下図A)
継手(下図B)
ダンパー・バルブ等(下図C)
ファン・ポンプ等(下図D)

区分

プロパティ定義
プロパティセット定義
プロパティセット

関連
関連付け
区分の関連付け
プロパティの関連付け

接続
開口(空)
開口(充)

参考図
表において、第1行にあるIfcRootが最上位のクラスである。IfcRootにはIfcObjectDefinition、IfcPropertyDefinition、IfcRelationshipの下位クラスがあり、さらにそれぞれに下位クラスがある。なお、クラスが「抽象クラス」や「選択クラス」(複数の類似のクラスをまとめるためのクラス)のように、それ自体は実際には使用されない場合は、適切な下位クラスが使用される。
角ダクト直管が該当するクラスはIfcFlowSegmentである。なお、IfcFlowSegmetは流体を通す管路を表現するため、丸ダクト直管や配管の直管、電気の配線も含む。IfcFlowSegmetの仕様書の定義(抜粋)を表2.3に示す。
定義 備考
ENTITY IfcFlowSegment;
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 IfcDistributionElement;
ENTITY IfcDistributionFlowElement;
ENTITY IfcFlowSegment;
END_ENTITY;

上位クラス及びアトリビュート
 〃
 〃
 〃
 〃
 〃
 〃
 〃
 〃
 〃
 〃
 〃
 〃
 〃
 〃
表において、IfcFlowSegmentの上位クラス及びそのアトリビュートが分かる。

(2) インスタンスの生成とアトリビュートの設定
クラスのインスタンス(クラスを型板とすると、型板を使って作られる実体)は前述のIFCsvrを用いて生成できる。
IfcFlowSegmentのインスタンスを生成するために作成したコード(要部のみ)を表2.4に示す。なお、コードはマイクロソフト社の表計算ソフトExcel2010上で実行できるVBA注9)により記述している。

注9) Visual Basic for Application

表2.4 IfcFlowSegmentを作るコード例
コード
1
2
3
4
5
str_file = "C:\sample.ifc" '適当なパス名及びファイル名
Set obj_IFCsvr = CreateObject("IFCsvr.R300")
Set obj_design = obj_IFCsvr.NewDesign(str_file)
Set obj_entity = obj_design.Add("IfcFlowSegment")
obj_design.Save()
表において、第2行はIFCsvrを使用できるように設定するもので、以降はIFCsvr の機能を用いることにより、第3行はIFCデータを生成するもの、第4行はデータにIfcFlowSegmentのインスタンスを追加するもの、第5行はデータをファイルに保存するものである。IFCsvrを用いれば、簡易なコードでIFCを扱えることが理解される。
このコードを実行することにより、IFC形式のファイルが生成される。結果を表2.5に示す。
表2.5 IFCファイルの例
データ 備考
ISO-10303-21;
HEADER;
/* Generated by software containing ST-Developer
* from STEP Tools, Inc. (www.steptools.com)
*/
FILE_DESCRIPTION(
/* description */ (''),
/* implementation_level */ '2;1');
FILE_NAME(
/* name */ 'BS_20130823',
/* time_stamp */ '2014-11-06T09:29:40+09:00',
/* author */ (''),
/* organization */ (''),
/* preprocessor_version */ 'ST-DEVELOPER v10',
/* originating_system */ '',
/* authorisation */ '');
FILE_SCHEMA (('IFC2X3'));
ENDSEC;
DATA;
#10=IFCFLOWSEGMENT($,$,$,$,$,$,$,$);
ENDSEC;
END-ISO-10303-21;

HEADERセクション開始















HEADERセクション終了
DATAセクション開始

DATAセクション終了
IFCを用いて開発する際は、ファイルの内容をエディター等で直接確認する必要があるため、参考としてその内容を示す。
表において、ファイルの表現形式はISO10303s中のPart21で規定されるもので、「;」はデータの区切りを、また、「/*」と「*/」はコメントの開始と終了を表す。なお、改行には意味がない。
全体は「ISO-10303-21;」で始まり「END-ISO-10303-21;」で終わる。この中に「HEADER;」で始まり「ENDSEC;」で終わるHEADERセクションと、「DATA;」で始まり「ENDSEC;」で終わるDATAセクションが含まれる。
HEADERセクションには「FILE_DESCRIPTION」、「FILE_NAME」及び「FILE_SCHEMA」のデータが記述され、DATAセクションには個々のオブジェクトのデータ (エンティティインスタンス) が記述される。両セクションのデータ表現には線形リスト注10)が使用されている。

注10) ( )で囲んだCSV形式において個々の要素に、( )で囲んだCSV形式を入れ子にできるもの。

DATAセクションにはIfcFlowSegmentのデータが記述されている。「=」の左辺は「#」と数字から成る識別子であり、他のオブジェクトからの参照に使用される。右辺は通常はエンティティ名で始まり、続いてアトリビュートが記述される。IfcFlowSegmentは8個のアトリビュートを持つことが分かる。属性中の「$」は未設定であることを示している。この例では、エンティティが一つであるため一つのデータしか含まれないが、エンティティが多数の場合には多数のデータが含まれる。
また、このコードを実行することにより、IfcFlowSegmentのインスタンスが含まれたデータが生成されるが、このデータにはあまり利用価値がない。その理由は、表2.2、2.3に示すようにIfcFlowSegmentは、IfcRootから継承するGlobalId、OwnerHistory、Name、Description、IfcObjectから継承するObjectType、IfcProductから継承するObjectPlacement、Representation及びIfcElementから継承するTagの8個のアトリビュートを持つが、この段階ではこれらのアトリビュートが具体的に設定されていないためである。利用価値のあるデータを生成するには、アトリビュートを設定する必要がある。
アトリビュートには必須のものと任意のものがあり、必須のものは当然として、任意のものでも利用上必要なものは設定する。IfcFlowSegmentの場合、GlobalId とOwnerHistoryは必須であり、他は任意である。任意であるもののうち、ObjectPlacementとRepresentationは位置や形状を表すために必要である。実際、これらが設定されていないデータを、DDS IFC Viewer注11)のようなビューワで表示するとエラーになることを確認した。なお、ObjectPlacementとRepresentationが必須とされていないのは、位置や形状が必ずしも必要とされない、設計や維持管理での利用に配慮されているためである。

注11) Data Design System (現Nemetschek), DDS Viewer for IFC Version 6.34

アトリビュートの値は、単数あるいは複数の数値あるいは文字及び他のインスタンスへの参照である。例えば、IfcFlowSegmentの必須のアトリビュートの内、GlobalId は文字であり、OwnerHistoryはインスタンスへの参照である。
生成したインスタンスにアトリビュートを設定するために作成したコード(要部のみ)を表2.6に示す。
表2.6 アトリビュートを設定するコード例
コード
1
2
3
4
5
6
7
Set obj_entity = obj_design.Add("IfcFlowSegment")
With obj_entity
'↓数値あるいは文字の場合
.Attributes.Item(属性名).Value = 数値または文字
'↓インスタンスへの参照の場合
.Attributes.Item(属性名).Value = objDesign.Add(クラス名)
End With
表において、第4行が数値または文字の場合、第6行がインスタンスへの参照の場合である。

(3) アトリビュートに関連するインスタンスの生成
必要なアトリビュートが他のインスタンスへの参照であれば、そのインスタンスも生成する必要がある。そのインスタンスも必要なアトリビュートを持ち、それが他のインスタンスへの参照であれば、さらに生成を繰り返す。この結果、多くのインスタンスが生成されるであろうことが推測される。
そこで、IfcFlowSegmentのアトリビュートに関連して生成すべきインスタンスの全体像を把握するため、仕様書をもとに、最小限のクラスを抽出したものを表2.7に示す。クラスが抽象クラスの場合、適切な下位クラスを選択している。なお、形状を表現するIfcRepresentationItemの詳細は、(8)で述べる。
表2.7 アトリビュートに関連するクラス
クラス (注: クラス /アトリビュート >参照クラス、*=は抽象クラスなど)
IfcFlowSegment / OwnerHistory > IfcOwnerHistory
IfcFlowSegment / ObjectPlacement > IfcObjectPlacement* = IfcLocalPlacement
IfcFlowSegment / Representation > IfcProductRepresentation* = IfcProductDefinitionShape
IfcOwnerHistory / OwningUser > IfcPersonAndOrganization
IfcOwnerHistory / OwningApplication > IfcApplication
IfcPersonAndOrganization / ThePerson > IfcPerson
IfcPersonAndOrganization / TheOrganization > IfcOrganization
IfcApplication / ApplicationDeveloper > IfcOrganization
IfcLocalPlacement / PlacementRelTo > IfcObjectPlacement
IfcLocalPlacement / RelativePlacement > IfcAxis2Placement* = IfcAxis2Placement3D
IfcAxis2Placement3D / Location > IfcCartesianPoint
IfcAxis2Placement3D / Axis > IfcDirection
IfcAxis2Placement3D / RefDirection > IfcDirection
IfcProductDefinitionShape / Representations > IfcRepresentation* = IfcShapeRepresentation
IfcShapeRepresentation / ContextOfItems > IfcRepresentationContext* = IfcGeometricRepresentationContext
IfcShapeRepresentation / Items > IfcRepresentationItem* = IfcFaceBasedSurfaceModel, IfcSolidModel, etc.,
表において、IfcFlowSegmentの場合、必要なアトリビュートを設定するためには、少なくとも14種類(重複を除く)のクラスのインスタンスを生成する必要があることが分かる。生成すべきインスタンスが多いため、これらを効率的に生成するには、このように事前にインスタンスの全体像を把握することが重要である。

(4) 要素への関連付けに係るインスタンスの生成
IFCでは要素間の関連付けを行うことができる。代表的なものは、案件に敷地、敷地に建物、建物に階、階に各種の部材を関連付けるものである。例えば、部材を階に関連付けると、存在する全ての部材の中から特定の階に存在するものだけを容易に選別することができる等、利便性が高まる。これらの関連付けを図2.3に示す。
図2.3 要素の関連付け(案件、敷地、建物、階及び部材)
図において、関連付けのクラスは関連付ける要素のクラスによって細分化されている。
そこで、階に角ダクト直管を、建物に階を関連付けるため、仕様書をもとに、これらの関連付けに係る最小限のクラスを抽出したもの(既出除く)を表2.8に示す。
表2.8 建築要素への関連付けのクラス
クラス (注: クラス /アトリビュート >参照クラス、*=は抽象クラスなど、+は関連付け)
IfcProject
IfcProject / UnitsInContext > IfcUnitAssignment
IfcUnitAssignment / Units > IfcUnit* = IfcSIUnit
IfcSIUnit / Dimensions > IfcDimensionalExponents
IfcSite
IfcBuilding
IfcBuildingStorey
IfcRelAggregates+
IfcRelContainedInSpatialStructure+
表において、少なくとも9種類のクラスのインスタンスを生成する必要があることが分かる。
関連付けのインスタンスにより要素同士を関連付けるには、関連付けのインスタンスを生成し、そのアトリビュートとして関連付ける要素のインスタンスを設定する。
生成したインスタンスに関連付けを設定するために作成したコード(要部のみ)を表2.9に示す。
表2.9 関連付けを設定するコード例
コード
1
2
3
4
5
6
7
Set obj_entity1 = obj_design.Add("IfcProject")
Set obj_entity2 = obj_design.Add("IfcSite ")
Set obj_entity3 = obj_design.Add("IfcRelAggregates")
With obj_entity3
.Attributes.Item("RelatedObjects").Value = obj_entity1
.Attributes.Item("RelatingObjects").Value = obj_entity2
End With
表において、第3行が関連付けのインスタンスを生成するもの、第5〜6行が関連付けを設定するものである。

(5) タイプに関連するインスタンスの生成
前述のようにIfcFlowSegmentには角ダクト直管だけでなく配管の直管や電気の配線も該当するため、両者を区別する必要がある。
仕様書をもとに、区分に係る最小限のクラスを抽出したもの(既出除く)を表2.10に示す。
表2.10 区分に関連したクラス
クラス (注: +は関連付け)
IfcDuctSegmentType
IfcRelDefinesByType+
表において、少なくとも2種類のクラスのインスタンスを生成する必要があることが分かる。
区分を設定するには、区分のインスタンス及び関連付けのインスタンスを生成して、要素への関連付けを設定する。 区分を設定するために作成したコード(要部のみ)を表2.11に示す。
表2.11 区分を設定するコード例
コード
1
2
3
4
5
6
7
Set obj_entity1 = obj_design.Add("IfcFlowSegment")
Set obj_entity2 = obj_design.Add("IfcDuctSegmentType")
Set obj_entity3 = obj_design.Add("IfcRelDefinesByType ")
With obj_entity3
.Attributes.Item("RelatedObjects").Value = obj_entity1
.Attributes.Item("RelatingType").Value = obj_entity2
End With
表において、第2行が角ダクト直管の区分のインスタンスを生成するものである。

(6) プロパティセットに関連するインスタンスの生成
IFCでは要素にプロパティセット(任意の属性)を持たせることができる。要素とプロパティセットを関連付けのインスタンスによって図2.4のように関連付けるものである。
図2.4 要素の関連付け(部材とプロパティセット)
プロパティセットはBIMにおけるデータ連携において、各種情報の主たる格納場所として利用される。そのため、特定した角ダクト直管の属性はプロパティセットに持たせることが妥当と考えた。
仕様書をもとに、プロパティセットに係る最小限のクラスを抽出したもの(既出除く)を表2.12に示す。
表2.12 プロパティセットに関連したクラス
クラス (注: クラス /アトリビュート >参照クラス、*=は抽象クラスなど、+は関連付け)
IfcPropertySet
IfcPropertySet / HasProperties > IfcProperty* = IfcPropertySingleValue
IfcRelDefinesByProperties+
表において、少なくとも3種類のクラスのインスタンスを生成する必要があることが分かる。
要素にプロパティセットを持たせるには、まず、プロパティのインスタンスを生成して、属性名と属性値をアトリビュートとして設定する。次に、プロパティセットのインスタンスを生成して、個々のプロパティのインスタンスをアトリビュートとして設定する。最後に、関連付けのインスタンスを生成して、関連付ける要素とプロパティセットのインスタンスをアトリビュートとして設定する。
プロパティセットを設定するために作成したコード(要部のみ)を表2.13に示す。
表2.13 プロパティを設定するコード例
コード
1
2
3
4
5
6
7
8
9
Set obj_entity1 = obj_design.Add("IfcPropertySet")
Set obj_entity2 = obj_design.Add("IfcPropertySingleValue")
With obj_entity2
.Attributes.Item("Name").Value = 属性名
.Attributes.Item("NominalValue").Value =属性値
End With
With obj_entity1
.Attributes.Item("HasProperties").Value = obj_entity2
End With
表において、第4〜5行はプロパティに属性値を設定するもの、第8行はプロパティをプロパティセットに設定するものである。

(7) プロパティセットの定義
IFCでは、あらかじめ基本的なプロパティセットが定義されているほか、ユーザーによる任意のプロパティセットも定義できる。
設備に関してあらかじめ定義されたプロパティセットは、BE-BridgeやStemの属性に比べれば、十分ではない。そのため、(社)IAI日本 設備・FM分科会は、2013年にBE-BridgeとStemの属性を包含するプロパティセットを設備IFCデータ利用標準の一部として策定した。なお、設備IFCデータ利用標準の詳細は、第3章で述べる。
しかし、本章の研究は、それ以前になされたため、プロパティセットを定義する必要があった。プロパティセットはユーザーによる定義ができる一方で、汎用性の低下を招くおそれがある。そのため、プロパティセットを定義するにあたり、既存の属性定義を活用することを考えた。既存の定義を利用すると、定義された属性名、単位、データ型等を利用できるだけでなく、それらの意味が明確であるため、ユーザーやソフトベンダー等の関係者間で共通の理解を得ることが容易になり、汎用性が高まる。
そこで筆者らは、2005年にC-CADECにおいてSXF に準拠しBE-Bridge及びStemの属性を包含する空調衛生設備属性セット9)が策定された際に、併せて、これを介してBE-Bridge及びStem の属性をIFCのプロパティセットに変換して利用する方法を提案した10)。当時のこれらの連携の枠組みを図2.5に示す。

9) 空調衛生設備属性セット(案), C-CADEC, 2005.3
10) 三木秀樹, 向来信: 空調衛生分野における属性定義の統合について, (社)空気調和・衛生工学会 2005年度大会 学術講演会 講演論文集, 2005.8

図2.5 既往の属性定義とIFCの連携
図において、BE-Bridge及びStem等が、空調衛生設備属性セットを介して、IFCと連携する流れが理解される。
また、BE-Bridge及びStemは日本語表記であるが、IFCで表現すると、日本語表記に対応していない海外のソフトでの利用もありうるため、筆者らは空調衛生属性セットの策定に際し、日本語表記に対応した英語表記を提案した。これを表2.14(抜粋)に示す。
表2.14 BE-Bridgeの属性表記
日本語表記による属性名 英語表記による属性名 備考
データ種別 data_class ダクト・配管等の分類
系統名 system_name  
パターンNo. 大分類 large_pattern_number 直管・継手等の分類
パターンNo. 小分類 small_pattern_number
ダクト形状寸法データ shape_size 呼び寸法等
用途 use  
風量 air_volume  
表において、中覧の属性名をプロパティの属性名として使用した。
これはまた、国内の標準であるBE-Bridgeを国際標準であるIFCに連携させることができることを示している。日本の特性を反映した既存の標準、または今後策定される標準が、排斥されることなくIFCと連携できる枠組みを作ることは、国内の標準を活用すると共に、IFCの普及を速める利点がある。筆者らの、既存の標準を生かす考え方は、設備IFCデータ利用標準にも受け継がれた。

(8) 形状
作成する角ダクト直管の形状を図2.6に示す。
図2.6 角ダクト直管の形状
図において、角ダクト直管は4枚の平面で構成されることが示されている。データ量を抑制するため、フランジを省略している。なお、角ダクト直管以外の部材のうち曲面を持つ部材も平面に置き換えた。
3次元形状を表現する方法は、ワイヤーフレームモデル(線の集合体)、サーフェスモデル(面の集合体)、ソリッドモデル(立体の集合体)に大別されるが、角ダクト直管は平面で構成されるため、サーフェスモデルによることが妥当と考えた。仕様書をもとに、サーフェスモデルに係るクラスを抽出したもの(既出除く)を表2.15に示す。
表2.15 サーフェスモデルに係るクラス
クラス (注: クラス /アトリビュート >参照クラス、*=は抽象クラスなど)
IfcFaceBasedSurfaceModel
IfcFaceBasedSurfaceModel / FbsmFaces > IfcConnectedFaceSet
IfcConnectedFaceSet / CfsFaces > IfcFace
IfcFace / Bounds > IfcFaceBound
IfcFaceBound / Bound > IfcLoop* = IfcPolyLoop
IfcPolyLoop / Polygon > IfcCartesianPoint
表において、少なくとも6種類のクラスのインスタンスを生成する必要があることが分かる。

2.5 実装結果及び確認

IFCを用いて角ダクト直管を表現する場合、生成すべきインスタンスを下記に示す。
IfcFlowSegment
IfcSpatialStructure及び関連付けインスタンス
IfcDuctSegmentType及び関連付けインスタンス
IfcPropertySet及び関連付けインスタンス
また、それぞれのインスタンスの生成順序を図2.7に示す。インスタンスのアトリビュートが別のインスタンスへの参照となる場合は、繰り返しインスタンスを生成する。
図2.7 計算フロー
表2.7、2.8、2.10、2.12、2.15に示すように関連するクラスの全体像を把握すれば、表2.4、2.6、2.9、2.11、2.13に示すような簡易なコードでインスタンスの生成とアトリビュートの設定を行い、目的のモデルを作成できる。
以上により、IFCを用いて、角ダクト直管を含む各種ダクト部材を作成した。作成した部材の種類を表2.16に、また、形状を図2.8に示す。なお、表示にはDDS IFC Viewerを用いた。
表2.16 作成した各種ダクト部材
区分 部材
角ダクト エルボ(内R外R), 両直管付エルボ(内R外R), 角エルボ(内R外角), 両直管付角エルボ(内R外角), 角エルボ(内角外R), 角エルボ(内角外角), 消音エルボ, 羽子板エルボ, 内直エルボ(内直外R), 両直管付内直エルボ(内直外R), Sカーブ(内R外R),梁巻き(内R外R), 角梁巻き(内角外角), Sカーブ(内角外角), 直管ホッパー, 直管付ホッパー, 実管, 三方分岐, 十字(片直), 十字(片R), 十字(両直), 二方分岐(直曲り), 二方分岐(両曲り), 二方分岐(直立て), 二方分岐(両曲りT管), 二方分岐(T管片直), 二方分岐(T管片R), 二方分岐(T管両直), ダンパー、定風量装置(CAV), 変風量装置(VAV), 羽子板, ボックス, チャンバー, キャンバス継手, タイコ, ヒョットコ(片直), ヒョットコ(片R), ヒョットコ(両R), 角丸ホッパー, 角丸キャンバス 継手, 角丸ヒョットコ, 直管付角丸ホッパー
丸ダクト エルボ, 消音エルボ, S管, 直管, 片落管(レジューサ), 実管, 十字管(クロス), クロスRT管, T管, RT管, ダブルRT管, 45度Y管, 45度RY管, ダンパー, 定風量装置(CAV), 変風量装置(VAV), フレキシブルダクト
表において、ダクト部材の名称はBE-Bridgeにおいて定義されたものである。部材数は、角ダクト部材が42種類、丸ダクト部材が17種類であり、BE-Bridgeにおいて定義された部材をほぼ網羅している。
図2.8 IFCによるIfcFlowSegmentを含むダクト部材の形状表現
図において、モデルに必要とした角ダクト直管の形状が想定通り作成されていることを確認できる。
同じく、作成した角ダクト直管のIFCデータの属性を表示したものを図2.9に示す。なお、表示には同じくDDS IFC Viewerを用いた。
図2.9 IFCによるIfcFlowSegmentの属性表現
図において、モデルに必要とした角ダクト直管の属性が想定通り作成されていることを確認できる。
建築設備要素がIFCで表現されることにより、同じくIFCで表現された建築要素との統合が可能になり、例えば、部材の干渉確認や点検空間の確認等に利用できる。干渉確認により干渉箇所を減らすことができれば、施工における手戻りが減り、工期の短縮、費用の低減に寄与する。また、点検空間の確認により、点検空間を適切に確保できれば、点検作業を行い易くなり、建物の使い勝手、即ち品質の向上に寄与する。

2.6 考察

(1) 情報の取得
このように生成したIFCファイルからは情報を取得できる。例えば、上記で生成したIFCファイルから特定の階にあるIfcFlowSegmentのインスタンスを選別し、そのプロパティセットのプロパティを取得することが考えられる。
特定の階にあるIfcFlowSegmentのインスタンスを選別するために作成したコード(要部のみ)を表2.17に示す。
表2.17 階からIfcFlowSegmentを選別するコード例
コード
1
2
3
4
5
6
7
8
9
10
11
12
13
str_name_b="3F" '適当な階数
Set obj_entities_r = objDesign.FindObjects("IfcRelContainedInSpatialStructure")
For Each obj_entity_r In obj_entities_r
Set obj_entity_b =obj_entity_r.Attributes.Item("RelatingStructure") '関連先
If obj_entity_b.type ="IfcBuildingStorey" And obj_entity_b.Item("Name") = str_name_b Then
Set obj_entities_f = obj_entity_r.Attributes.Item("RelatedObjects")''関連元
For Each obj_entity_f In obj_entities_f
If obj_entity_f.type ="IfcFlowSegment" Then
 'obj_entity_fは階に関連するIfcFlowSegment
End If
Next obj_entity_o
End If
Next obj_entity_r
表において、第2行は関連付けのインスタンスを取得するもの、第3〜5行は特定の階にあるインスタンスを取得するもの、第6〜8行はその中からIfcFlowSegmentを選別するものである。
同様に、インスタンスのプロパティセットを取得するために作成したコード(要部のみ)を表2.18に示す。
表2.18 プロパティセットを取得するコード例
コード
1
2
3
4
5
6
7
8
9
Set obj_entities_ps = obj_entity_f.GetUsedIn("IfcRelDefinesByProperties","RelatedObject")
For Each obj_entity_ps In obj_entities_ps
Set obj_entities_p = obj_entity_ps .Attributes.Item("HasProperties")
For Each obj_entity_p In obj_entities_p
If Attributes.Item("Name").Value = 属性名 then
属性値=.Attributes.Item("NominalValue").Value
End If
Next obj_entity_p
Next obj_entity_ps
表において、第1行はプロパティセットを持つ要素を選別するもの、第2〜3行はプロパティのインスタンスを取得するもの、第4〜6行は特定の属性名の属性値を取得するものである。

(2) インスタンスの全体像の把握
インスタンスがアトリビュートを持ち、それが他のインスタンスへの参照であることが繰り返される場合は、多数のインスタンスが生成されることになる。その全体像を把握する際、仕様書をもとに順次追跡することは極めて煩雑である。そのため、このような作業を簡略化するソフトを開発した。入力画面を図2.10に示す。
図2.10 クラス一覧作成ソフト
図において、計算条件として参照するIFCの定義ファイル(2x3または4を選択可能)、全体像を把握するインスタンス等を入力する。
計算フローを図2.11に示す。
図2.11 インスタンスを生成するフロー
図において、インスタンスのアトリビュートがインスタンスであれば検索し、数値や文字であればダミーの値を設定する。
生成されたIFCファイル(DATAセクションのみ)を表2.19に示す。
表2.19 IFCファイルの例
データ 備考
#10=IFCCARTESIANPOINT(());
#11=IFCCARTESIANPOINT(());
#12=IFCCARTESIANPOINT(());
#13=IFCCARTESIANPOINT(());
#14=IFCCARTESIANPOINT(());
#15=IFCDIRECTION(());
#16=IFCDIRECTION(());
#17=IFCAXIS2PLACEMENT2D(#12,#16);
#18=IFCRATIONALBEZIERCURVE(0,(#10),.POLYLINE_FORM.,.F.,.F.,());
#19=IFCRATIONALBEZIERCURVE(0,(#11),.POLYLINE_FORM.,.F.,.F.,());
#20=IFCRATIONALBEZIERCURVE(0,(#13),.POLYLINE_FORM.,.F.,.F.,());
#21=IFCRATIONALBEZIERCURVE(0,(#14),.POLYLINE_FORM.,.F.,.F.,());
#22=IFCPOSTALADDRESS(.OFFICE.,'ABC','ABC','ABC',('ABC'),'ABC','ABC',ABC','ABC','ABC');
#23=IFCPOSTALADDRESS(.OFFICE.,'ABC','ABC','ABC',('ABC'),'ABC','ABC',ABC','ABC','ABC');
#24=IFCPOSTALADDRESS(.OFFICE.,'ABC','ABC','ABC',('ABC'),'ABC','ABC',ABC','ABC','ABC');
#25=IFCPOSTALADDRESS(.OFFICE.,'ABC','ABC','ABC',('ABC'),'ABC','ABC',ABC','ABC','ABC');
#26=IFCPOSTALADDRESS(.OFFICE.,'ABC','ABC','ABC',('ABC'),'ABC','ABC',ABC','ABC','ABC');
#27=IFCPOSTALADDRESS(.OFFICE.,'ABC','ABC','ABC',('ABC'),'ABC','ABC',ABC','ABC','ABC');
#28=IFCANNOTATIONFILLAREA(#20,(#21));
#29=IFCGEOMETRICREPRESENTATIONSUBCONTEXT('ABC','ABC',*,*,*,*,#30,$,.GRAPH_VIEW.,ABC');
#30=IFCGEOMETRICREPRESENTATIONSUBCONTEXT($,$,*,*,*,*,$,$,.GRAPH_VIEW.,$);
#31=IFCGRIDAXIS('ABC',#18,.F.);
#32=IFCGRIDAXIS('ABC',#19,.F.);
#33=IFCACTORROLE(.SUPPLIER.,'ABC','ABC');
#34=IFCACTORROLE(.SUPPLIER.,'ABC','ABC');
#35=IFCACTORROLE(.SUPPLIER.,'ABC','ABC');
#36=IFCACTORROLE(.SUPPLIER.,'ABC','ABC');
#37=IFCACTORROLE(.SUPPLIER.,'ABC','ABC');
#38=IFCACTORROLE(.SUPPLIER.,'ABC','ABC');
#39=IFCACTORROLE(.SUPPLIER.,'ABC','ABC');
#40=IFCACTORROLE(.SUPPLIER.,'ABC','ABC');
#41=IFCORGANIZATION('ABC','ABC','ABC',(#36),(#23));
#42=IFCORGANIZATION('ABC','ABC','ABC',(#37),(#24));
#43=IFCORGANIZATION('ABC','ABC','ABC',(#39),(#26));
#44=IFCORGANIZATION('ABC','ABC','ABC',(#40),(#27));
#45=IFCPERSON('ABC','ABC','ABC',('ABC'),('ABC'),('ABC'),(#35),(#22));
#46=IFCPERSON('ABC','ABC','ABC',('ABC'),('ABC'),('ABC'),(#38),(#25));
#47=IFCMATERIAL('ABC');
#48=IFCSHAPEREPRESENTATION(#29,'ABC','ABC',(#28));
#49=IFCVIRTUALGRIDINTERSECTION((#31),());
#50=IFCVIRTUALGRIDINTERSECTION((#32),());
#51=IFCAPPLICATION(#42,'ABC','ABC','ABC');
#52=IFCAPPLICATION(#44,'ABC','ABC','ABC');
#53=IFCPERSONANDORGANIZATION(#45,#41,(#33));
#54=IFCPERSONANDORGANIZATION(#46,#43,(#34));
#55=IFCMATERIALDEFINITIONREPRESENTATION('ABC','ABC',(#48),#47);
#56=IFCGRIDPLACEMENT(#49,#50);
#57=IFCOWNERHISTORY(#53,#51,.READWRITE.,.NOCHANGE.,$,#54,#52,0);
#58=IFCFLOWSEGMENT('30tWuM_bf23Bzk_x9wAjXN',#57,'ABC','ABC','ABC',#56,#55,ABC');





方向


曲線



住所






幾何表現

通り芯

役割







組織



個人







個人及び組織



所有者履歴

表において、関連するインスタンス及びアトリビュートの、種類及び量が理解される。これにより、インスタンスの全体像を容易に把握することができる。

2.7 まとめ

本章では、BIMを実現するため、IFCを用いて建築設備要素をモデルとして表現する手法の明確化について述べた。
具体的には、
対象とする建築設備要素を角ダクト直管、用途を干渉確認とし、必要な形状及び属性を特定する手順を示した。
要素をIFCで表現するために、IFCの構造を調査すると共に、IFCデータを生成するための、IFCsvrを使用したコードを示した。
属性を表現するために、プロパティセットを定義する考え方を示した。
実際にIFCデータを生成し、モデルの形状と属性をビューワソフトで確認した。
また、併せて、生成したIFCデータから情報を取得する手法、及びIFCデータを生成する際に、その全体像を把握する手法も示した。
本章で示した成果の一つであるプロパティセットを定義する考え方は、後に設備IFCデータ利用標準へ引き継がれた。現在、設備IFCデータ利用標準は、複数の設備CADにより実装されている。
建築要素と設備要素が一体的に機能するようなプロジェクトにおいては、建築要素と設備要素の両方を扱うことができ、また、仕様が公開されているため多くの関係者が利用しやすいIFCが用いられることが増えると考えられるため、本章で提示した設備要素の記述手法が参考になるものと考えられる。また、本章では角ダクト直管を例としたが、それ以外のダクト部材や配管部材、機器部材、さらには建築部材についても、角ダクト直管に対して検討した手順・方法が応用できる。これにより、BIMがIFCで構築される場合において、データ連携の開発がスムースになされることが期待される。
なお、設備システムは建物の用途や規模で多様性を有するため、今後は、複数の典型的なシステムについて今回と同様な検討を行って、汎用化を進めていくことが必要であると考える。