境界は閉じたポリゴンで、そのタイプによって内側にある三角形の表示/非表示に影響を与えます。
サーフェスに適用されるすべての境界は、Surface.BoundariesDefinition コレクションに格納されます。境界自体は、閉じたポリラインやポリゴンなどの AutoCAD 図形によって定義されます。サーフェスの三角形をクリップするときに図形の高さは影響しないので、2D または 3D 図形を使用できます。この図形には曲線が存在しても構いませんが、境界は常に線分で構成されます。これらの線分を分割する方法は、中央縦距によって定義されます。中央縦距は、曲線とその近似線分の間の最大距離です。
サーフェスの BoundariesDefinition.AddBoundaries() メソッドを使用して、境界をサーフェスに追加することができます。このメソッドは 3 つのオーバーロードを備え、次のいずれかを受け取って新しい境界を定義します。
このメソッドは、境界タイプ(データ クリップ、外側、非表示、表示)、地形作成ブレークラインを使用するかどうか、および線分が曲線から分割される方法を決定する中央縦距の値も指定します。
次の例では、TIN サーフェスとポリラインを選択するようユーザに要求し、そのポリラインをサーフェスの境界コレクションに追加します。境界を追加した後は、サーフェスを再作成する必要があることに注意してください。.NET API を使用してサーフェスの境界を修正した場合、Civil 3D の GUI の再作成アイコンは表示されません。
[CommandMethod("AddSurfaceBoundary")] public void AddSurfaceBoundary() { using (Transaction ts = Application.DocumentManager.MdiActiveDocument.Database.TransactionManager.StartTransaction()) { // Prompt the user to select a surface and a polyline ObjectId surfaceId = promptForEntity("Select the surface to add a boundary to", typeof(TinSurface)); ObjectId polyId = promptForEntity("Select the object to use as a boundary", typeof(Polyline)); // The boundary or boundaries must be added to an ObjectIdCollection for the AddBoundaries method: ObjectId[] boundaries = { polyId }; TinSurface oSurface = surfaceId.GetObject(OpenMode.ForWrite) as TinSurface; try { oSurface.BoundariesDefinition.AddBoundaries(new ObjectIdCollection(boundaries), 100, Autodesk.Civil.Land.SurfaceBoundaryType.Outer, true); oSurface.Rebuild(); } catch (System.Exception e) { editor.WriteMessage("Failed to add the boundary: {0}", e.Message); } // commit the transaction ts.Commit(); } }