IFCファイルを作る/(2)IFCファイルに情報を追加する
2001年3月15日作成、2024年1月1日変更
三木(作成時、IAI設備FM分科会に所属)
(注)利用したIFCのバージョンは2.0。以降のバージョンでは差異がある。
◆IFCファイルにデータを追加する
IFCファイルの主要部分は「DATA」セクションである。
ここに個々の部材、例えば部屋、壁、柱、配管等々が定義される。
部材のデータを追加するには「Add」メソッドを使ってエンティティ(実体)オブジェクトを生成し、上書き保存する。
例えば「IfcSpace」(部屋)を追加してみる。
'/// 部屋のエンティティを追加 ///
'[2]または[3]に入れる
Dim objEntity
Set objEntity = objDesign.Add("IfcSpace")
If IsObject(objEntity) = TRUE Then
' 処理[4]
objDesign.save()
Set objEntity = Nothing
End If
これにより、DATAセクションに、以下のデータが追加される。
DATA;
#10=IFCSPACE($,$,$,$,(),$,(),$,(),.INTERNAL.,$,$,0.,0.,0.,0.,0.,0.,0.);
ENDSEC;
さらに、これに部屋名を設定してみる。追加したエンティティオブジェクトのアトリビュート(属性)オブジェクトを取得し、「SpaceName」に部屋名として例えば「"Office Room"」を設定する。
'/// 部屋のアトリビュートの集合を取得 ///
'[4]に入れる
Dim objAttributes
Set objAttributes = objEntity.Attributes
If IsObject(objAttributes) = TRUE Then
' 処理[5]
Set objAttributes = Nothing
End If
'/// 部屋名のアトリビュートを取得 ///
'[5]に入れる
Dim objAttribute
Set objAttribute = objAttributes.Item("SpaceName")
If IsObject(objAttribute) = TRUE Then
' 処理[6]
Set objAttribute = Nothing
End If
'/// 部屋名を設定 ///
'[6]に入れる
objAttribute.Value = "Office Room"
これにより、DATAセクションは、以下のようになる。
DATA;
#10=IFCSPACE($,$,$,$,(),$,(),$,(),.INTERNAL.,$,'Office Room',0.,0.,0.,0.,0.,0.,0.);
ENDSEC;
同様に、例えば部屋番号(ID)は「SpaceReference」で、部屋面積は「calcTotalArea」で、部屋容積は「calcTotalVolume」で設定できる。番号を「"R1"」、面積を「100.0」、容積を「250.0」に設定すると、DATAセクションは、以下のようになる。
DATA;
#10=IFCSPACE($,$,$,$,(),$,(),$,(),.INTERNAL.,'R1','Office Room',0.,100.,250.,0.,0.,0.,0.);
ENDSEC;