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很容易扩展,并且允许真正地组件编程。基本上,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公司开发和市场运作的。库被设计成模块化和易扩展。

Figure 1.1 OpenCascade架构图

二、Qt + OpenCascade

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

Figure 3.1 Qt and Qt Creator version Info

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

 

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

 

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

Figure 3.1 Sphere in occQt

Figure 3.2 Transformation in occQt

 

PDF Version and Sample Code: Qt with OpenCascade

Sample Code for OpenCascade6.7.1: Qt with OpenCascade

OpenCASCADE6.8.0&Qt5.4:

github: https://github.com/eryar/occQt/

 

时间: 2024-11-03 15:40:07

Qt with OpenCascade的相关文章

A Simple OpenCASCADE Qt Demo-occQt

A Simple OpenCASCADE Qt Demo-occQt eryar@163.com Abstract. OpenCASCADE have provided the Qt samples in the samples directory, but they are a little complicated. So I decide write a simple OpenCASCADE Qt demo for the OpenCASCADE beginners.  Key Words.

OpenCascade 6.7.1 and Qt 5

OpenCascade 6.7.1 and Qt 5 eryar@163.com   Keywords: OpenCascade 6.7.1, Qt5, Demo   从OpenCascade6.7.0开始图形显示的初始化部分有较大改动,将原来给出的一个关于Qt的最简单的例子程序升级到最新版本: Qt with OpenCascade: http://www.cppblog.com/eryar/archive/2013/08/18/202617.html   Qt的版本还是原来的,OpenCas

OpenCASCADE Outline

OpenCASCADE Outline eryar@163.com      有网友反映blog中关于OpenCASCADE的文章比较杂乱,不太好找,最好能提供一个大纲,这样方便查找.于是决定将这些学习时写的文章整理下,方便对OpenCASCADE的学习理解.其实在http://www.cnblogs.com/opencascade中,已经将文章按目录重新发表了一遍.可以按OpenCASCADE的模块的顺序来学习,也可以挑选自己感兴趣的部分来学习.      由于本人水平所限,文中的错误不妥之处

Use Qt in Debian for OpenCASCADE

Use Qt in Debian for OpenCASCADE eryar@163.com Recently several OpenCASCADE enthusiasts want to build my simple Qt demo about OpenCASCADE on ubuntu system, but could not compile it successfully. Because I only compiled the occQt in Windows system, do

FreeType in OpenCASCADE

FreeType in OpenCASCADE eryar@163.com Abstract. FreeType is required for text display in the 3D viewer. FreeType is a software font engine that is designed to be small, efficient, highly customizable, and portable while capable of producing high-qual

Undo/Redo for Qt Tree Model

Undo/Redo for Qt Tree Model eryar@163.com Abstract. Qt contains a set of item view classes that use a model/view architecture to manage the relationship between data and the way it is presented to the user. The separation of functionality introduced

Hello World of OpenCascade

Hello World of OpenCascade eryar@163.com 摘要Abstract:以一个经典的Hello World程序为例开始对开源几何造型内核OpenCascade的学习. 关键字Key Words:OpenCascade.Qt.Hello World 一.引言 Introduction OpenCascade编译成功后,看着大量的代码,无从下手.本文以Hello World程序为例,详细说明使用OpenCascade进行编程需要注意的事项,以便对OpenCascade

Qt Undo Framework Demo

Qt Undo Framework Demo eryar@163.com Abstract. Qt's Undo Framework is an implementation of the Command Pattern, for implementing undo/redo functionality in applications. The Command pattern is based on the idea that all editing in an application is d

OpenCASCADE 的安装与编译

OpenCASCADE的安装与编译 The Installation and Compilation of OpenCASCADE eryar@163.com 一.安装OpenCASCADE 可以从OpenCASCADE的官网上下载其安装包,可以选择最新的版本,下载网址为: http://www.opencascade.org/getocc/download/loadocc/ .如果只用其库来编程已经够了,安装好下载的安装包即可.若想对其进行调试,必须先把它编译成功.想编译通过,必须下载第三方库