设置曲面样式之流域(代码片段)

david96007 david96007     2022-11-07     359

关键词:

QQ网友1109743151求助,

在设置流域后不显示。

代码中貌似没有什么问题,

经过测试,

发现使用手工设置曲面样式过程中,

如果显示流域,

会有一个曲面分析的过程发生,

于是在代码中添加了曲面分析的代码,

之后即可正常显示流域。

测试代码如下:

没有得到网友的允许就将他的代码贴出来,

希望不会造成误会!

 

// (C) Copyright 2018 by Microsoft 
//
using System;
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Geometry;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.Civil.DatabaseServices;
using Autodesk.Civil.ApplicationServices;
using Autodesk.Civil.DatabaseServices.Styles;

// This line is not mandatory, but improves loading performances
[assembly: CommandClass(typeof(AutoCAD_CSharp_plug_in3.MyCommands))]

namespace AutoCAD_CSharp_plug_in3


    public class MyCommands
    
        public static void ModifyTheFurface(bool T1, bool T2, bool T3, bool T4, bool T5, bool T6, bool T7, bool T8, bool T9, bool T10)
        
            //在非模态下打开模型空间前要解锁
            //DocumentLock docLock = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.LockDocument();
            Document doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
            Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
            /////////////////////
            PromptEntityOptions peo = new PromptEntityOptions("\n选择三角网曲面");
            peo.SetRejectMessage("\n请选择三角网曲面");
            peo.AddAllowedClass(typeof(TinSurface), true);
            PromptEntityResult per= ed.GetEntity(peo);
            if (per.Status != PromptStatus.OK) return;

            ObjectId objectid =per.ObjectId;
            /////////////////////
            //ObjectId objectid = promptForEntity(typeof(TinSurface));

            using (Transaction trans = doc.TransactionManager.StartTransaction())
            
                CivilDocument civilDoc = CivilApplication.ActiveDocument;
                TinSurface surface = trans.GetObject(objectid, OpenMode.ForWrite) as TinSurface;
                //change the style, 下面开始更改样式了
                ObjectId styleId = new ObjectId();
                if (civilDoc.Styles.SurfaceStyles.Contains("Standard"))
                    styleId = civilDoc.Styles.SurfaceStyles["Standard"];
                else
                    if (!civilDoc.Styles.SurfaceStyles.Contains("Standard"))
                
                    civilDoc.Styles.SurfaceStyles.Add("Standard");
                    styleId = civilDoc.Styles.SurfaceStyles["Standard"];
                

                SurfaceStyle surfaceStyle = styleId.GetObject(OpenMode.ForWrite) as SurfaceStyle;
                //平滑系数                
                surfaceStyle.ContourStyle.SmoothContours = true;
                surfaceStyle.ContourStyle.SmoothingType = ContourSmoothingType.AddVertices;
                surfaceStyle.ContourStyle.SmoothingFactor = 10;
                surfaceStyle.ContourStyle.MajorContourColorScheme = ColorSchemeType.Rainbow;
                //等高线

                surfaceStyle.GetDisplayStylePlan(SurfaceDisplayStyleType.MajorContour).Color = Autodesk.AutoCAD.Colors.Color.FromRgb(255, 191, 0); //加组主等高线红色
                surfaceStyle.GetDisplayStylePlan(SurfaceDisplayStyleType.MajorContour).Layer = "0"; //加组主等高线零层
                surfaceStyle.GetDisplayStylePlan(SurfaceDisplayStyleType.MajorContour).LinetypeScale = 0.4;//加组主等高线比例
                surfaceStyle.GetDisplayStylePlan(SurfaceDisplayStyleType.MinorContour).Color = Autodesk.AutoCAD.Colors.Color.FromRgb(165, 145, 82);//次等高线红色
                surfaceStyle.GetDisplayStylePlan(SurfaceDisplayStyleType.MinorContour).Layer = "0";//次等高线零层
                surfaceStyle.GetDisplayStylePlan(SurfaceDisplayStyleType.MajorContour).LinetypeScale = 0.1;//加组主等高线比例

                DisplayStyle majorContours = surfaceStyle.GetDisplayStylePlan(SurfaceDisplayStyleType.MajorContour);
                majorContours.Visible = true;
                // majorContours.Color = Autodesk.AutoCAD.Colors.Color.FromRgb(255, 255, 0);
                surfaceStyle.ContourStyle.BaseElevationInterval = 0.0;//基地海拔间隔
                surfaceStyle.ContourStyle.MajorContourInterval = 10;//主要等高线间距
                surfaceStyle.ContourStyle.MinorContourInterval = 2;//次要等高线间距       
                DisplayStyle minorContours = surfaceStyle.GetDisplayStylePlan(SurfaceDisplayStyleType.MinorContour);
                minorContours.Visible = true;
                // minorContours.Color = Autodesk.AutoCAD.Colors.Color.FromRgb(0, 255, 0);
                // 显示等高线
                surfaceStyle.GetDisplayStylePlan(SurfaceDisplayStyleType.MajorContour).Visible = T1;//是否显示等高线
                surfaceStyle.GetDisplayStylePlan(SurfaceDisplayStyleType.MinorContour).Visible = T1;//细等高线
                // display boundaries:
                surfaceStyle.GetDisplayStylePlan(SurfaceDisplayStyleType.Boundary).Visible = true;
                surfaceStyle.BoundaryStyle.DisplayExteriorBoundaries = true;
                surfaceStyle.BoundaryStyle.DisplayInteriorBoundaries = false;
                // 关闭显示的其他显示     
                surfaceStyle.GetDisplayStylePlan(SurfaceDisplayStyleType.UserContours).Visible = T2;//用户轮廓
                surfaceStyle.GetDisplayStylePlan(SurfaceDisplayStyleType.Directions).Visible = T3;//方向
                surfaceStyle.GetDisplayStylePlan(SurfaceDisplayStyleType.Elevations).Visible = T4;//海拔高度
                surfaceStyle.GetDisplayStylePlan(SurfaceDisplayStyleType.Slopes).Visible = T5;//山坡上
                surfaceStyle.GetDisplayStylePlan(SurfaceDisplayStyleType.SlopeArrows).Visible = T6;//斜率的箭
                surfaceStyle.GetDisplayStylePlan(SurfaceDisplayStyleType.Watersheds).Visible = T7;//分水岭

                surfaceStyle.GetDisplayStylePlan(SurfaceDisplayStyleType.Gridded).Visible = T8;//网格
                surfaceStyle.GetDisplayStylePlan(SurfaceDisplayStyleType.Points).Visible = T9;//
                surfaceStyle.GetDisplayStylePlan(SurfaceDisplayStyleType.Triangles).Visible = T10;//
                surface.StyleId = styleId;//指定文档中第一表面的风格
                //surface.UpgradeOpen();
                surface.Rebuild();//重建曲面   
                /////////////////////////////
                if (T7)
                
                    SurfaceAnalysis sa = surface.Analysis;
                    SurfaceAnalysisWatershedDataCollection swdc = sa.GetWatershedData();
                    sa.SetWatershedData(swdc);
                
                ////////////////////////////
                trans.Commit();//提交事务
                ed.UpdateScreen();
                ed.UpdateTiledViewportsFromDatabase();
                ed.UpdateTiledViewportsInDatabase();
            
            //ZoomExtents();
            //在用完后要锁定
            //docLock.Dispose();
        

        [CommandMethod("MyGroup", "MyCommand", "MyCommandLocal", CommandFlags.Modal)]
        public void MyCommand() // This method can have any name
        
            ModifyTheFurface(false, false, false, false, false, false, true, false, false, false);
        
    

 

