SuperMap iDesktop.Net之布尔运算求交——修复含拓扑错误复杂模型

  SuperMap iDesktop.Net里“三维地理设计”选项卡中“运算分析”模块的布尔运算功能,是数字符号化的逻辑推演法,SuperMap引用这种逻辑运算方法实现对三维模型对象间进行合并、求差、求交运算,输出结果数据。实际项目中,参与布尔运算的往往是复杂模型,并非简单的正方体或者圆球。在平时支持过程中,会出现很多复杂模型做布尔运算报错或者结果不对的现象,为了方便大家更好的将布尔运算运用到实际项目中,小编在此整理了含拓扑错误复杂模型的布尔运算处理修复方法,供大家参考处理修复数据。

1.拓扑错误数据详情

  在介绍处理方法前先描述一下小编这里参与布尔运算的复杂模型,该模型来自某单位的管道模型,小编拿到数据发现一个模型数据集对应一个对象,直接将两个模型进行布尔运算会提示不满足布尔运算的条件。这证明模型是含有拓扑错误的。当然在这里小编为了说明问题是错误示范,大家在处理数据时建议先进行模型检查,看是否有拓扑错误,这样会节省大量时间和处理结果的准确性。
SuperMap iDesktop.Net之布尔运算求交——修复含拓扑错误复杂模型_第1张图片

图1.1 模型添加到球面场景全图预览

SuperMap iDesktop.Net之布尔运算求交——修复含拓扑错误复杂模型_第2张图片

图1.2 模型相交近景图

  三维数据=>模型工具=>模型检查,对这两个模型数据集分别检查,如图1.3。发现子对象最大顶点数是子对象最大三角面数的3倍,通俗来讲就是有很多顶点为3 ,三角形为1的子对象,存在很多的重复三角形,这种数据太过冗余,需要删除多余的顶点。
在这里插入图片描述

图1.3 模型检查输出结果

2.修复拓扑错误步骤

  精细模型导入UDB后,确认数据是否存在重复顶点、重复三角面、重复子对象等情况,若存在,需进行数据校正。在三维数据 ->模型工具 ->模型校正下有相应功能对数据进行检查并处理。如图2.1所示。
SuperMap iDesktop.Net之布尔运算求交——修复含拓扑错误复杂模型_第3张图片

图2.1 模型校正功能栏

  该项目数据存在大量拓扑错误,可经过以下步骤修复:

2.1、合并子对象

  三维地理设计-模型编辑-模型合并,勾选"合并子对象”。因上文发现子对象有很多冗余点,而移除重复点没办法移除处理子对象的顶点,需要合并子对象。
SuperMap iDesktop.Net之布尔运算求交——修复含拓扑错误复杂模型_第4张图片

图2.1.1 合并子对象前后对比图

2.2、移除重复点

  三维数据=>模型工具=>移除重复点。移除重复点是批量去除多个数据集中的模型对象的重复点或冗余点,精简模型数据,降低内存的占用,满足大体量数据的性能需要。
SuperMap iDesktop.Net之布尔运算求交——修复含拓扑错误复杂模型_第5张图片

图2.2.1 移除重复点输出结果

2.3、拓扑校正

  三维数据=>模型工具=>拓扑校正。拓扑校正是指将联通区域矫正为统一的方向并移除重复或无效三角面,涉及拓扑校正以及移除重复三角面的操作,校正拓扑错误,保证渲染效果。
SuperMap iDesktop.Net之布尔运算求交——修复含拓扑错误复杂模型_第6张图片

图2.3.1 拓扑校正输出结果

2.4、流形校正

  三维数据=>模型工具=>流形校正。流形校正是指批量对多个数据集中的存在拓扑错误的进行校正,校正后的模型对象满足Halfedge数据结构。
SuperMap iDesktop.Net之布尔运算求交——修复含拓扑错误复杂模型_第7张图片

