流域解析は、サーフェスの水の流れを予測します。解析データは、Surface.Analysis.GetWatershedData() が返す SurfaceAnalysisWatershedDataCollection 型のオブジェクトを使用して管理します。
.NET API には COM API の AeccSurfaceAnalysisWatershed.CalculateWatersheds() メソッドに匹敵するものはありませんが、SurfaceAnalysis.GetWatershedData() メソッドを使用して既存の解析から流域データにアクセスし、流域リージョンのプロパティ(AreaColor など)を変更することができます。
SurfaceAnalysisWatershedDataCollection の各項目は、流域リージョンを表します。流水方向ターゲットの性質に応じて、各流域リージョンは WatershedType 列挙型によって指定された別のタイプになります。(流域リージョンのタイプの詳細は、 『Autodesk Civil 3D ユーザ ガイド』の「流域のタイプ」を参照してください)。その他のプロパティ(リージョンの色、ハッチング パターン、説明、表示/非表示など)は、すべてアクセス可能です。
この例では、既存の流域解析のプロパティの読み取りを示します。
[CommandMethod("SurfaceWatershedAnalysis")]
public void SurfaceWatershedAnalysis()
{
using (Transaction ts = Application.DocumentManager.MdiActiveDocument.Database.TransactionManager.StartTransaction())
{
// Select first TIN Surface
ObjectId surfaceId = doc.GetSurfaceIds()[0];
CivSurface oSurface = surfaceId.GetObject(OpenMode.ForRead) as CivSurface;
SurfaceAnalysisWatershedDataCollection analysisData = oSurface.Analysis.GetWatershedData();
editor.WriteMessage("Number of watershed regions: {0}\n", analysisData.Count);
foreach (SurfaceAnalysisWatershedData watershedData in analysisData)
{
editor.WriteMessage("Data item AreaId: {0} \n"
+ "Description: {1}\n"
+ "Type: {2}\n"
+ "Drains into areas: {3}\n"
+ "Visible? {4}\n",
watershedData.AreaID, watershedData.Description, watershedData.Type,
String.Join(", ", watershedData.DrainsInto), watershedData.Visible);
}
// commit the transaction
ts.Commit();
}
}