occt中的History机制
1. 前言拓扑追踪机制一般会有两个层次的概念一种是某个操作前后新旧拓扑的映射另一种是标志的持久化一般会称之为“拓扑命名机制”这种要求模型存盘后还能恢复。occt没有持久化的id或者Handle的概念一般要想存盘后还能重新定位一般是要通过TNaming来自行给拓扑对象命名。实际上本专栏另一篇文件介绍基于XCAF文档实现属性读写的介绍中使用的就是此机制。本文关注的主要第一种概念一种瞬时、过程性的追踪当用户执行一个操作如布尔运算、倒角、拉伸切除时需要能力建立输入拓扑与输出拓扑之间的映射关系这是后续属性继承的基础。Parasolid接口中有tracking的概念ACIS中也有历史公告板的工具在occt中主要是BRepTools_History工具。下面会分别介绍三种内核获取拓扑映射的方法。2. Parasolid中的拓扑追踪映射Parasolid有一个全局变更记录机制一般称之为“BULLETIN”每当接口被调用内核会自动将这次修改拆解为一系列原子操作并记录到当前会话的 BULLETIN 日志中。TODO3. ACIS中的拓扑追踪映射acis的api接口可选一个DELTA_STATE参数内核会将模型从操作前状态变换到操作后状态所需的所有原子变更信息存入其中。TODO4. occt中的History机制occt中每个算法对象可以记录它的入参Shape和结果Shape之间的映射关系。在这套体系中它关注的是入参Shape在结果Shape中是否还存在、哪些与之关联有三个概念Modified、Generated 和 IsDeleted。4.1 映射状态分类Modified、Generated 、IsDeletedModified修改表示输入形状被替换或分割。它的几何或拓扑在操作中发生了变化但是维度一般不会改变。一个面被切割成多个子面那么子面与原面是Modified关系几何没变但是拓扑边界变了一个面被平移新面和原面也是Modified关系几何发生改变Generated生成表示从输入形状新生出拓扑元素。它的维度一般会发生改变。一个边在拉伸后生成一个面两个边相交生成一个顶点IsDeleted已删除表示输入形状在操作后被彻底移除没有直接对应的新形状留下。两个体重合的内部面在合并时被完全移除一个注意事项入参Shape可以既是Deleted又存在Generated映射对象。例如在一个复杂操作中一个边先拉伸了一个Face但是最后自身又被倒角删除了。此外任意的ShapeModified和Generated的结果不能相交。4.2 Reused状态occt的Shape/TShape是一个可高度复用的对象导致一个入参Shape可能完完整整的存在于结果Shape中。例如拉伸一个面所得棱柱的底面对象可能与入参Face完全相同两个TopoDS_Face对象满足IsEqual或者IsSame。我将这种称之为“Reused”。4.3 BRepTools_History工具很多occt的算法对象可以直接提供Modified/Generated/IsDeleted接口但为了统一简便用法提供了一个统一的BRepTools_History工具并且基于此提供了统一的Merge功能。4.3.1 构建提供模板构造函数要求算法对象存在Modified/Generated/IsDeleted接口。会从算法对象内部的History数据中读取入参theArguments其下所有Shape对象的映射信息。templateclassTheAlgoBRepTools_History(constNCollection_ListTopoDS_ShapetheArguments,TheAlgotheAlgo)可以主动往History中添加映射信息voidAddGenerated(constTopoDS_ShapetheInitial,constTopoDS_ShapetheGenerated)voidAddModified(constTopoDS_ShapetheInitial,constTopoDS_ShapetheModified)voidRemove(constTopoDS_ShapetheRemoved)voidReplaceGenerated(constTopoDS_ShapetheInitial,constTopoDS_ShapetheGenerated)voidReplaceModified(constTopoDS_ShapetheInitial,constTopoDS_ShapetheModified)4.2 合并将两段映射链 S→T 和 T→Q 合并为一段 S→Q。两个History的Merge操作就是将能去除的中间环节去除。一旦合并两个算法中间的Shape就不存在于History中了voidMerge(constocc::handleBRepTools_HistorytheHistory23)4.3.2 查询constNCollection_ListTopoDS_ShapeGenerated(constTopoDS_ShapetheInitial)constconstNCollection_ListTopoDS_ShapeModified(constTopoDS_ShapetheInitial)constboolIsRemoved(constTopoDS_ShapetheInitial)const

