Qt with OpenCascade

简介: Qt with OpenCascade eryar@163.com 摘要Abstract:详细介绍了如何在Qt中使用OpenCascade。 关键字Key Words:Qt、OpenCascade 一、引言 Introduction 1.1 Overview of Qt Qt是1991年奇趣科技开发的一个跨平台的C++图形用户界面应用程序框架。

Qt with OpenCascade

eryar@163.com

摘要Abstract:详细介绍了如何在Qt中使用OpenCascade。

关键字Key Words:Qt、OpenCascade

一、引言 Introduction

1.1 Overview of Qt

Qt是1991年奇趣科技开发的一个跨平台的C++图形用户界面应用程序框架。它提供给应用程序开发者建立艺术级的图形用户界面所需的所有功能。Qt很容易扩展,并且允许真正地组件编程。基本上,Qt同X Window上的Motif,Openwin,GTK等图形界面库和Windows平台上的MFC,OWL,VCL,ATL是同类型的东西。

Qt具有如下优点:

l 优良的跨平台特性:Qt支持下列操作系统:Microsoft Windows 95/98, NT, Linux, Solaris, SunOS, HP-UX, FreeBSD, SCO等;

l 面向对象:Qt良好的封装机制使得Qt的模块化程序非常高,可重用性较好,对于用户开发来说是非常方便的。Qt提供了一种称为signals/slots的安全类型来替代callback,这使得各个元件之间的协同工作变得非常简单;

l 丰富的API:Qt包含多达250个以上的C++类,还提供基于模板的collections, serialization, file, I/O device, directory management, data/time类。甚至还包括正则表达式的处理功能;

l 支持2D、3D图形渲染,支持OpenGL;

l 大量的开发文档;

l XML支持;

Qt按不同的版本进行发布:

n Qt商业版:提供给商业软件开发。它们提供传统商业软件发行版并且提供在协议有效期内的免费升级和技术支持服务。

n Qt开源版:仅为了开发自由和开放源码软件,提供了和商业版同样的功能。GNU通用公共许可证下,它是免费的。

2009年3月发布的Qt4.5起,NOKIA为Qt增添了开源LGPL授权选择。

1.2 Overview of OpenCascacde

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

l FoundationClasses

l ModelingData

l ModelingAlgorithms

l Visualization

l ApplicationFramework

l DataExchange

OCCT库提供如下功能:

l 2D和3D几何造型工具箱,可对任何物体造型;

n 创建基本图元,如prism,cylinder, cone, torus;

n 对实体进行布尔操作,addition, subtraction and intersection;

n 根据倒圆、倒角、草图拉伸出几何实体;

n 使用偏移offsets、成壳shelling、挖空hollowing和挤压sweeps构造几何实体;

n 计算几何实体属性,如表面积、体积、重心、曲率半径;

n 使用插值interpolation、逼近approximation、投影projection计算出几何体;

l 可视化功能提供对几何实体的显示、控制功能,例如:

n 三维旋转3D rotation;

n 缩放Zoom;

n 着色Shading;

l 程序框架提供如下功能:

n 将非几何数据与几何实体关联;

n 参数化模型;

n Java Application Desktop(JAD);

OCCT库是由Open CASCADE公司开发和市场运作的。库被设计成模块化和易扩展。

wps_clip_image-13969

Figure 1.1 OpenCascade架构图

二、Qt + OpenCascade

使用的开发工具为Qt Creator 2.7.0,Qt的版本为Qt 5.0.2。如下图所示:

wps_clip_image-31905

Figure 3.1 Qt and Qt Creator version Info

OpenCascade的版本为OpenCASCADE6.5.5,如下图所示:

wps_clip_image-23467

 

image

Figure 3.2 OpenCascade Version Info

在OpenCascade中创建三维场景的步骤分为:

1.Create attributes.

2.Create a 3D viewer.

3.Create a view.

4.Create an interactive context.

5.Create interactive objects.

6.Create primitives in the interactive object.

7.Display the interactive object.

详细说明请参考《Visualization User’s Guide》。下面结合程序代码进行说明。

1. Create attributes. 

略;

2. Create a 3D viewer. 

 

1  // Create a 3D viewer.
2     try
3     {
4         myGraphicDevice =   new Graphic3d_WNTGraphicDevice;
5     }
6     catch (Standard_Failure)
7     {
8         QMessageBox::critical( this , tr( " About occQt " ),
9             tr( " <h2>Fatal error in graphic initialisation!</h2> " ),
10             QMessageBox::Apply);
11     }
12 
13     myViewer =   new V3d_Viewer(myGraphicDevice, Standard_ExtString( " Visu3D " ));
14     myViewer -> Init();
15     myViewer -> SetDefaultLights();
16     myViewer -> SetLightOn();


3. Create a view.

1  // Create the view.
2  myView = theContext -> CurrentViewer() -> CreateView();

4. Create an interactive context.

1  // Create an interactive context.
2  myContext =   new AIS_InteractiveContext(myViewer);
3  myContext -> SetDisplayMode(AIS_Shaded);

5. Create interactive objects.

略;

6. Create primitives in the interactive object.

1  Handle_AIS_Shape aBox =   new AIS_Shape(MF.Shape());
2  Handle_AIS_Shape aCone =   new AIS_Shape(BRepPrimAPI_MakeCone( 50 , 30 , 80 ));
3  Handle_AIS_Shape aSphere =   new AIS_Shape(BRepPrimAPI_MakeSphere( 60 ));

7. Display the interactive object.

1  myContext -> Display(aBox);
2  myContext -> Display(aCone);
3  myContext -> Display(aSphere);

 

