亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Qt with OpenCascade

系統 2083 0

Qt with OpenCascade

摘要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

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);
    

?

三、結論 Conclusion

編譯過程中遇到一些問題,主要是頭文件包含及庫引用問題。需要對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
    

上述目錄根據不同的計算機需要做相應修改。程序運行結果如下圖所示:?

wps_clip_image-18191

Figure 3.1 Sphere in occQt?

?

PDF Version and Sample Code: Qt with OpenCascade

Qt with OpenCascade


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产精品视频观看 | 热久在线 | 四虎影院最新 | 亚洲日本欧美产综合在线 | 福利姬在线精品观看 | 日韩精品一区二区三区中文精品 | 97在线视频99播放 | 久久国产成人精品国产成人亚洲 | 国产精品亚洲综合色区韩国 | 欧美日韩国产综合一区二区三区 | 在线a亚洲视频播放在线观看 | 成人午夜看片在线观看 | 免费福利视频在线观看 | 亚洲精品综合久久 | 国产精品原创巨作无遮挡 | 久久久国产精品va麻豆 | 国产图片综合 | 亚洲精品99久久久久中文字幕 | 欧美一级一极性活片免费观看 | 91在线视频免费 | 四虎国产精品永久地址51 | 8x在线永久成人影院 | 亚洲国产综合自在线另类 | 92在线视频 | 国产激情自拍视频 | 欧美日本视频在线观看 | 欧美日韩一区二区三区麻豆 | 国产农村妇女一级毛片 | 亚洲视频在线不卡 | 国产成人免费网站在线观看 | 亚洲精品国产手机 | 日本精品一区二区三区在线观看 | 四虎免费在线 | 成人免费黄色 | 精品欧美一区手机在线观看 | 亚洲欧美在线中文字幕不卡 | 日韩深夜| 69日本人xxxx16-18 | 久久久精品久久久久久久久久久 | 男人的天堂在线视频 | 亚洲人成依人成综合网 |