IFCファイルを作る/(3)IFCファイルから情報を取得する

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


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

◆複数の部屋の複数のアトリビュートを取得する

今、部屋を2つ追加し、それぞれアトリビュートを適当に設定する。

DATA;
#10=IFCSPACE($,$,$,$,(),$,(),$,(),.INTERNAL.,'R1','Office Room',0.,100.,250.,0.,0.,0.,0.);
#11=IFCSPACE($,$,$,$,(),$,(),$,(),.INTERNAL.,'R2','Meeting Room',0.,20.,50.,0.,0.,0.,0.);
ENDSEC;

これらのアトリビュートを取得してみる。 一般に、特定のエンティティの特定のアトリビュートを取得するには、エンティティの集合を取得→エンティティを取得→アトリビュートの集合を取得→アトリビュートを取得、という手順による。もし、アトリビュートが他のエンティティを指す場合はこの手順を繰り返す。

'/// エンティティの集合を取得 ///
'[3]に入れる
Dim objEntities
Set objEntities = objDesign.FindObjects("IfcSpace")
If IsObject(objEntities) = TRUE Then
' 処理[7]
  Set objEntites = Nothing
End If

'/// エンティティを取得 ///
'[7]に入れる
Dim objEntity
For Each objEntity In objEntities
  If IsObject(objEntity) = TRUE Then
'   処理[8]
    Set objEntity = Nothing
  End If
Next
'または
Dim imax,imin,i
imax = objEntities.Count
imin = 1
For i = imin To imax
  Set objEntity = objEntities.Item(i)
  If IsObject(objEntity) = TRUE Then
'   処理[8]
    Set objEntity = Nothing
  End If
Next

'/// アトリビュートの集合を取得 ///
'[8]に入れる
Dim objAttributes
Set objAttributes = objEntity.Attributes
If IsObject(objAttributes) = TRUE Then
' 処理[9]
  Set objAttributes = Nothing
End If

'/// アトリビュートを取得 ///
'[9]に入れる
Dim objAttribute
Dim txt_sum
txt_sum = ""
Set objAttribute = objAttributes.Item("SpaceReference")
If IsObject(objAttribute) = TRUE Then
' 処理
  txt_sum = txt_sum & "/部屋番号:" & objAttribute.Value
  Set objAttribute = Nothing
End If

Set objAttribute = objAttributes.Item("SpaceName")
If IsObject(objAttribute) = TRUE Then
' 処理
  txt_sum = txt_sum & "/部屋名:" & objAttribute.Value
  Set objAttribute = Nothing
End If

Set objAttribute = objAttributes.Item("calcTotalArea")
If IsObject(objAttribute) = TRUE Then
' 処理
  txt_sum = txt_sum & "/部屋面積:" & CStr(objAttribute.Value)
  Set objAttribute = Nothing
End If

Set objAttribute = objAttributes.Item("calcTotalVolume")
If IsObject(objAttribute) = TRUE Then
' 処理
  txt_sum = txt_sum & "/部屋容積:" & CStr(objAttribute.Value)
  Set objAttribute = Nothing
End If
MsgBox txt_sum

実行結果は以下のようになる。

1番目の部屋のアトリビュート

2番目の部屋のアトリビュート

同様の手順で、特定のエンティティの特定のアトリビュートを変更することもできる。


目次 / /