相关新闻

SpringBoot+Vue扶贫爱心超市系统开发实践

SpringBoot+Vue扶贫爱心超市系统开发实践

1. 项目背景与核心价值扶贫爱心超市作为一种创新的公益模式,正在全国范围内快速推广。这种模式通过积分兑换机制,将传统物资捐赠转变为"劳动换积分、积分换物品"的可持续帮扶方式。我们团队基于Java技术栈开发的这套B/S架构系统,正…

2026/8/3 6:56:53阅读更多 →
3分钟掌握免费无损歌词下载:163MusicLyrics终极使用指南

3分钟掌握免费无损歌词下载:163MusicLyrics终极使用指南

3分钟掌握免费无损歌词下载:163MusicLyrics终极使用指南 【免费下载链接】163MusicLyrics 云音乐歌词获取处理工具【网易云、QQ音乐】 项目地址: https://gitcode.com/GitHub_Trending/16/163MusicLyrics 还在为找不到高质量的LRC歌词而烦恼吗?16…

2026/8/3 6:56:53阅读更多 →
TCP协议核心机制与网络优化实战指南

TCP协议核心机制与网络优化实战指南

1. TCP协议基础认知:网络工程师的必修课作为网络工程师日常工作中接触最频繁的传输层协议,TCP(Transmission Control Protocol)就像互联网世界的"快递系统"。我入行时导师说过:"不懂TCP的网络工程师&am…

2026/8/3 6:56:52阅读更多 →
Java后端实现Markdown与HTML双向转换:Flexmark-java实战指南

Java后端实现Markdown与HTML双向转换:Flexmark-java实战指南

1. 项目概述:为什么我们需要在Java里折腾Markdown和HTML? 如果你是一名Java开发者,最近在做一个内容管理系统、博客平台,或者需要处理用户提交的富文本和轻量级标记文档,那你大概率会遇到这个需求:把用户写…

2026/8/3 9:26:44阅读更多 →
网页转PDF完美解决方案:从浏览器原理到Puppeteer自动化实战

网页转PDF完美解决方案:从浏览器原理到Puppeteer自动化实战

1. 项目概述:从网页到PDF的精准转换 在日常工作和学习中,我们经常会遇到需要将网页内容保存下来的场景。无论是为了离线阅读一篇深度技术文章、存档一份重要的在线报告,还是需要将网页内容作为正式文档的附件提交,将网页“完美”地…

2026/8/3 9:26:44阅读更多 →
Egg.js插件开发实战:15天掌握企业级Node.js框架

Egg.js插件开发实战:15天掌握企业级Node.js框架

1. 项目概述 "2026年15天学完eggjs第9天"这个标题看似简单,实际上蕴含了一个完整的学习路径规划。作为一名长期使用Egg.js开发企业级应用的全栈工程师,我深知这个框架的学习曲线和实际应用中的痛点。这个15天的学习计划,正是针对No…

2026/8/3 9:26:44阅读更多 →
数字时代的地理感知困境与地方感重构

数字时代的地理感知困境与地方感重构

1. 消失的附近:数字时代的地理感知困境 早上打开外卖软件,三公里外的网红餐厅比楼下小店更先跳入视线;导航去朋友家,算法规划的路线让你完全想不起途经了几个路口;刷着短视频,纽约街头艺人的表演比小区花园…

2026/8/3 9:26:44阅读更多 →
AI 内容营销还能这样做:Ace Data Cloud 定时任务让选题、写作、配图、发布自动跑起来

AI 内容营销还能这样做:Ace Data Cloud 定时任务让选题、写作、配图、发布自动跑起来

AI 内容营销还能这样做:Ace Data Cloud 定时任务,让「选题 → 写作 → 配图 → 发布」自动跑起来 如果你做过技术博客、产品推广、AI 工具测评,应该很熟悉这种状态: 今天想起来了,就发一篇;忙起来就停更一周…

2026/8/3 9:26:43阅读更多 →
3句话,让AI帮我搞定一个App:谷歌“王炸”工具,正在让设计师和程序员一起失业?