图2.4.1 流行校正前后闭合状态对比图

  流形校正之后模型已经满足布尔运算的条件,进行布尔运算发现求交后结果不正确,这时很大可能是骨架反转导致的,然后给它拆分看是哪些子对象骨架反转了,然后给它翻转过来。
SuperMap iDesktop.Net之布尔运算求交——修复含拓扑错误复杂模型_第8张图片

图2.4.2 布尔运算错误结果

2.5、对象拆分

  三维地理设计-模型编辑-模型拆分,勾选"拆分后子对象保存为单个对象"。将全部或选中对象的子对象拆分成多个子对象。在完成BIM模型的搭建后,有时需要对诸如层高、墙厚、板厚、平面布置等反复核查,即需要获得模型对象的子对象。通过BIM子对象拆分可以得到这些构件的尺寸,避免自动拆分后造成预制构件尺寸不对,现场无法组装的情况。
SuperMap iDesktop.Net之布尔运算求交——修复含拓扑错误复杂模型_第9张图片
SuperMap iDesktop.Net之布尔运算求交——修复含拓扑错误复杂模型_第10张图片

图2.5.1模型拆分前后对比图

  模型拆分完后可以在三维数据=>模型工具=>属性提取里获取体积,查看体积是否有小于0的负值。
SuperMap iDesktop.Net之布尔运算求交——修复含拓扑错误复杂模型_第11张图片

图2.5.2 模型属性提取

SuperMap iDesktop.Net之布尔运算求交——修复含拓扑错误复杂模型_第12张图片

图2.5.3 查看模型体积属性值

如图2.5.3所示,名为通信的数据集有4个对象的体积为负值。下面我们来看骨架翻转。(如果是体积为0的对象需要在场景里关联浏览属性表定位,或者看以下模型信息里的骨架情况后再删除)

2.6、骨架翻转

  组件接口MeshOperator.ReverseMesh(Skeleton skeleton),仅需要翻转体积小于0的骨架。翻转骨架,用于处理模型数据。 对于模型数据布尔运算或获取截面崩溃或结果不对的情况,都可以使用该方法进行处理。
  因目前11.0.0桌面版本没有骨架翻转的功能,需要我们二次开发。小编为了便于大家快速应用到项目中,自己写了一个小插件,见地址https://download.csdn.net/download/nan620403/86272379按照部署文档进行部署,然后在桌面功能栏里看到骨架翻转的功能按钮。
SuperMap iDesktop.Net之布尔运算求交——修复含拓扑错误复杂模型_第13张图片

图2.6.1 骨架翻转插件部署好打开桌面查看结果

SuperMap iDesktop.Net之布尔运算求交——修复含拓扑错误复杂模型_第14张图片

图2.6.2 骨架翻转运行前后体积属性对比图

2.7、合并对象

  三维地理设计-模型编辑-模型合并,勾选"合并成一个对象”。模型合并包括合并多个对象和合并模型的子对象。BIM模型进行搭建时,把BIM模型合并为一个模型,有效避免操作过程中无意修改尺寸大小,降低BIM模型的质量和搭建效率。这里是为了合并成一个对象后方便进行布尔运算。

在这里插入图片描述

图2.7.1 模型合并成功输出结果

3.布尔运算求交结果

  进行上述一系列模型拓扑修复操作后,最终进行布尔运算求交,求交结果正确,是我们想要的效果。具体见图3.3 布尔运算后效果所示。
SuperMap iDesktop.Net之布尔运算求交——修复含拓扑错误复杂模型_第15张图片

图3.1 布尔运算参数设置窗口

SuperMap iDesktop.Net之布尔运算求交——修复含拓扑错误复杂模型_第16张图片

图3.2 布尔运算前效果

SuperMap iDesktop.Net之布尔运算求交——修复含拓扑错误复杂模型_第17张图片

图3.3 布尔运算后效果

你可能感兴趣的:(三维数据处理,3d)