ポイント コレクションを使用する

ドキュメント内のすべてのポイントは、CivilDocument.CogoPoints プロパティを使用してアクセスできる CogoPointCollection オブジェクトに保持されています。コレクションに共通のプロパティおよびメソッドに加えて、このコレクションには、大量のポイントを一度に操作するためのメソッドがあります。たとえば、ポイントをコレクションに個々に追加したり、Point3dCollection から追加することができます。

次の例では、ランダムに生成されたポイントをドキュメントのポイント コレクションに追加し、コレクション内の各ポイントに直接アクセスして平均標高を計算します。

[CommandMethod("C3DSAMPLES", "AverageCogoElevation", CommandFlags.Modal)]
public void AverageCogoElevation()
{
    using (Transaction tr = startTransaction())
    {

        // _civildoc is the active CivilDocument instance.
        CogoPointCollection cogoPoints = _civildoc.CogoPoints;
        Point3d[] points = { new Point3d(4927, 3887, 150), new Point3d(5101, 3660, 250), new Point3d(5144, 3743, 350) };
        Point3dCollection locations = new Point3dCollection(points);

        cogoPoints.Add(locations);

        // Compute the average elevation of all the points in a document.
        double avgElevation = 0;
        foreach (ObjectId pointId in cogoPoints)
        {
            CogoPoint cogoPoint = pointId.GetObject(OpenMode.ForRead) as CogoPoint;
            avgElevation += cogoPoint.Elevation;
        }

        avgElevation /= cogoPoints.Count;
        _editor.WriteMessage("Average elevation: {0} \nNumber of points: {1}", avgElevation, cogoPoints.Count);
        tr.Commit();
    }
}