#10=IFCSPACE($,$,$,$,(),$,(),$,(),.INTERNAL.,$,$,0.,0.,0.,0.,0.,0.,0.);
ENTITY IfcSpace
SUPERTYPE OF (ONEOF(
IfcFireCompartment
,IfcWorkstation ))
SUBTYPE OF (IfcSpatialElement);
BoundedBy : LIST [1:?] OF IfcSpaceBoundary;
InteriorOrExteriorSpace : IfcInternalOrExternalEnum;
SpaceReference : OPTIONAL STRING;
SpaceName : OPTIONAL STRING;
calcTotalPerimeter : OPTIONAL IfcPositiveLengthMeasure;
calcTotalArea : OPTIONAL IfcAreaMeasure;
calcTotalVolume : OPTIONAL IfcVolumeMeasure;
calcAverageHeight : OPTIONAL IfcPositiveLengthMeasure;
calcAverageGrossHeight : OPTIONAL IfcPositiveLengthMeasure;
calcAverageClearHeight : OPTIONAL IfcPositiveLengthMeasure;
calcElevationWithFlooring : OPTIONAL IfcLengthMeasure;
INVERSE
(略)
WHERE
(略)
END_ENTITY;
ENTITY IfcSpatialElement
ABSTRACT SUPERTYPE OF (ONEOF(
IfcSpace
,IfcSpaceBoundary))
SUBTYPE OF (IfcProduct);
END_ENTITY;
ENTITY IfcProduct
ABSTRACT SUPERTYPE OF (ONEOF(
IfcBuilding
,IfcBuildingStorey
,IfcConstructionZoneAggregationProduct
,IfcElement
,IfcSite
,IfcSpatialElement ))
SUBTYPE OF (IfcObject);
LocalPlacement : IfcLocalPlacement;
Representations : SET [0:2] OF IfcProductRepresentation;
Classification : OPTIONAL IfcClassificationList;
END_ENTITY;
ENTITY IfcObject
ABSTRACT SUPERTYPE OF (ONEOF(
IfcActor
,IfcControl
,IfcGroup
,IfcProcess
,IfcProduct
,IfcProject
,IfcProxy
,IfcResource))
SUBTYPE OF (IfcRoot);
UserDefinedType : OPTIONAL STRING;
DocumentReferences : SET [0:?] OF IfcDocumentReference;
INVERSE
(略)
END_ENTITY;
ENTITY IfcRoot
ABSTRACT SUPERTYPE OF (ONEOF(
IfcModelingAid
,IfcObject
,IfcPropertyDefinition
,IfcRelationship));
GlobalId : IfcGloballyUniqueId;
OwnerHistory : IfcOwnerHistory;
Label : OPTIONAL STRING;
UNIQUE
(略)
END_ENTITY;
ENTITY IfcSpaceBoundary
SUBTYPE OF (IfcSpatialElement);
PhysicalOrVirtualBoundary : IfcPhysicalOrVirtualEnum;
InternalOrExternalBoundary : IfcInternalOrExternalEnum;
calcBoundarySurfaceArea : OPTIONAL IfcAreaMeasure;
INVERSE
(略)
WHERE
(略)
END_ENTITY;
TYPE IfcPhysicalOrVirtualEnum = ENUMERATION OF (
Physical
,Virtual
,NotDefined);
END_TYPE;
TYPE IfcInternalOrExternalEnum = ENUMERATION OF (
Internal
,External
,NotDefined);
END_TYPE;
TYPE IfcAreaMeasure = REAL;
END_TYPE;
| 属性名 | 形式 |
| GlobalId(グローバルID) | 文字列[20字固定長] |
| OwnerHistory(所有者履歴) | 略 |
| Label(ラベル) | 文字列 |
| UserDefinedType(ユーザー定義型) | 文字列 |
| DocumentReferences(文書参照) | 略 |
| LocalPlacement(位置) | 略 |
| Representations(表示) | 略 |
| Classification(分類) | 略 |
| BoundedBy(境界) | 物理的仮想的の区別:「Physical」「Virtual」「NotDefined」のいずれか、屋内屋外の区別:「Internal」「External」「NotDefined」のいずれか、境界表面積:実数、の集まりが1つ以上 |
| InteriorOrExteriorSpace(屋内屋外の区別) | 「internal」「external」または「NotDefined」 |
| SpaceReference(部屋番号) | 文字列 |
| SpaceName(部屋名) | 文字列 |
| calcTotalPerimeter(周囲長さ) | 実数 |
| calcTotalArea(部屋面積) | 実数 |
| calcTotalVolume(部屋容積) | 実数 |
| calcAverageHeight(スラブ下高さ) | 実数 |
| calcAverageGrossHeight(階高) | 実数 |
| calcAverageClearHeight (天井高さ:床仕上面〜天井面) | 実数 |
| calcElevationWithFlooring(床仕上高さ) | 実数 |
'/// IfcSpaceで定義される全てのアトリビュートを取得する ///
'[9]に入れる
Dim objAttribute
Dim txt_sum
txt_sum = ""
Set objAttribute = objAttributes.Item("BoundedBy")
If IsObject(objAttribute) = TRUE Then
Dim objEntity_new,objAttributes_new,objAttribute_new
Dim imax,imin,i
imax = objAttribute.Size
imin = 1
For i = imin To imax
Set objEntity_new = objAttribute.GetItem(i) 'i番目のIfcSpaceBoundary
If IsObject(objEntity_new) = TRUE Then
Set objAttributes_new = objEntity_new.Attributes
If IsObject(objAttributes_new) = TRUE Then
Set objAttribute_new = objAttributes_new.Item("PhysicalOrVirtualBoundary")
If IsObject(objAttribute_new) = TRUE Then
txt_sum = txt_sum & "/境界(" & CStr(i) & ")の"
txt_sum = txt_sum & "物理的仮想的の区別:" & objAttribute_new.Value
Set objAttribute_new = Nothing
End If
Set objAttribute_new = objAttributes_new.Item("InternalOrExternalBoundary")
If IsObject(objAttribute_new) = TRUE Then
txt_sum = txt_sum & "/境界(" & CStr(i) & ")の"
txt_sum = txt_sum & "屋内屋外の区別:" & objAttribute_new.Value
Set objAttribute_new = Nothing
End If
Set objAttribute_new = objAttributes_new.Item("calcBoundarySurfaceArea")
If IsObject(objAttribute_new) = TRUE Then
txt_sum = txt_sum & "/境界(" & CStr(i) & ")の"
txt_sum = txt_sum & "境界表面積:" & CStr(objAttribute_new.Value)
Set objAttribute_new = Nothing
End If
Set objAttributes_new = Nothing
End If
Set objEntity_new = Nothing
End If
Next
Set objAttribute = Nothing
End If
Set objAttribute = objAttributes.Item("InteriorOrExteriorSpace")
If IsObject(objAttribute) = TRUE Then
txt_sum = txt_sum & "/屋内屋外の区別:" & objAttribute.Value
Set objAttribute = Nothing
End If
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("calcTotalPerimeter")
If IsObject(objAttribute) = TRUE Then
txt_sum = txt_sum & "/周囲長さ:" & CStr(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
Set objAttribute = objAttributes.Item("calcAverageHeight")
If IsObject(objAttribute) = TRUE Then
txt_sum = txt_sum & "/スラブ下高さ:" & CStr(objAttribute.Value)
Set objAttribute = Nothing
End If
Set objAttribute = objAttributes.Item("calcAverageGrossHeight")
If IsObject(objAttribute) = TRUE Then
txt_sum = txt_sum & "/階高:" & CStr(objAttribute.Value)
Set objAttribute = Nothing
End If
Set objAttribute = objAttributes.Item("calcAverageClearHeight")
If IsObject(objAttribute) = TRUE Then
txt_sum = txt_sum & "/天井高さ:" & CStr(objAttribute.Value)
Set objAttribute = Nothing
End If
Set objAttribute = objAttributes.Item("calcElevationWithFlooring")
If IsObject(objAttribute) = TRUE Then
txt_sum = txt_sum & "/床仕上高さ:" & CStr(objAttribute.Value)
Set objAttribute = Nothing
End If
MsgBox txt_sum
DATA; #10=IFCSPACE($,$,$,$,(),$,(),$,(#11,#12,#13,#14),.INTERNAL.,'R1', 'Office Room',50.,100.,250.,3.3,3.5,2.5,0.05); #11=IFCSPACEBOUNDARY($,$,$,$,(),$,(),$,.PHYSICAL.,.EXTERNAL.,20.); #12=IFCSPACEBOUNDARY($,$,$,$,(),$,(),$,.PHYSICAL.,.EXTERNAL.,5.); #13=IFCSPACEBOUNDARY($,$,$,$,(),$,(),$,.PHYSICAL.,.INTERNAL.,20.); #14=IFCSPACEBOUNDARY($,$,$,$,(),$,(),$,.PHYSICAL.,.INTERNAL.,5.); ENDSEC;