OpenCasCade的撤销和重做机制

        Open CASCADE(简称OCC)平台是由法国Matra Datavision公司开发的CAD/CAE/CAM软件平台,可以说是世界上最重要的几何造型基础软件平台之一。开源OCC对象库是一个面向对象C++类库,用于快速开发设计领域的专业应用程序。OCC主要用于开发二维和三维几何建模应用程序,包括通用的或专业的计算机辅助设计CAD系统、制造或分析领域的应用程序、仿真应用程序或图形演示工具。OCC通过有机组织的C++库文件提供了六个模块。可视化模块作为OCC的核心部分,是可视化技术的具体体现。

        本文讲述用OpenCasCade开发CAD软件的建模过程中如何利用OCC本身的数据框架实现撤销和重做的机制,OCC提供的应用程序框架OCAF(OpenCasCade Application FrameWork)已经为用户提供了一个完整的撤销和重做的机制,这个机制由TDocStd_Document,也就是OCC称之为数据框架的一个文档类来提供的。在生成一个模型,比如一个三维的坐标点(gp_Pnt)时,我们向数据框架请求保存了这个三维点的名字,编号(此编号表示该三维点的索引),和x,y,z三个坐标的数据,以及功能属性和显示属性,要实现撤销和保存所有的这些数据的保存都应该开始于调用TDocStd_Document::NewCommand()函数而结束于TDocStd_Document::CommitCommand()函数,这两个函数记录了应用程序向OCC数据框架插入数据或者修改数据的历史,当我们发现生成的模型有误时,我们想返回上一步的创建,只要在应用程序的框架里调用TDocStd_Document::Undo()之后提交撤销TDocStd_Document::CommitCommand()就能实现撤销上一次CommitCommand()提交给OCC的数据插入或者数据修改操作了。有了这个机制,在我们的建模过程中把所有建模产生的模型边界数据都提交给OCC的数据框架来管理,并且在没一部细化的创建过程中实现撤销和重做。在用户需要模型数据进行处理时才从数据框架中取出数据组织处理,这样就省去了一开始自己保存模型数据然后在建模的过程中还要自己实现自己保存的那部分数据的撤销和重做机制,简化了建模的过程,提高了管理应用程序管理数据的可靠性。当然这其中也有天生不足的地方,那就是OCC的数据框架保存的都是永久存在的数据,不能对标签进行删除操作,所以为了自己在OCC的数据框架里实现模型数据的删除,就要对标签进行是否可用的标记。


截图(撤销后在数据框架中北标记为不可用的数据)

       ps:第一次写技术博客,语言不通顺,表达不清楚,各位见笑了~~

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: OpenCASCADE和QT是两个不同的软件,各自有自己的安装和配置过程。引用中提到了安装OpenCASCADE和QT的步骤,需要下载对应的安装包并按照提示进行安装。安装完成后,你可以在相应的路径下找到安装文件和文档。另外,引用提供了一些在网上发布的教程和解决方案,可以帮助你解决配置过程中可能遇到的问题。引用中的内容可能是一个QT项目的示例代码或配置信息。若你有关于OpenCASCADE和QT的具体问题,请提供更多详细信息,我将尽力帮助你。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [opencascade + QT5 开发环境设置(Windows系统下)](https://blog.csdn.net/kalimodor/article/details/127697828)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [【三维可视化Qt+OPEN CASCADE-001】傻瓜式配置——可在Qt creator下运行github例程](https://blog.csdn.net/mrliu0515/article/details/118726236)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值