因本人属于在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。

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

  1. 初探OSG+Opencascade在qt上的实践值获取模型颜色并在OSG中显示

    很久没有正式写过一篇博客,之前因为工作原因,致使个人项目一直停滞,在出差回来后,决定利用晚上的空闲时间重新对之前的知识进行梳理和补充,前版本中实现了如何利用opencascade读取stp模型,并显示 ...

  2. qt服务器获取formdata文件,QT上传(PUT)文件

    我正在使用QT将文件上传到Web服务器.QT上传(PUT)文件 curl -X POST -H 'Content-Type:multipart/form-data' -H 'Authorization ...

  3. 为MCU在Qt上运行Doom

    Running Doom on Qt for MCUs 为MCU在Qt上运行Doom Thursday April 28, 2022 by Åsa Forsell | Comments ​2022年4 ...

  4. 「seetaface2」中科院人脸识别引擎seetaface2在Linux Qt上的配置教程

    笔者的最新私人博客网站经过一段时间的努力,已经初期建设完毕,csdn上的博文会逐渐转移过去-- 欢迎访问呀- |=传=送=门=> 多多洛的博客 2016年,中科院山世光老师开源了其研发的seet ...

  5. QT上实现FTP传输

    QT上实现FTP传输 项目开发中,需要使用到FTP协议进行文件传输,现有QT自带的库中支持FTP传输的为 QNetworkAccessManager,虽然此类可以实现 Ftp 的上传/下载功能,但有的 ...

  6. QT上实现文件拖拽功能

    转自于QT上实现文件拖拽功能 声明dragEnterEvent和dropEvent事件函数,对窗口的拖拽行为进行处理 // 由MainWindow来截取拖拽事件 ①ui->lineEdit-&g ...

  7. 【记录】将QT上绘制的PRPD图谱转为vs+DUILIB绘制中遇到的问题

    这里写自定义目录标题 QT绘制PRPD 图谱转为vs+DUILIB绘制 总结 QT绘制PRPD 在Qt上先将图谱绘制到位图中,然后再将位图绘制到QWidget上,这样外部窗口变换大小都不会影响到图谱的 ...

  8. Qt Creator Qt快速最佳实践

    Qt Creator Qt快速最佳实践 Qt快速最佳实践 命名约定 规划用户界面 经济地使用组件 Qt快速最佳实践 以下准则描述了使用Qt Creator创建可在预期平台上完美运行的UI和场景的最有效 ...

  9. 阿里巴巴在应用性能测试场景设计和实现上的实践

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/yunqiinsight/article ...

  10. 多点生活在 Service Mesh 上的实践

    陈鹏 金融级分布式架构(antfin-sofa) 读完需要 20 分钟 速读仅需 5 分钟 Service Mesh Webinar 是由 ServiceMesher 社区和 CNCF 联合发起的线上 ...

最新文章

  1. 从此不再惧怕URI编码:JavaScript及C# URI编码详解
  2. YBTOJ:字符串匹配(KMP)
  3. excel 字符串拼接_Python|处理字符串
  4. qchart能绘制三维_诺斯顿三维测量:走进无人机倾斜摄影的世界
  5. 高度自定义的TabBarController 两个TableView之间的联动
  6. python动力学_用python学振动分析(一)
  7. LG V50救砖教程
  8. 一般现在时,主语为第三人称单数,例句说明
  9. labview中DAQ采集多个数据通道(温度传感器)(TTL信号的曲轴位置传感器)总结
  10. maven-assembly-plugin
  11. CSS网页布局中易犯的30个小错误
  12. Win7系统怎么获取administrator权限?获取administrator权限的方法
  13. 微信小程序云开发完整案例
  14. 基于51单片机GPS定位系统设LCD12864显示(程序+原理图+PCB+论文)
  15. MyData 白皮书:一种以人为本的个人数据管理北欧模式 | ArcBlock 博客
  16. 中国最能喝咖啡的城市,找到了
  17. 在两个数字之间求出其间所有质数
  18. 全国计算机一级及格率,计算机一级通过率高吗 怎样提高通过率
  19. 管理员身份获得 SYSTEM 权限的四种方法
  20. 工赋开发者社区 | MES与ERP/APS/PLM等的系统集成技术

热门文章

  1. mysql数据恢复或数据找回方法
  2. Redis实战(通俗易懂,超详细攻略) V2.0版本
  3. 基于JSP+Servlet校园二手交易平台
  4. python绘制缓和曲线_CAD绘制缓和曲线说明
  5. HTML中的表格和表单(含有示例代码)
  6. 中南大学计算机学院考研好考吗,中南大学or湖南大学:我考研选学校的心路历程...
  7. el-select 默认选中
  8. 8uftp是不是要保存,4步掌握8uftp保存密码的方法
  9. 华为HCNA之配置OSPF认证实验
  10. c语言数学追赶法编程,计算方法——C语言实现——追赶法求解非线性方程