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

20 篇文章 35 订阅

因本人属于在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,可以参考小胖七少爷老师的这篇:解析OCC(TopoDS_Edge、Geom_Surface、TopoDS_Shape),生成OSG节点_occ 节点-CSDN博客,读取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。

评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值