利用Civil 3D API更改曲面的样式

如果你需要更改曲面的样式,比如更改等高线的颜色等等,在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.

时间: 2024-10-09 03:34:23

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

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

Civil 3D构建于AutoCAD 和 Map 3D之上,在学习Civil 3D API二次开发之前,您至少需要了解AutoCAD API的二次开发,你可以参考AutoCAD .NET API二次开发学习指南.另外,如果你用到Map 3D相关的功能,你还可能需要Map 3D的开发知识,看Map 3D API二次开发学习指南. 软件准备及开发环境 AutoCAD Civil 3D 软件,推荐2014以上版本,你可以从Autodesk 官方网站下载试用版, Visual Studio 2012 或

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

原文 如何将经纬度利用Google Map API显示C# VS2005 Sample Code 日前写了一篇如何用GPS抓取目前所在,并回传至资料库储存,这篇将会利用这些回报的资料,将它显示在地图上,这个做法有两种,最简单的就是直接传值到Google Maps上. 举例来说,当我们知道经纬度后,只要将数据套到以下网址即可. http://maps.google.com/maps?q=25.048346%2c121.516396 在参数q=后面,就可以加上经纬度了. 25.048346是Lati

利用WordPress REST API 开发微信小程序从入门到放弃

自从我发布并开源WordPress版微信小程序以来,很多WordPress网站的站长问有关程序开发的问题,其实在文章:<用微信小程序连接WordPress网站>讲述过一些基本的要点,不过仍然有不少人对一些细节不明白,于是我就想着再写一篇比较全面而基础的教程,主要针对入门级别用户,高手就不用看了. WordPress版“守望轩”微信小程序开放源码地址:https://github.com/iamxjb/winxin-app-watch-life.net 至于标题,请原谅我,我标题党了. Word

利用iStylePDF的API实现在PDF文档中动态插入一幅图片

PDF的交互特性里面有一种叫Annotation的注释和标记对象,我们可以在一个注释对象中放入自己想要的数据.在这篇文章中所讲到的插入一幅图片,是我们在PDF应用中经常需要这样做的,比如个人签名的图片等. 首先我们来认识下PDF里面中的Annotations是何东东.一个annotation关联了一些注释.声音.电影等对象,PDF标准中预定义了一些常用的注释类型.在我们的帮助文档中有详细的说明,等下也会用到的,我列举出来了,如下所示 名称 数值 描述 spAnnotText 0 文本 spAnn

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

中国本地化包简直就是一块鸡肋, 但对于某些朋友来说还真离不了: 可惜中国本地化包的退出一直滞后, 在最新版软件出来后1年多, 本地化还不一定能够出来, 即使出来了, 也只能是购买了速博服务的用户才能得到. 在2017版的本地化包中, 包含了一些2009版的VBA源代码, 虽然不全, 没有包含本地化包的所有功能, 但对于想学习使用VBA进行Civil 3D二次开发的朋友来说, 作为样例文件,还是不错的选择. 下面就以AlignSectionDataPortTool.dvb为例, 演示一下如何让这些

利用百度地图API,获取经纬度坐标

利用百度地图API,获取经纬度坐标 代码很简单,但在网上没找到现成的获取地图经纬度的页面. 就是想,给当前页面传递一个经纬度,自动定位到此经纬度.然后可以重新选择,选择完返回经纬度. 效果如下: 源代码下载:http://files.cnblogs.com/zjfree/select_map.rar 利用百度地图API,获取经纬度坐标,布布扣,bubuko.com

python利用企业微信api来进行发送自定义报警的类实现

python利用企业微信api来进行发送自定义报警的类实现 企业微信注册 打开http://work.weixin.qq.com/企业微信主页: 点击企业注册: 填写相关信息,营业执照和注册号可以不用填,直接下一步,按照提示操作即可: 注册完成后,登陆,就显示如下界面: 点击我的企业标签: 看到如上界面,复制CorpID对应的值: 点击企业应用: 点击 创建应用: 填写对应内容,点击创建应用即可: 然后再点击企业应用,就可以在自建应用里看到自己创建的应用: 点击应用图标,看到如下图 复制Agen

利用百度词典API和Volley网络库开发的android词典应用

 关于百度词典API的说明,地址在这里:百度词典API介绍 关于android网络库Volley的介绍说明,地址在这里:Android网络通信库Volley 首先我们看下大体的界面布局! 再帖张最终的效果图 看到效果图,应该知道布局很简单了对吧: 布局xml文件如下: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.a

【php】利用新浪api接口与php获取远程数据的方法,获取IP地址,并获取相应的IP归属地

本文与<[Servlet]Javaweb中,利用新浪api接口,获取IP地址,并获取相应的IP归属地>(点击打开链接)为姊妹篇,只是后端编程语言换成了php. 做出同样的效果,打开页面,得到客户端的ip,并获取利用新浪api接口获取此ip的归属地. 可以看到,在IE6也是相当正常的. 目录结构如下,非常简单,同样就两个文件,其实如果你愿意,写成一个php文件也可以,但是显示层和逻辑业务层还是不混在一起为好吧? 唯一值得注意的是,这两个文件打死也不能一个叫ipGet.php,ipGet.html