Autodesk.Revit.DB.Analysis 名前空間には、プロジェクトの詳細なエネルギー解析モデルのコンテンツを取得、解析するためのいくつかのクラスがあります。
gbXML への書き出しや冷暖房負荷といった機能は、建物の構造モデルから熱解析モデルを作成します。熱解析モデルは、建物の実際の容積要素を表すスペース、ゾーン、平面サーフェスで構成されます。
次のような詳細なエネルギー解析モデルに関連するクラスがあります。
エネルギー解析モデルを作成して設定するには、静的メソッド EnergyAnalysisDetailModel.Create()を使用します。EnergyAnaysisDetailModel は Revit モデルに要素として保存されますので、EnergyAnalysisDetailModel.Create()メソッドには開いたトランザクションが必要になります。生成されたモデルは常時ワールド座標に返されますが、メソッド TransformModel()は地面、共有座標、真北に対応するモデルのすべてのサーフェスを変換します。
エネルギー解析モデルを既に作成してある場合、静的メソッド EnergyAnalysisDetailModel.GetMainEnergyAnalysisDetailModel() は、指定したドキュメントに含まれるメインの the main EnergyAnalysisDetailModel を返します(モデルが作成されていない場合は null)。エネルギー解析の詳細モデルは関連するビューに表示できます。
EnergyAnalysisDetailModelOptions クラスを使用して該当するオプションを設定します。
エネルギー解析の詳細モデルを作成する際には次のオプションがあります。
EnergyAnalysisDetailModelOptions.EnergyModelType プロパティは SpatialElement (エネルギー モデルが部屋かスペースに基づく場合) か BuildingElement (エネルギー モデルが建物要素の容積の解析に基づく場合)に設定できます。ただし、生成されるエネルギー モデルは、EnergyDataSettings.AnalysisType プロパティを含む EnergyDataSettings の設定の影響を受けることに注意してください。このプロパティが AnalysisMode.ConceptualMassesAndBuildingElements 似設定されている場合、EnergyAnalysisDetailModel はコンセプト マスと建物要素の組み合わせを使用します。
次の例では、建物モデルから新しいエネルギー解析の詳細モデルを作成し、モデルの各スペースの各サーフェスに元の要素を表示します。
|
コード領域: エネルギー解析詳細モデル |
// Collect space and surface data from the building's analytical thermal model
EnergyAnalysisDetailModelOptions options = new EnergyAnalysisDetailModelOptions();
options.Tier = EnergyAnalysisDetailModelTier.Final; // include constructions, schedules, and non-graphical data in the computation of the energy analysis model
options.EnergyModelType = EnergyModelType.SpatialElement; // Energy model based on rooms or spaces
EnergyAnalysisDetailModel eadm = EnergyAnalysisDetailModel.Create(doc, options); // Create a new energy analysis detailed model from the physical model
IList<EnergyAnalysisSpace> spaces = eadm.GetAnalyticalSpaces();
StringBuilder builder = new StringBuilder();
builder.AppendLine("Spaces: " + spaces.Count);
foreach (EnergyAnalysisSpace space in spaces)
{
SpatialElement spatialElement = doc.GetElement(space.CADObjectUniqueId) as SpatialElement;
ElementId spatialElementId = spatialElement == null ? ElementId.InvalidElementId : spatialElement.Id;
builder.AppendLine(" >>> " + space.SpaceName + " related to " + spatialElementId);
IList<EnergyAnalysisSurface> surfaces = space.GetAnalyticalSurfaces();
builder.AppendLine(" has " + surfaces.Count + " surfaces.");
foreach (EnergyAnalysisSurface surface in surfaces)
{
builder.AppendLine(" +++ Surface from " + surface.OriginatingElementDescription);
}
}
TaskDialog.Show("EAM", builder.ToString());
|
EnergyAnalysisDetailModel を作成した後は、GetAnalyticalOpenings()、GetAnalyticalSpaces()、GetAnalyticalShadingSurfaces()、GetAnalyticalSurfaces()メソッドを使用して、それに関連付けられているスペース、開口部、サーフェスを取得することができます。
アプリケーションがデータへのアクセスを終えたら、作成される EnergyAnalysisDetailModel 要素に対して Document.Delete() を呼び出すことをお勧めしますが、メインのエネルギー モデルの後に作成したエネルギー モデルはドキュメントの保存や同期の前に自動的に削除されます。
EnergyAnalysisSpace からは、壁の中央の平面や屋根/床の上部平面によって結合される閉じられた容積を設定する EnergyAnalysisSurfaces のコレクションを取得できます。また、GetClosedShell()は、内部の境界サーフェスによって計測される閉じられた容積を設定する PolyLoop (平面ポリゴン)のコレクションを取得します。2 次元の場合は GetBoundary()を使用します。このメソッドは、内部の境界サーフェスによって計測される閉じられた容積を設定する空間の 2D 境界を表す PolyLoop のコレクションを返します。
EnergyAnalysisSpace クラスには、AnalyticalVolume、SpaceName、Area など、解析スペースに関する情報にアクセスするためのプロパティが多数あります。
Energyanalysisspace では、サーフェスに関連付けられているメイン解析スペースや、隣接するサブ解析スペースを取得できます。GetAnalyticalOpenings()メソッドは、サーフェスのすべての解析用の開口部のコレクションを取得します。GetPolyloop()メソッドは、gbXML の記述に従って、サーフェス ジオメトリを表す平面ポリゴンを取得します。
EnergyAnalysisSurface クラスには、Height、Width、Corner (外側から見た解析用の矩形ジオメトリの左下の座標)などの解析サーフェスに関する詳細情報や、元の要素の説明を提供するためのプロパティが多数あります。
サーフェス タイプは EnergyAnalysisSurfaceType または gbXMLSurfaceType のいずれかとして使用できます。gbXML サーフェス タイプ属性は、ソースの属性と隣接するスペース数によって決まります。次のタイプを使用できます。
|
タイプ |
ソース要素と隣接するスペース数 |
|
Shade |
関連するソース要素と隣接するスペースなし |
|
Air |
関連付けられているソース要素はなく、隣接するスペースが 1 つ以上 |
|
ExteriorWall |
ソース要素が Wall または Curtain Wall で、隣接するスペースが 1 つ |
|
InteriorWall |
ソース要素が Wall か Curtain Wall。隣接するスペースが 2 つか、Function タイプ パラメータが「Interior」か「CoreShaft」に設定されている |
|
UndergroundWall |
ソース要素が Wall か Curtain Wall で、隣接するスペースが 1 つ、地盤面より下の場合 |
|
SlabOnGrade |
ソース要素が Floor で、隣接するスペースが 1 つ |
|
RaisedFloor |
ソース要素が Floor で、隣接するスペースが 1 つ、地盤面より上 |
|
UndergroundSlab |
ソース要素が Floor で、隣接するスペースが 1 つ、地盤面より下 |
|
InteriorFloor |
ソース要素が Floor。隣接するスペースが 2 つか、Function タイプ パラメータが「Interior」に設定されている |
|
Roof |
ソース要素が Roof または Ceiling で、隣接するスペースが 1 つ |
|
UndergroundCeiling |
ソース要素が Roof または Ceiling で、隣接するスペースが 1 つ、地盤面より下 |
|
Ceiling |
ソース要素が Roof または Ceiling で、隣接するスペースが 2 つ |
EnergyAnalysisOpening では、関連付けられている親解析サーフェス要素を取得できます。GetPolyloop()メソッドは開口部ジオメトリを平面ポリゴンとして返します。
Height、Width、Corner、OpeningName などの解析の開口部に関する情報の取得には、多数のプロパティを使用できます。解析サーフェスと同じように、解析の開口部は単純な EnergyAnalysisOpeningType 列挙や gbXMLOpeningType 属性として取得することができます。次の表にあるように、開口部のタイプは開口部のファミリ カテゴリとそのタイプが含まれる要素によって決まります。
|
タイプ |
ファミリ カテゴリまたは含む要素 |
|
OperableWindow |
窓 |
|
NonSlidingDoor |
ドア |
|
FixedSkylight |
屋根に含まれる開口部 |
|
FixedWindow |
カーテンウォール パネルに含まれる開口部 |
|
Air |
開口部カテゴリの開口部 |