由于本人是岩土工程,研究方向主要偏向于支挡防护工程,不可避免要在BIM软件中进行地形实体的构建。经过资料的搜集和整理,发现利用Revit的Dynamo可以进行操作。但是利用Dynamo 节点搭建的脚本需要读取高程点的资料,而我手中没有高程点的数据,经过各种咨询并查询相关插件未果,决定自己编写针对CAD地形图生成高程点的插件,先放插件代码图。

// 开启事务处理using (Transaction trans = db.TransactionManager.StartTransaction()){List<Polyline> polylines = new List<Polyline>();//筛选等高线TypedValue[] typedValue ={new TypedValue((int) DxfCode.Operator,"<and" ),new TypedValue((int) DxfCode.Start,"LWPOLYLINE" ),new TypedValue((int) DxfCode.LayerName,"DGX" ),new TypedValue((int) DxfCode.Operator,"and>" ),};PromptSelectionOptions promptSelection = new PromptSelectionOptions();promptSelection.MessageForAdding = "请选择等高线";SelectionFilter selection = new SelectionFilter(typedValue);var selectionResult = ed.GetSelection(promptSelection, selection);
// 判断选择是否成功if (selectionResult.Status == PromptStatus.OK){var workbook = new XLWorkbook();var sheet = workbook.AddWorksheet("开始");workbook.SaveAs(@"C:\Users\wangjiaran\Desktop\新建文件夹\123.xlsx");                          SelectionSet aaDGX = selectionResult.Value;int nCount = aaDGX.Count;ObjectId[] objectIds = aaDGX.GetObjectIds();//通过Id对实体进行操作for (int i = 0; i < nCount; i++){var sheet0 = workbook.AddWorksheet("高程点" + i);string[] header = { "X", "Y", "Z" };var row1 = sheet0.FirstRow();row1.Cell(1).Value = header[0];row1.Cell(2).Value = header[1];row1.Cell(3).Value = header[2];// 获取多段线实体对象Polyline pLine = trans.GetObject(objectIds[i], OpenMode.ForRead) as Polyline;//多线段是否闭合 pline.Closedstring isclosed = pLine.Closed.ToString();//多线段起始点 pline.StartPoint//多线段结束点 pline.EndPoint
//多段线顶点数int vertexNum = pLine.NumberOfVertices;Point3d point;// 遍历获取多段线顶点坐标for (int j = 0; j < vertexNum; j++){point = pLine.GetPoint3dAt(j);var row = sheet0.Row(j + 2);string contx = point.X.ToString();string conty = point.Y.ToString();string contz = point.Z.ToString();row.Cell(1).Value = contx;row.Cell(2).Value = conty;row.Cell(3).Value = contz;workbook.Save();}}}trans.Commit();

注意的是调用了ClosedXML 程序包,输出Excel格式如图示。

保存文件后打开Revit,利用Dynamo编写脚本,如图示。

创建地形点第1 部分

创建地形点第2部分

注意:1.若Excel有非数字信息,在生成点的时候会报错,需要对列表进行更多处理。我选择的是对Excel进行修改,由于是插件写出的Excel,其录入格式是固定的,可以在sheet选卡右击,选择全部sheet,然后删去表头,可解决点位报错问题。2.若点有重复,在生成三角网格是也会报错。

在第一步的基础上,我们已经在Dynamo中创建了等高线的几何点,利用这些几何点进行拓扑,生成三角网格曲面。将三角网格曲面输入安装的PolySurface节点包,进而生成波利曲面。将曲面的边缘投影在一个高程低于曲面最低点的平面上和一个高程高于曲面最高点的平面上,将两条投影得到的轮廓线融合成几何体,利用Split进行剪切,获得目标几何体。

在面对点重复,无法生存三角网格的问题上,由于所包含的点位过多,对计算机处理的负担过大,所以进行了简化操作。利用PruneDuplicates节点,对一定区域内的点进行剔除。传入所有的点,传入密度区间(一个代表直径是几米的数值)。即可将数据进行简化,即降低了数据的密度,也解决了问题。注意的是如果简化区域过大,会导致信息缺失,地形模型会出现较大误差。

具体操作见下图。

生成地形表面和实体(1)

生成地形表面和实体(2)

完成了上述步骤,实体地形也就创建完成了,对于地层的分割可以参照这一设计思路,李彤Split节点进行操作,下面是成果图。

某地区工程实例1

某地区工程实例2

欢迎大家提出宝贵意见,科研路上是孤军奋战。

