CorridorSurface 境界を作成する

CorridorSurface に新しい境界を追加する方法はいくつかあります。これには、CorridorSurfaceBoundaryCollection.Add() メソッドのバージョンを使用します。このメソッドを使用して、次の方法で新しい境界を追加することができます。

  1. - 新しい空の境界として
  2. - ポリラインから
  3. - Point3d オブジェクトのコレクションから
  4. - 計画線から

AddCorridorExtentsBoundary () を使用して新しい外側境界を追加することもできます。このメソッドは、UI で[外側境界としてのコリドーの領域]コマンドを使用しての新しい境界の追加に対応しています。

既存の境界を調べて、作成された方法を判断することもできます。AddCorridorExtentsBoundary() で作成された外側境界には true に設定された IsCorridorExtents プロパティがあり、ポリラインおよび Point3d コレクションから作成された境界には true に設定された IsDefinedFromPolygon があります。

下のサンプル コードでは、コリドー サーフェス名を求めるプロンプトが表示され、次にその Boundaries コレクションに 3 種類の境界が追加されます。つまり、コリドー範囲で定義された空の境界、外側境界、ポリラインからの境界の 3 種類です。

Corridor corridor = null;
CorridorSurface corridorSurface = null;

string surfaceName = _editor.GetString("Enter Corridor Surface name: ").StringResult;
// With surface name, find surface and associated corridor ID
foreach (ObjectId oid in _civilDoc.CorridorCollection)
{
    Corridor c = ts.GetObject(oid, OpenMode.ForWrite) as Corridor;
    if (c.CorridorSurfaces[surfaceName] != null)
    {
        // this is the matching surface and corridor
        corridor = c;
        corridorSurface = c.CorridorSurfaces[surfaceName];
	break;
    }
}

// add outer boundary:
CorridorSurfaceBoundary outerBoundary = corridorSurface.Boundaries. AddCorridorExtentsBoundary("OuterBoundary");

_editor.WriteMessage("New outer boundary has {0} polygon points.", outerBoundary.PolygonPoints().Length);

// add empty boundary:
CorridorSurfaceBoundary emptyBoundary = corridorSurface.Boundaries.Add("EmptyBoundary");

// prompt for polyline to add as boundary:
ObjectId polylineId = promptForObjectType("Select a polyline to add to the surface boundary collection:", typeof(Polyline));
CorridorSurfaceBoundary polyBoundary = corridorSurface.Boundaries.Add("Polyline boundary", polylineId);

ts.Commit();