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

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條評論
主站蜘蛛池模板: 红色一级毛片 | 成人免费一级毛片在线播放视频 | 亚洲成人高清 | 成人免费毛片网站 | 国产精品一区二区手机看片 | 高h粗大强行撑开紧窄的嫩缝 | 福利视频免费观看 | 欧美综合网站 | 高清不卡免费一区二区三区 | 青青久久久国产线免观 | 欧美成人怡红院在线观看 | 亚洲欧洲日韩国产一区二区三区 | 亚欧毛片基地国产毛片基地 | 欧美国产一区二区三区 | www.黄色在线| 玖玖在线资源站 | 永久福利视频 | 2020久久精品永久免费 | 国产成人综合洲欧美在线 | 亚洲黄色大片 | 可以免费观看的毛片 | 手机看片在线精品观看 | 黄色生活毛片 | 亚洲视频手机在线观看 | 国产精品亚洲专区在线播放 | 天天射天天添 | 成人综合久久精品色婷婷 | 久久亚洲国产中v天仙www | 久久精品国产91久久麻豆自制 | 久久大香伊蕉在人线国产昨爱 | 久久经典免费视频 | 日韩成人免费视频 | 国产精品免费久久久免费 | 国产成人啪午夜精品网站男同 | 呦系列视频一区二区三区 | 91精品国产91久久久久久青草 | 97精品一区二区三区在线不卡 | 国产香港特级一级毛片 | 日韩精品欧美亚洲高清有无 | 免费播放国产一级 | 性大特级毛片视频 |