3句话,让AI帮我搞定一个App:谷歌“王炸”工具,正在让设计师和程序员一起失业?

一行代码不用写,甚至不需要打开Figma,你的下一个UI设计师,可能真的会是AI。小伙伴们,今天分享一款谷歌“王炸”工具,打开网站点击立即试用!一句话生成设计稿“帮我设计一整套‘周末去哪儿’App,…

2026/8/3 9:24:43阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/3 0:29:53阅读更多 →
限时公开!某头部SaaS公司内部AI模板工厂架构文档(含5类行业模板源码+性能压测报告)

限时公开!某头部SaaS公司内部AI模板工厂架构文档(含5类行业模板源码+性能压测报告)

更多请点击: https://intelliparadigm.com 第一章:AI模板批量生成的核心价值与落地全景 AI模板批量生成正从实验性工具演进为现代软件工程的关键基础设施。它通过语义理解、上下文感知与结构化约束,将重复性高、模式明确的代码/文档/配置生成…

2026/8/3 0:33:53阅读更多 →
如何快速找回消失的网页:Web Archives浏览器扩展终极指南

如何快速找回消失的网页:Web Archives浏览器扩展终极指南

如何快速找回消失的网页:Web Archives浏览器扩展终极指南 【免费下载链接】web-archives Browser extension for viewing archived and cached versions of web pages, available for Chrome, Edge and Safari 项目地址: https://gitcode.com/gh_mirrors/we/web-a…

2026/8/3 0:20:37阅读更多 →
3个让你工作效率翻倍的Umi-OCR实战技巧:免费离线文字识别完全指南

3个让你工作效率翻倍的Umi-OCR实战技巧:免费离线文字识别完全指南

3个让你工作效率翻倍的Umi-OCR实战技巧:免费离线文字识别完全指南 【免费下载链接】Umi-OCR OCR software, free and offline. 开源、免费的离线OCR软件。支持截屏/批量导入图片,PDF文档识别,排除水印/页眉页脚,扫描/生成二维码。…

2026/8/3 0:00:32阅读更多 →
[具身智能-181]:PC+服务器+具身机器人:构建具身智能从仿真到量产的闭环迭代混合架构

[具身智能-181]:PC+服务器+具身机器人:构建具身智能从仿真到量产的闭环迭代混合架构

PC服务器具身机器人:构建具身智能从仿真到量产的闭环迭代混合架构一、前言:具身智能需要“混合算力闭环系统”传统人工智能依赖云端静态数据集训练,不具备物理交互能力,无法适应真实世界的不确定性。具身智能(Embodied…

2026/8/3 0:00:32阅读更多 →
[具身智能-181]:大分布式通信模型对比:看懂为什么 DDS 是 ROS2 底层通信最优解

[具身智能-181]:大分布式通信模型对比:看懂为什么 DDS 是 ROS2 底层通信最优解

前言构建机器人、具身智能这类分布式实时系统,通信底座直接决定整套系统的实时性、容错性、组网能力。分布式领域长期存在 4 类经典通信架构:点对点模式、Broker 中间代理模式、广播模式、以数据为中心(DDS)模式。很多开发者疑惑&…

2026/8/3 0:00:32阅读更多 →
无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南:如何实现快速高效的多媒体处理 【免费下载链接】lossless-cut The swiss army knife of lossless video/audio editing 项目地址: https://gitcode.com/gh_mirrors/lo/lossless-cut 在数字媒体创作领域,视频编辑处理的质量损…

2026/8/3 2:32:59阅读更多 →
AI辅助本科论文写作:8大工具评测与高效使用指南

AI辅助本科论文写作:8大工具评测与高效使用指南

1. 本科生论文写作的AI辅助现状本科毕业论文是每个大学生必须跨越的一道坎。记得我当年写论文时,光是文献检索就花了整整两周时间,打印的参考文献堆满了半个书桌。如今AI技术的发展为学术写作带来了革命性变化,合理使用这些工具可以节省80%以…

2026/8/3 2:33:01阅读更多 →
如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手 【免费下载链接】ticket-purchase 大麦自动抢票,支持人员、城市、日期场次、价格选择 项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchase 还在为抢不到热门演唱会门票…

2026/8/3 2:33:04阅读更多 →