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();