OpenCasCade的撤销和重做机制

来源:互联网 发布:为什么要云计算 编辑:程序博客网 时间:2024/06/05 05:47

        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:第一次写技术博客,语言不通顺,表达不清楚,各位见笑了~~