当前位置:网站首页>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 布尔运算后效果所示。
边栏推荐
- MySQL learning
- [Redis] Redis installation under Linux
- 【Endnote】Word插入自定义形式的Endnote文献格式
- .Net C# Console Create a window using Win32 API
- CPDA|运营人如何从负基础学会数据分析(SQL)
- LPQ(局部相位量化)学习笔记
- How to deal with your own shame
- 蓝牙Mesh系统开发五 ble mesh设备增加与移除
- ExcelPatternTool: Excel table-database mutual import tool
- “配置”是把双刃剑,带你了解各种配置方法
猜你喜欢
【TA-霜狼_may-《百人计划》】图形4.3 实时阴影介绍
CPDA|运营人如何从负基础学会数据分析(SQL)
从一次数据库误操作开始了解MySQL日志【bin log、redo log、undo log】
Gartner Hype Cycle:超融合技术将在2年内到达“生产力成熟期”
KingbaseES V8 GIS data migration solution (2. Introduction to the capabilities of Kingbase GIS)
新唐NUC980使用记录:在用户应用中使用GPIO
Jincang database KingbaseES V8 GIS data migration solution (3. Data migration based on ArcGIS platform to KES)
MySQL3
英特尔 XDC 2022 精彩回顾:共建开放生态,释放“基建”潜能
【MySQL series】- Does LIKE query start with % will make the index invalid?
随机推荐
详细全面的postman接口测试实战教程
英特尔 XDC 2022 精彩回顾:共建开放生态,释放“基建”潜能
记录谷歌gn编译时碰到的一个错误“I could not find a “.gn“ file ...”
the mechanism of ideology
[Word] #() error occurs after Word formula is exported to PDF
Chapter 09 Use of Performance Analysis Tools [2. Index and Tuning] [MySQL Advanced]
linux(centOs7)部署mysql(8.0.20)数据库
EBS uses virtual columns and hint hints to optimize sql case
软件测试技术之最有效的七大性能测试技术
Is DDOS attack really unsolvable?Do not!
基于OpenVINO工具套件简单实现YOLOv7预训练模型的部署
行业现状?互联网公司为什么宁愿花20k招人,也不愿涨薪留住老员工~
第09章 性能分析工具的使用【2.索引及调优篇】【MySQL高级】
【PyQT5 绑定函数的传参】
Log an error encountered when compiling google gn "I could not find a ".gn" file ..."
2022 EdgeX中国挑战赛8月3日即将盛大开幕
【机器学习】21天挑战赛学习笔记(二)
PHP Skills Assessment
"Configuration" is a double-edged sword, it will take you to understand various configuration methods
[Unity Entry Plan] Handling of Occlusion Problems in 2D Games & Pseudo Perspective