当前位置:   article > 正文

初探OSG+OpenCascade(简称:OCC)在QT上的实践_osg occt

osg occt

因本人属于在OCC以及OSG领域是小白水平,因此文章可能存在错误的地方,恳请指正。

因为对几何建模比较有兴趣,而且受身边的人的影响,所以利用晚上和周末的时间写了一个简单的基于QT5+OCC7.0+OSG3.4的初级3D CAD(准确来说不算CAD,算是3D模型查看器)。

主要功能有: 读取3D文件,如图:

视角切换、按住滚轮拖动模型、放大缩小、视觉样式显示、导出文件功能。其他操作在接下来可以具体看见。

首先看下我的软件界面:

我对QT并熟悉,虽然我比较熟悉C++  以及 MFC,但是还是比较欣赏QT的精美界面。我把这个查看器命名为OCCAD,,软件打开是如上图的样式,我采用的是QT MDI的多文档操作,每新增一个文档就新增一个显示窗口,先来看下新建窗口是怎么样的:

 关于OSG怎么嵌入QT窗口,我想在网上也是有很多参考的文章,这里就不多说了,关于怎么实现右下角的坐标系,我推荐参考图形码农老师的这篇文章:https://blog.csdn.net/wang15061955806/article/details/49617055,我的就是参考这个实现的,具体实现的代码是:

因为OSG自己能读取很多图形文件,比如OBJ,STL,OSG等等。但是不能直接读取STP/STEP,IGS/IGES等文件,因此可以利用OCC接口读取这些文件的几何数据,然后离散化显示到OSG中,比如读取IGS文件可以这么写:

关于函数BuildShapeMesh,可以参考小胖七少爷老师的这篇:https://blog.csdn.net/weixin_43712770/article/details/100973602,读取STP文件也是类似的,都是使用了这个BuildShapeMesh函数,这个小程序还实现了视角切换功能,如图:

部分视角参考如下:

五个文件中的模型是同一个模型,因为OSG支持导出OBJ,STL,OSG,所以我也把这个现有的导出写了下。顺便提下QT多文档的窗口切换是使用了QSignalMapper,如图:

自动添加菜单项,点击能实现正常的窗口切换,数字7/8/9/10...初步设定为快捷方式没因为0-6被用于视图切换。

继续聊下显示的模式,我实现了6种: 有2中是针对OBJ,STL文件的,具体效果如图:

关于如何针对IGS和STEP文件显示模型的线框模式,核心代码如下:

BuildPolyLineMesh函数就是遍历模型的所有的EDGE,我是参考的eryar老师的代码,并做了一些小修改。具体为:

导出功能目前直接用的OSG自带的,暂时没有添加新的处理,导出函数是osgDB::writeNodeFile。

后续功能我将进一步探索,目标是实现一个简易CAD,如有错误,请及时联系我修改: QQ:1623451686。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/601045
推荐阅读
相关标签
  

闽ICP备14008679号