ポイントを使用する

座標ジオメトリ ポイント(COGO ポイント)は、座標データのみを持つ AutoCAD のポイント ノードよりも複雑です。CogoPoint オブジェクトは、位置に加えて、一意の ID 番号、名前、未処理(フィールド)注釈、および完全な(展開された)注釈などのプロパティも備えています。ポイント番号は一意で、ポイントを作成すると自動的に割り当てられます。ポイント番号は、直接 PointNumber プロパティを設定して変更するか、Renumber() メソッドを使用して変更することができます。直接プロパティを設定すると、指定した値を持つ別のポイントが存在する場合は例外がスローされますが、Renumber() メソッドは、ポイント番号の競合を解決するための設定を使用して、別のポイント番号を選択します。また、CogoPointCollection.SetPointNumber() メソッドを使用すると、複数のポイントに対して PointNumber プロパティを設定することもできます。

ポイントが作成されると、完全な注釈プロパティは読み込み専用になります。

CogoPoint オブジェクトの Location プロパティは読み込み専用です。ただし、EastingNorthingElevation プロパティを使用して、ローカル位置を読み込み、変更することができます。ポイントの位置は、図面の座標設定と変換設定に応じて、Grideasting および GridNorthing プロパティか、Latitude および Longitude プロパティを使用して指定することもできます。

CogoPoint オブジェクトは、図面ポイントまたはプロジェクト ポイントのいずれかです。プロジェクト ポイントは true に設定される isProjectPoint プロパティを持ち、IsCheckedOut および ProjectVersion プロパティによって含まれる追加のプロジェクト情報を持ちます。isProjectPoint == false を持つポイントのこれらのプロパティを取得または設定しようとすると例外が発生するため、 最初にそのプロパティを確認することをお勧めします。

CogoPoint オブジェクトは、PointGroup 設定によって変更された値を含むいくつかの読み込み専用の優先プロパティも備えています。これらには、ElevationOverrideFullDescriptionOverrideLabelStyleIdOverrideRawDescriptionOverrideStyleIdOverride があります。

次の例では、新しいポイントをドキュメントのポイント コレクションに追加し、そのプロパティをいくつか設定します。

[CommandMethod("C3DSAMPLES", "CreatePoint", CommandFlags.Modal)]
public void CreatePoint()
{
    using (Transaction tr = startTransaction())
    {
        // _civildoc is the active CivilDocument instance.
        Point3d location = new Point3d(4958, 4079, 200);
        CogoPointCollection cogoPoints = _civildoc.CogoPoints;
        ObjectId pointId = cogoPoints.Add(location);
        CogoPoint cogoPoint = pointId.GetObject(OpenMode.ForWrite) as CogoPoint;
        cogoPoint.PointName = "point1";
        cogoPoint.RawDescription = "Point description";

        tr.Commit();
    }
}