如果你需要更改曲面的样式,比如更改等高线的颜色等等,在Civil 3D中,你可以通过在toolspace中选中曲面,然后点右键选择“Edit surface style…”然后切换到“Display” tab 来更改,:

下面的通过代码的方式使用API来实现同样的效果:

[CommandMethod("MyGroup", "SurfaceStyleExample", 
    "SurfaceStyleExample", CommandFlags.Modal)]
public void MyCommand() // This method can have any name
{
 
    Document doc = Application.DocumentManager.MdiActiveDocument;
   
    if (doc != null)
    {
        Editor ed = Application.DocumentManager
            .MdiActiveDocument.Editor;                 // select a tin surface         PromptEntityOptions peo = new PromptEntityOptions(
          "\nSelect a tin surface: ");
        peo.SetRejectMessage("\nOnly Tin surface is accepted");
        peo.AddAllowedClass(typeof(TinSurface), true);
        PromptEntityResult per = ed.GetEntity(peo);
        if (per.Status != PromptStatus.OK) return;         CivilDocument civilDoc = CivilApplication.ActiveDocument;         using (Transaction trans = doc.TransactionManager
            .StartTransaction())
        {
            TinSurface surface = trans.GetObject(per.ObjectId,
                OpenMode.ForRead) as TinSurface;             //exclude invalid points, 附赠功能,排除异常点             surface.BuildOptions.ExecludeMaximumElevation = true;
            surface.BuildOptions.MaximumElevation = 5000;
            surface.BuildOptions.ExecludeMinimumElevation = true;
            surface.BuildOptions.MinimumElevation = 200;             //set the Maximum Triangle Length,设置三角形最大边长             surface.BuildOptions.MaximumTriangleLength = 200;             //change the style, 下面开始更改样式了
            ObjectId styleId;
            if (civilDoc.Styles.SurfaceStyles.Contains("Standard"))
            {
                styleId = civilDoc.Styles.SurfaceStyles["Standard"];
            }
            else
            {
                // create a new style called 'example style':
                styleId = civilDoc.Styles.SurfaceStyles
                    .Add("example style");             }
           
                        // modify the style             SurfaceStyle surfaceStyle = styleId.GetObject(
                OpenMode.ForWrite) as SurfaceStyle;             //countours smoothing             surfaceStyle.ContourStyle.SmoothContours = true;
            surfaceStyle.ContourStyle.SmoothingType
                = ContourSmoothingType.AddVertices;
            surfaceStyle.ContourStyle.SmoothingFactor = 10;             surfaceStyle.ContourStyle.MajorContourColorScheme
                = ColorSchemeType.Rainbow;             //Major contour, red             surfaceStyle.GetDisplayStylePlan(
                SurfaceDisplayStyleType.MajorContour).Color
                = Autodesk.AutoCAD.Colors.Color.FromRgb(255, 0, 0);             //Major contour, layer 0             surfaceStyle.GetDisplayStylePlan(
                SurfaceDisplayStyleType.MajorContour).Layer = "0";             //Mainor contour, gree             surfaceStyle.GetDisplayStylePlan(
                SurfaceDisplayStyleType.MinorContour).Color
                = Autodesk.AutoCAD.Colors.Color.FromRgb(0, 255, 0);             //Mainor contour, layer 0, 如果你要放在其他图层,要确保该图层存在             surfaceStyle.GetDisplayStylePlan(
                SurfaceDisplayStyleType.MajorContour).Layer = "0";             // display major contours:             surfaceStyle.GetDisplayStylePlan(SurfaceDisplayStyleType
                .MajorContour).Visible = true;
            surfaceStyle.GetDisplayStylePlan(SurfaceDisplayStyleType
                .MinorContour).Visible = true;             // turn off display of other items:
           
            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;             //TODO: do the same for all model display settings as well
            //             // assign the style to the first surface in the document:
          
            surface.StyleId = styleId;             // commit the transaction             trans.Commit();             //rebuild the surface
            surface.Rebuild();
        }     } }

改之前的样子:

运行之后,等高线的颜色已经改变了.

Hope this helps.

