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