摘要Abstract:詳細介紹瞭如何在Qt中使用OpenCascade。 正則表達式
關鍵字Key Words:Qt、OpenCascade shell
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,這使得各個元件之間的協同工做變得很是簡單; app
l 豐富的API:Qt包含多達250個以上的C++類,還提供基於模板的collections, serialization, file, I/O device, directory management, data/time類。甚至還包括正則表達式的處理功能; 框架
l 支持2D、3D圖形渲染,支持OpenGL; ide
l 大量的開發文檔; 模塊化
l XML支持; 工具
Qt按不一樣的版本進行發佈:
n Qt商業版:提供給商業軟件開發。它們提供傳統商業軟件發行版而且提供在協議有效期內的免費升級和技術支持服務。
n Qt開源版:僅爲了開發自由和開放源碼軟件,提供了和商業版一樣的功能。GNU通用公共許可證下,它是免費的。
2009年3月發佈的Qt4.5起,NOKIA爲Qt增添了開源LGPL受權選擇。
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 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.
// Create a 3D viewer. try { myGraphicDevice = new Graphic3d_WNTGraphicDevice; } catch (Standard_Failure) { QMessageBox::critical(this, tr("About occQt"), tr("<h2>Fatal error in graphic initialisation!</h2>"), QMessageBox::Apply); } myViewer = new V3d_Viewer(myGraphicDevice, Standard_ExtString("Visu3D")); myViewer->Init(); myViewer->SetDefaultLights(); myViewer->SetLightOn();
3. Create a view.
// Create the view. myView = theContext->CurrentViewer()->CreateView();
4. Create an interactive context.
// Create an interactive context. myContext = new AIS_InteractiveContext(myViewer); myContext->SetDisplayMode(AIS_Shaded);
5. Create interactive objects.
略;
6. Create primitives in the interactive object.
Handle_AIS_Shape aBox = new AIS_Shape(MF.Shape()); Handle_AIS_Shape aCone = new AIS_Shape(BRepPrimAPI_MakeCone(50, 30, 80)); Handle_AIS_Shape aSphere = new AIS_Shape(BRepPrimAPI_MakeSphere(60));
7. Display the interactive object.
myContext->Display(aBox); myContext->Display(aCone); myContext->Display(aSphere);
編譯過程當中遇到一些問題,主要是頭文件包含及庫引用問題。須要對Qt工程文件作以下設置:
l 由於程序使用了QGLWidget,因此在其工程中要引用OpenGL的庫。設置方法以下:
QT += core gui opengl;
l 頭文件目錄的設置:
INCLUDEPATH += D:\OpenCASCADE6.5.5\ros\inc;
l 引用庫的設置:
LIBS += D:\OpenCASCADE6.5.5\ros\win64\vc11\libd\TKernel.lib LIBS += D:\OpenCASCADE6.5.5\ros\win64\vc11\libd\TKMath.lib LIBS += D:\OpenCASCADE6.5.5\ros\win64\vc11\libd\TKBRep.lib LIBS += D:\OpenCASCADE6.5.5\ros\win64\vc11\libd\TKTopAlgo.lib LIBS += D:\OpenCASCADE6.5.5\ros\win64\vc11\libd\TKPrim.lib LIBS += D:\OpenCASCADE6.5.5\ros\win64\vc11\libd\TKService.lib LIBS += D:\OpenCASCADE6.5.5\ros\win64\vc11\libd\TKV3d.lib LIBS += D:\OpenCASCADE6.5.5\ros\win64\vc11\libd\TKFillet.lib
上述目錄根據不一樣的計算機須要作相應修改。程序運行結果以下圖所示:
Figure 3.1 Sphere in occQt
PDF Version and Sample Code: Qt with OpenCascade