利用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.
利用Civil 3D API更改曲面的样式的更多相关文章
- Civil 3D API二次开发学习指南
Civil 3D构建于AutoCAD 和 Map 3D之上,在学习Civil 3D API二次开发之前,您至少需要了解AutoCAD API的二次开发,你可以参考AutoCAD .NET API二次开 ...
- 学习 Civil 3D二次开发从哪儿开始?
1.1 从哪儿开始 对于多数的工程设计人员,不完全具备上节所述的各种条件.对于Civil 3D的应用可能比较熟悉:但对于计算机语言,只限于上学时所学的一点基础知识,步入工作岗位后与计算机语言基本无缘: ...
- Civil 3D CustomDraw .NET混合项目设置
样例文件中的CustomDraw项目使用的是COM API,但COM API不完整,某些时候需要使用.NET API,此时需要将C++项目设置成"公共语言运行时支持(/clr)"但 ...
- Civil 3d设置横断面图样式
一位网友提出这样一个问题: 在使用SectionView.StyleName属性时, 会抛出异常:need to override property StyleName. 我测试的结果一样, 同时测试 ...
- AutoCAD/Civil 3D 学习笔记
Civil学习笔记 1.环境配置 1.添加引用: Civil二次开发需要5个基本的AutoCAD的dll引用-acdbmgd.dll, acmgd.dll, accoremgd.dll, AecBas ...
- Civil 3D 二次开发 创建Civil 3D 对象—— 01 —— 创建几何空间点
这一小节,我们创建派生于CivilCreateEntityDemo的类CivilCreateCogoPoint,来创建几何空间点. 1 创建类并添加字段及方法 首先在项目资源管理器中向本项目中添加类, ...
- 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 ...
- 如何将经纬度利用Google Map API显示C# VS2005 Sample Code
原文 如何将经纬度利用Google Map API显示C# VS2005 Sample Code 日前写了一篇如何用GPS抓取目前所在,并回传至资料库储存,这篇将会利用这些回报的资料,将它显示在地图上 ...
- Civil 3D 2017本地化中VBA程序移植到2018版中
中国本地化包简直就是一块鸡肋, 但对于某些朋友来说还真离不了: 可惜中国本地化包的推出一直滞后, 在最新版软件出来后1年多, 本地化还不一定能够出来, 即使出来了, 也只能是购买了速博服务的用户才能得 ...
随机推荐
- jQuery2.0.3源码分析系列(28) 元素大小
最近的分析都是有点不温不火,基本都是基础的回顾了 今年博客的目标目前总的来说有2大块 JS版的设计模式,会用jQuery来诠释 JS版的数据结构,最近也一直在狠狠的学习中. HTML息息相关的的样式 ...
- ios语音输入崩溃
游戏中任何可以输入的地方,只要调用语音输入,必然会导致app崩溃,解决方法如下: ok, so essentially the gist of it is that siri wants gl con ...
- 使用HTML5里的classList操作CSS类
在HTML5 API里,页面DOM里的每个节点上都有一个classList对象,程序员可以使用里面的方法新增.删除.修改节点上的CSS类.使用classList,程序员还可以用它来判断某个节点是否被赋 ...
- Android图片缓存之初识Glide
前言: 前面总结学习了图片的使用以及Lru算法,今天来学习一下比较优秀的图片缓存开源框架.技术本身就要不断的更迭,从最初的自己使用SoftReference实现自己的图片缓存,到后来做电商项目自己的实 ...
- Android随笔之——闹钟制作铺垫之AlarmManager详解
说实话,之前写的两篇博客Android广播机制Broadcast详解.Android时间.日期相关类和方法以及现在要写的,都算是为之后要写的闹钟应用做铺垫,有兴趣的话,大家可以去看看前两篇博客. 一. ...
- phpstorm 63342默认端口怎么修改
phpstorm进行网页调试的时候,默认是加端口号63342,在配置本地php环境的时候默认端口不一定是63342这个,更多的是系统默认的端口号80,那么问题就出现了,如何在phpstorm中将633 ...
- 使用Free Spire.Presentation生成PowerPoint文件
使用Free Spire.Presentation生成PowerPoint文件 前言 之前有写过一篇使用Free Spire.XLS生成图表的文章,朋友圈内反应还不错,都希望我能继续写下去,把类似 ...
- iOS 如何设置导航的滑动返回手势, 和系统饿一样
iOS 7 滑动返回那些事儿 2014/05/17 Wei .entry-meta .entry-header 在智能机越来越普及,屏幕越做越大的当下,滑动返回手势已经成为了一个应用的标配功能,甚至可 ...
- Spring学习笔记--环境搭建和初步理解IOC
Spring框架是一个轻量级的框架,不依赖容器就能够运行,像重量级的框架EJB框架就必须运行在JBoss等支持EJB的容器中,核心思想是IOC,AOP,Spring能够协同Struts,hiberna ...
- ASP.NET MVC 概述
目标:学习ASP.NET MVC 和ASP.NET WebForm的不同之处.学习在合适的地方使用ASP.NET MVC. MVC(Model-View-Controller)结构模式把一个对象分离成 ...