利用Civil 3D API更改曲面的样式的更多相关文章

  1. Civil 3D API二次开发学习指南

    Civil 3D构建于AutoCAD 和 Map 3D之上,在学习Civil 3D API二次开发之前,您至少需要了解AutoCAD API的二次开发,你可以参考AutoCAD .NET API二次开 ...

  2. 学习 Civil 3D二次开发从哪儿开始?

    1.1 从哪儿开始 对于多数的工程设计人员,不完全具备上节所述的各种条件.对于Civil 3D的应用可能比较熟悉:但对于计算机语言,只限于上学时所学的一点基础知识,步入工作岗位后与计算机语言基本无缘: ...

  3. Civil 3D CustomDraw .NET混合项目设置

    样例文件中的CustomDraw项目使用的是COM API,但COM API不完整,某些时候需要使用.NET API,此时需要将C++项目设置成"公共语言运行时支持(/clr)"但 ...

  4. Civil 3d设置横断面图样式

    一位网友提出这样一个问题: 在使用SectionView.StyleName属性时, 会抛出异常:need to override property StyleName. 我测试的结果一样, 同时测试 ...

  5. AutoCAD/Civil 3D 学习笔记

    Civil学习笔记 1.环境配置 1.添加引用: Civil二次开发需要5个基本的AutoCAD的dll引用-acdbmgd.dll, acmgd.dll, accoremgd.dll, AecBas ...

  6. Civil 3D 二次开发 创建Civil 3D 对象—— 01 —— 创建几何空间点

    这一小节,我们创建派生于CivilCreateEntityDemo的类CivilCreateCogoPoint,来创建几何空间点. 1 创建类并添加字段及方法 首先在项目资源管理器中向本项目中添加类, ...

  7. Libgdx New 3D API 教程之 -- Libgdx中使用Materials

    This blog is a chinese version of xoppa's Libgdx new 3D api tutorial. For English version, please re ...

  8. 如何将经纬度利用Google Map API显示C# VS2005 Sample Code

    原文 如何将经纬度利用Google Map API显示C# VS2005 Sample Code 日前写了一篇如何用GPS抓取目前所在,并回传至资料库储存,这篇将会利用这些回报的资料,将它显示在地图上 ...

  9. Civil 3D 2017本地化中VBA程序移植到2018版中

    中国本地化包简直就是一块鸡肋, 但对于某些朋友来说还真离不了: 可惜中国本地化包的推出一直滞后, 在最新版软件出来后1年多, 本地化还不一定能够出来, 即使出来了, 也只能是购买了速博服务的用户才能得 ...

随机推荐

  1. [转]用C/C++扩展PHP详解

    原文:http://www.imsiren.com/archives/547 一个简单的扩展模块 PHP非常容易扩展,因为它提供了我们想用的所有API. 如果要新建一个扩展,需要在PHP源码中执行ex ...

  2. 虚拟文件系统(VFS)

    原文链接:http://www.orlion.ga/1008/ linux在不同的文件系统之上做了一个抽象层,使得文件.目录.读写访问等概念都成为抽象层概念,这个抽象层被称为虚拟文件系统(VFS). ...

  3. vue中v-bind:class动态添加class

    1.html代码 <template v-for='item in names'> <div id="app" class="selectItem&qu ...

  4. js表单动态添加数据并提交

    情景1:已经存在form对象了,动态为form增加对象并提交 function formAppendSubmit(){ var myform=$('#newArticleForm'); //得到for ...

  5. 引用类型-RegExp类型

    JavaScript高级程序设计(第三版)笔记-第五章-RegExp类型 定义正则表达式有两种方式 1.用字面量形式定义正则表达式: ver expression = /patterns/flags; ...

  6. android标题栏上面弹出提示框(二) PopupWindow实现,带动画效果

    需求:上次用TextView写了一个从标题栏下面弹出的提示框.android标题栏下面弹出提示框(一) TextView实现,带动画效果,  总在找事情做的产品经理又提出了奇葩的需求.之前在通知栏显示 ...

  7. ListView+CheckBox实现全选 单击效果

    在网上也找了一些案例,但都是用Map来实现的.我的是把对象绑定到当前控件上.代码稍微简洁. main布局文件:main.xml <?xml version="1.0" enc ...

  8. 应用程序框架实战三十三:表现层及ASP.NET MVC介绍(二)

    最近的更新速度越来越慢,主要是项目上比较忙,封装EasyUi也要花很多时间.不过大家请放心,本系列不会半途夭折,并且代码干货也会持续更新.本文继续介绍表现层和Asp.net Mvc,我将在本篇讨论一些 ...

  9. Android随笔之——Android单元测试

    在实际开发中,开发android软件的过程需要不断地进行测试.所以掌握Android的单元测试是极其重要的.您应该把单元测试作为Android应用开发周期的一部分,精心编写的测试可以在开发早起帮你发现 ...

  10. Hibernate之HQL查询的一些例子

    Hibernate配备了一种非常强大的查询语言,就是HQL(hibernate query language),HQL看上去很像sql,但只是语法结构上相似,HQL是一种面向对象的查询,他可以理解继承 ...