应用Revit结合CAD图纸生成地形实体和地质模型相关推荐

  1. Revit导入CAD图纸,要提前优化图纸,你做到了吗?

    我们在Revit建模的过程中,大都会导入或者链接CAD图纸,作为参照底图来建立模型,但是由于CAD图纸图面信息比较多,在我们作图的时候会影响软件运行速度. 那么我们在Revit导入CAD图纸之前要做什 ...

  2. Revit软件用幕墙工具创建百叶窗及CAD门窗生成方法

    Revit软件用幕墙工具创建百叶窗及CAD门窗生成方法 首先,新建轮廓族,如图1-1所示,尺寸根据需要确定,如图: 编辑新建族的类别轮廓类型修改为竖挺如图1-2, 新组类型命名百叶窗如图1-3所示.然 ...

  3. Revit (1) - CAD - 获取图层

    系列文章目录 Revit开发中异常记录 Revit (1) - CAD - 获取图层 Revit (2) - CAD - 获取CAD文字 Revit (3) - 二开 -创建柱子 Revit (4) ...

  4. Revit中如何绘制轴线?CAD图纸转轴网操作

    一.如何用revit来制作这么一个简单的轴线呢? 01 .新建项目 绘制轴线,首先新建项目建筑样板 02 .轴线快捷键 绘制轴线的快捷键需要牢记,因为经常使用GR 03 .编辑轴线类型 当你画好第一条 ...

  5. CAD图纸导入Revit中怎么关闭不需要的图层

    我相信每个人都有自己的解决方案来解决这个问题.有些同事在CAD图纸导入Revit之前就处理了要导入的图纸,删除了不需要的图层来保留所需的图层,这也是一个很好的方法.然而,像我这样懒惰的人懒得处理它.我 ...

  6. 机电revit的【桥架转化】功能,识别CAD图纸点击转化

    机电revit的[桥架转化]功能,识别CAD图纸点击转化.机电是revit建模中重要的一个部分,对电器模型运维和管理有着不可或缺的地位.在机电revit中的CAD转化识别,之前已经和大家分享过风管,立 ...

  7. Revit软件中参照线在制作墙体上的使用及快速CAD图纸墙转化

    Revit软件中参照线在制作墙体上的使用及快速CAD图纸墙转化 Revit中参考线(参照线)在墙上的妙用,如果你想做这样的墙,你会怎么想? 墙的顶部是倾斜的.对于这形状的墙,不可能通过传统墙的编辑轮廓 ...

  8. Revit简单的门族创建及CAD图纸翻模门窗

    一.Revit简单的门族创建步骤 门是我们建筑模型中不可缺少的一个构件,如何在族中绘制一个自己的门族呢?下面教大家绘制一个简单的门族,让你了解门的构件绘制. 打开公制门族进行创建 首先我们要进行门框的 ...

  9. su如何变成实体_不用建模就能生成地形,SU怎么办到的?

    有什么方法可以不建模 直接生成真实好看的地形呢 这里强烈安利这款神器 位图转模型 ▼ 位图转模型 位图转模型 高程着色 坡度着色 插件介绍 位图转模型(SUAPP编号186) 作者:thomthom ...

最新文章

  1. kernel笔记——中断
  2. mac python3打包成窗体程序_python3代码打包成mac的程序,没办法运行,各位大神请指导一下...
  3. 使用Spring Data JPA进行分页和排序
  4. [转载] 如何在Android设备之间共享Google Play应用,音乐等
  5. 游族网络:中诚信国际将公司主体及游族转债列入信用评级观察名单
  6. Kaggle入门预测赛,手写数字识别Digit Recognizer,使用Kaggle kernel作答,F=0.98
  7. pku1274 The Perfect Stall
  8. 影子系统、还原精灵、冰点还原优缺点比较
  9. Python批量爬取谷歌原图,2021年最新可用版
  10. 王垠:怎样尊重一个程序员
  11. 第一次搭建ftp遇见的蹩脚的问题
  12. 不同颜色蔬菜代表什么营养?
  13. 水果 hdu 1263 模拟
  14. 原生JS拖拽模型(有限制范围的)
  15. 计算机网络icmp实验,北航研究生计算机网络实验_实验三 网络层实验
  16. php中尊敬的某某某先生代码,auth.class.php
  17. jquery.validate.min.js使用介绍
  18. Python之利用PyPDF2库实现对PDF的删除和合并
  19. 用python画分段函数图像_使用Python拟合分段函数
  20. Google 地图下载工具 (C#)

热门文章

  1. 为什么你的HDMI口没信号!
  2. dell服务器维修服务网点,上海戴尔服务器*维修点 戴尔服务器不开机死机电源主板维修*换...
  3. 如何优雅地打印一个Java对象?
  4. Red Gate 破解
  5. python编写的软件可以申请专利吗_Python爬虫 | 爬取同一公司用不同名字申请专利的那些Assignees...
  6. Node.js结合wechaty实现个人微信机器人助手
  7. 解决0x00000001电脑蓝屏问题
  8. 一加手机电池测试软件,6款手机电池续航测试:一加手机8Pro排第二 华为P40Pro倒数第三...
  9. 源码阅读|怒肝了9道 HashMap经典面试题,需要的快速来取(不包邮哦)
  10. mysql sql where or_SQL的WHERE子句中包含多个AND和OR