三、结论 Conclusion

编译过程中遇到一些问题,主要是头文件包含及库引用问题。需要对Qt工程文件做如下设置:

l 因为程序使用了QGLWidget,所以在其工程中要引用OpenGL的库。设置方法如下:QT += core gui opengl;

l 头文件目录的设置:INCLUDEPATH += D:\OpenCASCADE6.5.5\ros\inc;

l 引用库的设置:

1    LIBS += D:\OpenCASCADE6. 5.5 \ros\win64\vc11\libd\TKernel.lib
2    LIBS += D:\OpenCASCADE6. 5.5 \ros\win64\vc11\libd\TKMath.lib
3    LIBS += D:\OpenCASCADE6. 5.5 \ros\win64\vc11\libd\TKBRep.lib
4    LIBS += D:\OpenCASCADE6. 5.5 \ros\win64\vc11\libd\TKTopAlgo.lib
5    LIBS += D:\OpenCASCADE6. 5.5 \ros\win64\vc11\libd\TKPrim.lib
6    LIBS += D:\OpenCASCADE6. 5.5 \ros\win64\vc11\libd\TKService.lib
7    LIBS += D:\OpenCASCADE6. 5.5 \ros\win64\vc11\libd\TKV3d.lib
8    LIBS += D:\OpenCASCADE6. 5.5 \ros\win64\vc11\libd\TKFillet.lib

 

上述目录根据不同的计算机需要做相应修改。程序运行结果如下图所示:

wps_clip_image-18191

Figure 3.1 Sphere in occQt

image

Figure 3.2 Transformation in occQt

 

PDF Version and Sample Code: Qt with OpenCascade

相关实践学习
使用ROS创建VPC和VSwitch
本场景主要介绍如何利用阿里云资源编排服务,定义资源编排模板,实现自动化创建阿里云专有网络和交换机。
阿里云资源编排ROS使用教程
资源编排(Resource Orchestration)是一种简单易用的云计算资源管理和自动化运维服务。用户通过模板描述多个云计算资源的依赖关系、配置等,并自动完成所有资源的创建和配置,以达到自动化部署、运维等目的。编排模板同时也是一种标准化的资源和应用交付方式,并且可以随时编辑修改,使基础设施即代码(Infrastructure as Code)成为可能。 产品详情:https://www.aliyun.com/product/ros/
eryar
+关注
目录
打赏
0
0
0
0
28
分享
相关文章
Redis HyperLogLog: 高效统计大数据集的神秘利器
Redis HyperLogLog: 高效统计大数据集的神秘利器
199 1
Android Studio 制作聊天界面实践(Kotlin版)
Android Studio 制作聊天界面实践(Kotlin版)
873 0
Android Studio 制作聊天界面实践(Kotlin版)
速卖通获得aliexpress商品详情API接口的开发、应用与收益。
速卖通(AliExpress)作为阿里巴巴旗下的跨境电商平台,为全球消费者提供丰富商品。其开放平台提供的API接口支持开发者获取商品详情等信息,本文探讨了速卖通商品详情API的开发流程、应用场景及潜在收益,包括提高运营效率、降低成本、增加收入和提升竞争力等方面。
231 1
【专栏】二进制这一计算机科学基础,包括其概念历史、在计算机科学中的应用及与编程的联系
【4月更文挑战第28天】本文探索了二进制这一计算机科学基础,包括其概念历史、在计算机科学中的应用及与编程的联系。二进制作为基数为2的数制,由0和1构成,是计算机处理和存储数据的语言。从古代阴阳哲学到莱布尼茨的理论,二进制影响了现代计算技术。在硬件、数据存储、传输和处理中,二进制扮演关键角色。编程中,位运算和布尔逻辑基于二进制,理解二进制能优化代码和提升性能。掌握二进制知识,是理解数字世界的关键。
968 1
QT基础入门——QMainWindow与对话框QDialog(三)
QT基础入门——QMainWindow与对话框QDialog(三)
1047 0
QT基础入门——QMainWindow与对话框QDialog(三)
未来智能家居技术的发展趋势与应用前景
随着科技的不断进步,智能家居技术正以惊人的速度改变着我们的生活方式。本文将探讨未来智能家居技术的发展趋势,以及其在日常生活中的应用前景,为读者带来对未来生活的一瞥。
OAM 深入解读(一):OAM 为云原生应用带来哪些价值?
# 背景 OAM 是阿里巴巴联合微软在社区推出的一款用于构建和交付云原生应用的标准规范,之前我们已经发布过一系列介绍文章,为方便大家查阅,链接和介绍如下: * [《Open Application Model (OAM) 实践指南》](https://www.atatech.org/articles/155780):具体而详实的介绍了OAM方方面面的细节。 * [《给 K8s API
数据质量最佳实践(5):利用质量分和排行榜提升企业数据质量【Dataphin V3.12】
在数据质量最佳实践(3):通过质量治理工作台,实现质量问题的跟踪和处理这篇文章中,我们详细的介绍了如何通过治理工作台,对系统出现的一个一个具体质量问题进行治理。 但是对于企业整体的数据质量情况,我们该如何评估呢?以及如何寻找当前企业的数据质量短板,并有针对性的进行改进和提升呢? 在Dataphin V3.12版本中,质量新增了质量分的能力,可以给数据表和质量规则配置打分权重和打分方式,从而获得全局、数据源、项目、负责人、数据表等维度的质量打分评估,帮助CDO判断企业整体的数据质量情况和数据质量问题的分布,从而有针对性的提升企业整体的数据质量水平。
1063 1
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问