python之流程控制(代码片段)

Python之流程控制if语句条件判断语句ifa==b:pass#满足条件再执行ifa==b:passelse:pass#满足条件执行第一种语句,不满足条件则执行第二种语句ifa==b:#条件1pass#语句1elifa>b:#条件2pass#语句2else:pass#语句3如果满足条件1,则执行语句1,语句2... 查看详情

java基础之流程语句(代码片段)

JAVA流程语句有几下几种:一、if语句:1.if语句:如果满足条件语句,则执行执行语句;   if(条件语句)    执行语句;     ....;   2.if....else语句:如果满足判断语句,则执行执行语句1,否则执行执行语句2;... 查看详情

dp之流水作业调度问题(代码片段)

1#include<iostream>2#include<cstdio>3#include<string>4#include<algorithm>5usingnamespacestd;6constintN=100;7structnode8inttime;9intindex;10boolgroup;11;1213boolcmp(nodea,node 查看详情

曲面细分阶段(代码片段)

...白色的顶点),对ABCD四个顶点的权重求和即可根据权重重新设置旧顶 查看详情

mysql之流程函数(代码片段)

...末私信作者,我们一起去大厂。本篇总结的是《MySQL之流程函数》,后续会每日更新~关于《Redis入门到精通》、《并发编程》、《Java全面入门》、《鸿蒙开发》等知识点可以参考我的往期博客相信自己,越活越坚强&#x... 查看详情

