流域解析にアクセスする

流域解析は、サーフェスの水の流れを予測します。解析データは、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();
    }           
}