等高線は、図形に沿ったサーフェスの高度を表す開いた図形または閉じた図形です。等高線の高度は一定でなければなりません。後続のポイントに何が指定されているかに関係なく、図形の最初のポイントの z 値が図形全体の高度として使用されます。また、等高線には、サーフェスに追加されるポイントの数を調整する設定も存在します。等高線を作成するときには、間引き距離、間引き角度、および距離パラメータを指定します。ポイントの前後の距離が間引き距離より短い場合、および線分の前後の角度が間引き角度より小さい場合、等高線のポイントが削除されます。各線分セグメントは、maximumDistance パラメータ以下の長さで等しいセクションに分割されます。図形内の曲線も、ブレークラインと同じよう中央縦距に基づいてモザイク分割されます。maximumDistance の値は、間引き値より優先するので、最終的な等高線にはパラメータより小さい線分セグメントが存在します。
等高線は、Point2dCollection、Point3dCollection、またはポリラインを含む ObjectIdCollection から追加することができます。必要に応じて、SurfaceMinimizeFlatAreaOptions オブジェクトをパラメータとして SurfaceDefinitionContours.AddContours() に渡すことにより、サーフェスの平面領域を最適化するためのオプションを指定することができます。平面領域を最適化する方法の詳細は、『Civil 3D ユーザ ガイド』の「サーフェス内の平面領域を最適化する」を参照してください。
次の例は、ポリラインからサーフェスに等高線を追加する方法を示しています。
[CommandMethod("CreateContour")] public void CreateContour() { using (Transaction ts = Application.DocumentManager.MdiActiveDocument.Database.TransactionManager.StartTransaction()) { // Prompt the user to select a TIN surface and a polyline, and create a contour from the polyline ObjectId surfaceId = promptForEntity("Select a TIN surface to add a contour to", typeof(TinSurface)); ObjectId polyId = promptForEntity("Select a polyline to create a contour from", typeof(Polyline)); TinSurface oSurface = surfaceId.GetObject(OpenMode.ForWrite) as TinSurface; ObjectId[] contours = {polyId}; oSurface.ContoursDefinition.AddContours(new ObjectIdCollection(contours), 1, 85.5, 55.5, 0); // commit the transaction ts.Commit(); } }