サーフェスにスタイルを追加する

サーフェスにスタイルを割り当てるには、サーフェス オブジェクトの StyleId プロパティを、有効な SurfaceStyle オブジェクトの ObjectId に設定します。

この例では、新しいスタイルを作成し、その設定を変更し、それをドキュメントの最初のサーフェスに割り当てる方法を示します。通常はモデルの表示設定も変更しますが、ここでは簡潔に平面表示設定のみを変更します。

[CommandMethod("SurfaceStyle")]
public void SurfaceStyle()
{
    using (Transaction ts = Application.DocumentManager.MdiActiveDocument.Database.TransactionManager.StartTransaction())
    {
        // create a new style called 'example style':
        ObjectId styleId = doc.Styles.SurfaceStyles.Add("example style");

        // modify the style:
        SurfaceStyle surfaceStyle = styleId.GetObject(OpenMode.ForWrite) as SurfaceStyle;

        // display surface triangles
        surfaceStyle.GetDisplayStylePlan(SurfaceDisplayStyleType.Triangles).Visible = true;
        surfaceStyle.GetDisplayStyleModel(SurfaceDisplayStyleType.Triangles).Visible = true;

        // display boundaries, exterior only:
        surfaceStyle.GetDisplayStylePlan(SurfaceDisplayStyleType.Boundary).Visible = true;
        surfaceStyle.BoundaryStyle.DisplayExteriorBoundaries = true;
        surfaceStyle.BoundaryStyle.DisplayInteriorBoundaries = false;

        // display major contours:
        surfaceStyle.GetDisplayStylePlan(SurfaceDisplayStyleType.MajorContour).Visible = true;

        // turn off display of other items:
        surfaceStyle.GetDisplayStylePlan(SurfaceDisplayStyleType.MinorContour).Visible = false;
        surfaceStyle.GetDisplayStylePlan(SurfaceDisplayStyleType.UserContours).Visible = false;
        surfaceStyle.GetDisplayStylePlan(SurfaceDisplayStyleType.Directions).Visible = false;
        surfaceStyle.GetDisplayStylePlan(SurfaceDisplayStyleType.Elevations).Visible = false;                
        surfaceStyle.GetDisplayStylePlan(SurfaceDisplayStyleType.Slopes).Visible = false;                
        surfaceStyle.GetDisplayStylePlan(SurfaceDisplayStyleType.SlopeArrows).Visible = false;                
        surfaceStyle.GetDisplayStylePlan(SurfaceDisplayStyleType.Watersheds).Visible = false;
                
        // do the same for all model display settings as well


        // assign the style to the first surface in the document:
        CivSurface surf = doc.GetSurfaceIds()[0].GetObject(OpenMode.ForWrite) as CivSurface;
        surf.StyleId = styleId;

        // commit the transaction
        ts.Commit();
    }
}