高并发之流量优化(代码片段)

工作原理1.通过Referer或者签名,网站可以检测目标网页访问的来源网页,如果是资源文件,则可以跟踪到显示它的网页地址。一旦检测到来源不是本站即进行阻止或者返回指定的页面。2.通过计算签名的方式,判断请求是否合法... 查看详情

sentinel.02.sentinel之流量控制(代码片段)

Sentinel.02.Sentinel之流量控制前言概述定义规则(FlowRule)基于QPS/并发数的流量控制小试牛刀新增规则簇点链路流控规则流控测试并发线程数流量控制小试牛刀新增规则流控测试新建线程组新建http请求启动测试流控模式直接模式关联... 查看详情

sentinel.02.sentinel之流量控制(代码片段)

Sentinel.02.Sentinel之流量控制前言概述定义规则(FlowRule)基于QPS/并发数的流量控制小试牛刀新增规则簇点链路流控规则流控测试并发线程数流量控制小试牛刀新增规则流控测试新建线程组新建http请求启动测试流控模式直接模式关联... 查看详情

flowable系列之流程变量(代码片段)

流程变量  流程实例按步骤执行时,需要使用一些数据。在Flowable中,这些数据称作变量(variable),并会存储在数据库中。变量可以用在表达式中(例如在排他网关中用于选择正确的出口路径),也可以在... 查看详情

第八篇flowable之流程变量(代码片段)

流程变量  流程实例按步骤执行时,需要使用一些数据。在Flowable中,这些数据称作变量(variable),并会存储在数据库中。变量可以用在表达式中(例如在排他网关中用于选择正确的出口路径),也可以在... 查看详情

go语言基础之流程控制(代码片段)

流程控制是每种编程语言控制逻辑走向和执行次序的重要部分,流程控制可以说是一门语言的“经脉”。Go语言中最常用的流程控制有if和for,而switch和goto主要是为了简化代码、降低重复代码而生的结构,属于扩展类的流程控制... 查看详情

微服务熔断限流hystrix之流聚合(代码片段)

简介上一篇介绍了HystrixDashboard监控单体应用的例子,在生产环境中,监控的应用往往是一个集群,我们需要将每个实例的监控信息聚合起来分析,这就用到了Turbine工具。Turbine有一个重要的功能就是汇聚监控信息,并将汇聚到的... 查看详情

细说webpack之流程篇(代码片段)

引言目前,几乎所有业务的开发构建都会用到webpack。的确,作为模块加载和打包神器,只需配置几个文件,加载各种loader就可以享受无痛流程化开发。但对于webpack这样一个复杂度较高的插件集合,它的整体流... 查看详情

4-7:tcp协议之流量控制(代码片段)

文章目录一:流量控制一:操作系统缓冲区与滑动窗口的关系(1)若应用程序没有及时读取缓冲区(2)操作系统直接减少缓冲区大小本文大部分内容来自小林coding《图解网络》,感谢分享,简单整... 查看详情

htmlgoogleanalytics跨域设置(代码片段)

查看详情

sparkstreaming源码解读之流数据不断接收详解(代码片段)

特别说明:在上一遍文章中有详细的叙述Receiver启动的过程,如果不清楚的朋友,请您查看上一篇博客,这里我们就基于上篇的结论,继续往下说。博文的目标是:SparkStreaming在接收数据的全生命周期贯通... 查看详情

跨域设置(代码片段)

#参考:https://blog.csdn.net/linzi1994/article/details/82724429https://www.cnblogs.com/ShaunChen/p/5998800.html#配置详解:#跨域设置CORS_ORIGIN_ALLOW_ALL=True#允许所有域名CORS_ALLOW_CREDENTIALS=True#允许获取cookieCORS_URLS_ 查看详情

markdown跨域服务端响应头设置(代码片段)

查看详情