当前位置:网站首页>SuperMap iDesktop.Net之布尔运算求交——修复含拓扑错误复杂模型
SuperMap iDesktop.Net之布尔运算求交——修复含拓扑错误复杂模型
2022-08-05 01:55:00 【supermapsupport】
nannan
SuperMap iDesktop.Net里“三维地理设计”选项卡中“运算分析”模块的布尔运算功能,是数字符号化的逻辑推演法,SuperMap引用这种逻辑运算方法实现对三维模型对象间进行合并、求差、求交运算,输出结果数据。实际项目中,参与布尔运算的往往是复杂模型,并非简单的正方体或者圆球。在平时支持过程中,会出现很多复杂模型做布尔运算报错或者结果不对的现象,为了方便大家更好的将布尔运算运用到实际项目中,小编在此整理了含拓扑错误复杂模型的布尔运算处理修复方法,供大家参考处理修复数据。
1.拓扑错误数据详情
在介绍处理方法前先描述一下小编这里参与布尔运算的复杂模型,该模型来自某单位的管道模型,小编拿到数据发现一个模型数据集对应一个对象,直接将两个模型进行布尔运算会提示不满足布尔运算的条件。这证明模型是含有拓扑错误的。当然在这里小编为了说明问题是错误示范,大家在处理数据时建议先进行模型检查,看是否有拓扑错误,这样会节省大量时间和处理结果的准确性。

三维数据=>模型工具=>模型检查,对这两个模型数据集分别检查,如图1.3。发现子对象最大顶点数是子对象最大三角面数的3倍,通俗来讲就是有很多顶点为3 ,三角形为1的子对象,存在很多的重复三角形,这种数据太过冗余,需要删除多余的顶点。
2.修复拓扑错误步骤
精细模型导入UDB后,确认数据是否存在重复顶点、重复三角面、重复子对象等情况,若存在,需进行数据校正。在三维数据 ->模型工具 ->模型校正下有相应功能对数据进行检查并处理。如图2.1所示。
该项目数据存在大量拓扑错误,可经过以下步骤修复:
2.1、合并子对象
三维地理设计-模型编辑-模型合并,勾选"合并子对象”。因上文发现子对象有很多冗余点,而移除重复点没办法移除处理子对象的顶点,需要合并子对象。
2.2、移除重复点
三维数据=>模型工具=>移除重复点。移除重复点是批量去除多个数据集中的模型对象的重复点或冗余点,精简模型数据,降低内存的占用,满足大体量数据的性能需要。
2.3、拓扑校正
三维数据=>模型工具=>拓扑校正。拓扑校正是指将联通区域矫正为统一的方向并移除重复或无效三角面,涉及拓扑校正以及移除重复三角面的操作,校正拓扑错误,保证渲染效果。
2.4、流形校正
三维数据=>模型工具=>流形校正。流形校正是指批量对多个数据集中的存在拓扑错误的进行校正,校正后的模型对象满足Halfedge数据结构。
流形校正之后模型已经满足布尔运算的条件,进行布尔运算发现求交后结果不正确,这时很大可能是骨架反转导致的,然后给它拆分看是哪些子对象骨架反转了,然后给它翻转过来。
2.5、对象拆分
三维地理设计-模型编辑-模型拆分,勾选"拆分后子对象保存为单个对象"。将全部或选中对象的子对象拆分成多个子对象。在完成BIM模型的搭建后,有时需要对诸如层高、墙厚、板厚、平面布置等反复核查,即需要获得模型对象的子对象。通过BIM子对象拆分可以得到这些构件的尺寸,避免自动拆分后造成预制构件尺寸不对,现场无法组装的情况。

模型拆分完后可以在三维数据=>模型工具=>属性提取里获取体积,查看体积是否有小于0的负值。

如图2.5.3所示,名为通信的数据集有4个对象的体积为负值。下面我们来看骨架翻转。(如果是体积为0的对象需要在场景里关联浏览属性表定位,或者看以下模型信息里的骨架情况后再删除)
2.6、骨架翻转
组件接口MeshOperator.ReverseMesh(Skeleton skeleton),仅需要翻转体积小于0的骨架。翻转骨架,用于处理模型数据。 对于模型数据布尔运算或获取截面崩溃或结果不对的情况,都可以使用该方法进行处理。
因目前11.0.0桌面版本没有骨架翻转的功能,需要我们二次开发。小编为了便于大家快速应用到项目中,自己写了一个小插件,见地址https://download.csdn.net/download/nan620403/86272379按照部署文档进行部署,然后在桌面功能栏里看到骨架翻转的功能按钮。

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

3.布尔运算求交结果
进行上述一系列模型拓扑修复操作后,最终进行布尔运算求交,求交结果正确,是我们想要的效果。具体见图3.3 布尔运算后效果所示。


边栏推荐
- Transfer Learning - Distant Domain Transfer Learning
- 2022 EdgeX中国挑战赛8月3日即将盛大开幕
- C language basics -- pointers
- 如何创建rpm包
- LPQ (local phase quantization) study notes
- Exploding the circle of friends, Alibaba produced billion-level concurrent design quick notes are too fragrant
- 第十一章 开关级建模
- 刷爆朋友圈,Alibaba出品亿级并发设计速成笔记太香了
- Programmer's list of sheep counting when insomnia | Daily anecdote
- Short domain name bypass and xss related knowledge
猜你喜欢
随机推荐
【翻译】CNCF对OpenTracing项目的存档
How to deal with your own shame
多线程涉及的其它知识(死锁(等待唤醒机制),内存可见性问题以及定时器)
How DHCP works
浅谈数据安全治理与隐私计算
Jincang database KingbaseES V8 GIS data migration solution (3. Data migration based on ArcGIS platform to KES)
A new technical director, who calls DDD a senior, is convinced
行业现状?互联网公司为什么宁愿花20k招人,也不愿涨薪留住老员工~
【PyQT5 绑定函数的传参】
【Redis】Linux下Redis安装
[Endnote] Word inserts a custom form of Endnote document format
.Net C# Console Create a window using Win32 API
详细全面的postman接口测试实战教程
Creative code confession
Use of pytorch: Convolutional Neural Network Module
深度学习原理学习小结 - Self-Attention/Transformer
Is DDOS attack really unsolvable?Do not!
(十七)51单片机——AD/DA转换
MySQL3
LPQ (local phase quantization) study notes







![Chapter 09 Use of Performance Analysis Tools [2. Index and Tuning] [MySQL Advanced]](/img/e7/61863c356e4c7bb03ba27865ee7be0.png)

