流域解析は、サーフェスの水の流れを予測します。解析データは、Surface.Analysis.GetWatershedData() が返す SurfaceAnalysisWatershedDataCollection 型のオブジェクトを使用して管理します。
.NET API には COM API の AeccSurfaceAnalysisWatershed.CalculateWatersheds() メソッドに匹敵するものはありませんが、SurfaceAnalysis.GetWatershedData() メソッドを使用して既存の解析から流域データにアクセスし、流域リージョンのプロパティ(AreaColor など)を変更することができます。
SurfaceAnalysisWatershedDataCollection の各項目は、流域リージョンを表します。流水方向ターゲットの性質に応じて、各流域リージョンは WatershedType 列挙型によって指定された別のタイプになります。(流域リージョンのタイプの詳細は、 『AutoCAD 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(); } }