コリドー サーフェスの境界を定義するには、境界とマスクという 2 種類のオブジェクトを使用します。境界は、サーフェスの外側の端またはサーフェス内にある穴の内側の縁を表すポリゴンです。マスクは、サーフェスの表示可能な部分を表すポリゴンです。サーフェスのすべての境界のコレクションは CorridorSurface.Boundaries プロパティに格納され、すべてのマスクのコレクションは CorridorSurface.Masks プロパティに格納されます。
境界(CorridorSurfaceBoundary 型)とマスク(CorridorSurfaceMask 型)は、どちらも同じ基本インタフェース(CorridorSurfaceBaseMask)から派生し、どちらもほぼ同じメソッドとプロパティを備えています。境界のポリゴンを構成するポイント配列は、PolygonPoints() メソッドを呼び出すことによって取得できます。計画線のセグメントを選択することで境界が定義された場合、そのような計画線コンポーネントのコレクションは FeatureLineComponents プロパティに含まれます。
コリドー サーフェス境界とマスクを修正する方法の詳細は、「サーフェス境界を修正する」を参照してください。
次の例では、コリドー サーフェスのすべての境界を調べ、各サーフェスに関する情報を表示します。
// List boundaries
foreach (CorridorSurfaceBoundary oCorridorSurfaceBoundary in oCorridorSurface.Boundaries)
{
if (oCorridorSurfaceBoundary.BoundaryType == CorridorSurfaceBoundaryType.InsideBoundary)
ed.WriteMessage("Inner Boundary: ");
else
ed.WriteMessage("Outer Boundary: ");
ed.WriteMessage(oCorridorSurfaceBoundary.Name);
// Get the points of the boundary polygon
Point3d[] oPoints = oCorridorSurfaceBoundary.PolygonPoints();
ed.WriteMessage("\nNumber of points: {0}\n", oPoints.Length);
// Print the location of the first point. Usually corridors
// have a large number of boundary points, so we will not
// bother printing all of them.
ed.WriteMessage("Point 1: {0},{1},{2}\n",
oPoints[0][0],
oPoints[0][1],
oPoints[0][2]);
// Display information about each feature
// line component in this surface boundary.
ed.WriteMessage("Feature line components \n Count: {0}\n",
oCorridorSurfaceBoundary.FeatureLineComponents.Count);
foreach (FeatureLineComponent oFeatureLineComponent in oCorridorSurfaceBoundary.FeatureLineComponents)
{
ed.WriteMessage("Code: {0}, Start station: {1}, End station: {2}\n",
oFeatureLineComponent.FeatureLine.CodeName,
oFeatureLineComponent.StartStation,
oFeatureLineComponent.EndStation);
}
}