引言
特定平臺具有特定的系統特性.應用開發環境及系統運行環境,若想使編制好的軟件能夠運行在多個平臺上,需選用具備跨平臺開發程序的工具開發軟件.Qt是挪威TrollTech公司推出的一個跨平臺的C++圖形用戶界面庫,提供給應用程序開發者建立圖形用戶界面所需的所有功能.
使用“一次編寫,隨處編譯”的方式用于構建多平臺圖形用戶界面程序,使用單一的源代碼樹和簡單的重編譯,能夠在Windows,MacOS X,Linux,Solaris,HP-UX 和其他使用X11的Unix版本下編制程序.Qt完全面向對象且很容易擴展,它已經成為全世界范圍內數千種成功的應用程序的基礎,并為世界上數千個大公司,包括IBM.摩托羅拉和夏普等提供開發軟件.綜合以上因素,選擇Qt作為建模平臺的開發工具.
OpenCASCADE(Open Computer Aided Software forComputer Aided Design and Engineering) 是由法國的MDTV(Matra Datavision)公司設計開發的CAD 系統,于1999年開放源代碼.
OpenCASCADE 采用C++開發基于OpenGL 的專用快速開發的CAD 類庫,提供基本幾何體表達與操作.CAD 模型顯示與操作.多種CAD 文件格式讀取與保存等功能,可應用于CAD軟件開發.仿真軟件設計和三維圖形顯示等方面.
基于OpenCASCADE 進行CAD 系統開發,能夠將OpenCASCADE 類庫的二維和三維建模.布爾操作.可視化的特性及VC++程序實時性好的特點有效地結合,進行仿真應用等,因此選用它作為建模內核創建模型.
1 Qt 簡介
Qt類似于X Window上的Motif,Openwin,GTK等圖形界面庫和Windows 平臺上的MFC,OWL,VCL,ATL等,提供給應用程序開發者建立圖形用戶界面所需的所有功能,目前包括基于Framebuffer 的Qt Embedded.快速開發工具Qt Designer.國際化工具Qt Linguist 等部分.自1995 年以來QT/C++應用程序就在商業應用中占據核心地位.QT也是流行的Linux桌面環境KDE的基礎,KDE 是所有主要的Linux 發行版的一個標準組件.Qt支持的操作系統有Microsoft Windows 95/98,Mi-crosoft Windows NT,Linux.Solaris,SunOS,HP-UX,Digi-tal UNIX(OSF/1,Tru64),Irix,FreeBSD,BSD/OS,SCO,AIX,OS390,QNX等.Qt提取了窗口和操作系統的底層基礎構造函數,為軟件開發工程師提供了一致的邏輯界面,Qt API在所有支持的平臺上都是相同的.
Qt用C++語言實現,其良好封裝機制使得Qt的模塊化程度非常高,可重用性較好,對于用戶開發來說是非常方便的.還提供了一種稱為signals/slots的安全類型來替代callback,這使得各個元件之間的協同工作變得十分簡單[6].
Qt有一個圖形界面的所見即所得工具--Qt De-signer.根據這一工具可以任意構造需要的圖形界面,而且利用UIC工具將生成的UI文件轉換為CPP文件和H文件,使界面軟件部分和系統實現軟件部分融合到一起.
Qt Designer 提供了Qt 基本的可繪制窗口部件,比如QWidget,QLabel,QPushButton,QVBoxLayout 等.在設計器中通過鼠標直接拖放這些窗口部件,能夠高效.快速地實現GUI界面的設計,界面直觀形象,所見所得.
2 OpenCASCADE簡介
OpenCASCADE包括3D曲面和實體建模組件.可視化組件.數據交換組件和適合快速開發的應用程序開發框架,提供二維和三維幾何體的生成.顯示和分析,是一款可以用來進行計算機可視化的幾何內核,并且是開放源代碼的.OpenCASCADE提供了點.線.面.體和復雜形體的顯示和交互操作,經過深度開發后可實現紋理.光照.圖元填充.渲染等圖形操作和放大.縮小.旋轉.漫游.模擬飛行.模擬穿越等動態操作.OpenCASCADE定義了圖形數據的存儲格式以及大量的圖形算法,可以幫助開發人員快速地進行面向對象程序的開發.目前支持3種操作系統:Linux,Windows NT和Sun Solaris.
OpenCASCADE 由一系列的C++類構成,相關的類組織成包,包組織成庫文件,最后相關庫組織成模塊,通過有機組織的庫文件提供了基礎類.模塊數據管理.建模算法.模型的顯示.應用框架.數據交換6個模塊.
OpenCASCADE 還為用戶提供了OCAF(OpenCAS-CADE AppliCation Framework),它是一種基于Open- CASCADE的RAD(Rapid Applieation Development,快速開發工具)框架,是OpenCASCADE 類庫的輔助工具,在幾何建模過程中,不僅能處理用到的類庫里的任何數據和算法,還可以用于組織.保存應用數據,開發人員可以使用這一工具進行應用程序的快速開發.
3 OpenCASCADE建模技術
3.1 邊界表示法
OpenCASCADE是一個先進的.三維的.邊界表示(B-Rep)為主的幾何造型工具包,是由C++開發設計基于OpenGL的專用快速開發的CAD類庫,提供統一的數據結構,同時支持線框.CSG.B-Rep三種模型,并允許這個三種表示共存于統一的數據結構中.OpenCASCADE主要基于邊界表示法進行建模.邊界表示(BoundaryRepresentation)也稱為BR表示或B-rep表示,是三維實體建模在計算機內部的一種表達方式,即數據存放的邏輯結構.它是幾何造型中最成熟.無二義的表示法.物體的邊界是物體內外部點的分界面,一般用體表.面表.環表.邊表和頂點表5層描述.即實體的邊界由面的并集表示,每個面由它所在的曲面的定義加上其邊界來表示,面的邊界是邊的并集,邊由點來表示.
邊界表示法強調物體表面的細節,詳細記錄了構成物體形體的所有幾何元素的幾何信息及其相互間的聯接關系即拓撲信息,幾何信息與拓撲信息分開存儲,完整清晰,并能惟一定義物體的三維模型,缺點是對于不規則三維物體的描述不太方便.這一方法主要適用于三維空間操作和分析.
3.2 幾何和拓撲
在OpenCASCADE中,幾何體(Geometry).拓撲(To-pology)都是從最基礎的抽象類派生而來,所有的實體對象具有相同的功能,如實體本身的信息保存功能.自身復制功能以及調試功能等,這些功能均由類TopoDS來實現.幾何是指構成模型的純粹的幾何元素,如點(point).曲線(curve)和曲面(surface)等,拓撲是指模型各幾何實體之間的空間關系,幾何體及其拓撲關系構成了模型的基本空間結構.
OpenCASCADE 中存在兩種實現方法完全不同的幾何體類:構造幾何體和模型幾何體.構造幾何體是指那些具有幾何對象的數學定義的C++類;模型幾何體是指為構造幾何體增加模型操作功能的那些類,它的數據結構中含有指向構造幾何體類的指針,模型幾何體和模型保存在一起.
在邊界表示法中,描述形體的信息包括幾何信息(Geometry)和拓撲信息(Topology)兩個方面.一般說來,幾何信息描述形體的大小.尺寸.位置.形狀等,如邊的形狀.頂點的坐標等.拓撲信息描述形體上的頂點.邊.面的連接關系,形成物體邊界表示的“骨架”,幾何信息猶如附著在“骨架”上的肌肉.
3.3 數據類型
數據類型是作為類被實現的.依據處理方式的不同,OCC 中的數據類型可分為兩大類:通過值處理的數據類型和通過句柄(或引用)處理的數據類型.一個通過值處理的類型變量包含自己的實例;而另一個通過句柄處理的類型變量包含一個實例的引用.
3.3.1 值處理類型
值處理類型可分三大類:基本類型.枚舉類型和由這樣一些類(既不是由Standard_Persistent 類派生,也不是由Standard_Transient 類派生,直接派生或間接派生)定義的類型.基本類型如表1所示.
值處理類型的表現形式比句柄處理類型的表現形式更直接.因此操作也會更快.但是這一類型對象不能單獨存于文件中,那些能被數據模式識別(包括基本類型和從Storable 類繼承過來的類型)的值處理類型可以作為持久對象的部分結構而存儲在持久對象內部,這也是值處理類型對象能夠存進文件的惟一方式.
3.3.2 句柄處理類型
句柄處理類型可以分為兩大類:由Persistent 類的派生類定義的類型和由Transient 類的派生類定義的類型.
OCC 的引用管理采用的是一種句柄機制.這種機制的基本元素是句柄.在OCC 中,句柄是通過類實現的.句柄含有多個接口成員,其中一個包含一個引用,一般僅使用它的引用.與C++指針一樣,幾個句柄可以引用同一個對象,一個句柄也可以引用多個對象,但是每次只能引用一個.在句柄訪問對象前,句柄必須被聲明[14].
3.4 OCC的數據結構
數據結構指的是數據元素之間的相互關系,尤其是數據的邏輯結構.選擇數據結構的主要依據就是數據的邏輯結構.
OCC 擁有一個建模數據模塊,也稱數據結構模塊,主要為二維和三維幾何模型提供數據結構.數據結構模塊由4個工具箱組成:幾何工具.二維幾何.三維幾何和拓撲.
3.4.1 二維幾何數據結構
二維幾何數據結構定義了二維空間上幾何對象的數據結構,主要由Geom2d包提供,Geom2d 包提供了比gp 包更大范圍的對象.這些對象是非持久的,并且是通過引用處理的.
如果需要的對象不是單一的,而是一系列的,那么TColGeom2d 包(用來處理這類對象的集合容器)可以提供必要的功能.特別地,該包為通用類中那些標準的和經常使用的實例化提供幾何對象.
TColGeom2d 包為來自Geom2d 包的曲線提供一維數組.二維數組和序列的實現,所有這些對象能以句柄和數值兩種不同的方式處理.TopAbs 包提供通用枚舉類,用來描述拓撲學基本概念和處理枚舉類的方法,不包含具體類.
TopAbs 定義了3 個概念:拓撲類型( 由Top-Abs_ShapeEnum 類描述).拓撲方向(由TopAbs_Orienta-tion 類描述)和拓撲狀態(由TopAbs_State 類描述).
3.4.2 三維幾何數據結構
三維幾何對象的數據結構主要由Geom 包提供.
Geom 包包含了所有的基本幾何轉換(如等價.旋轉.平移.鏡像.縮放和復合變換等).另外,Geom 包也提供了一些基于幾何對象引用定義的特殊函數(如在B 樣條曲線上增加一個控制點,對曲線進行改善等).
Geom 包中所有幾何實體都是以STEP 方式處理的,包中可實現的非持久的通過句柄處理的對象有:點.笛卡爾點.向量.方向具有幅值的向量.軸.曲線.直線.圓錐.圓.橢圓.雙曲線與拋物線.基本曲面.平面.邊界曲線與邊界曲面.裁剪曲線與裁剪曲面.非均勻有理化B 樣條曲線與曲面.Bezier 曲線與曲面.圓柱面.球面與螺旋面.掃描曲面.線性擠壓曲面.旋轉曲面.偏移曲面.
3.4.3 拓撲數據結構
OCC 使用TopoDS 包描述了拓撲數據結構.To-poDS 包提供了兩套類:一套由TopoDS_Shape(與TopoAbs 包中列出的標準拓撲Shape 一致)派生;另一套由下層Shape(既沒有拓撲方向也沒有位置)派生.
OCC 描述了參數空間對象的數據結構.這些描述用到了定位和限制.可以由這些術語描述的Shape 的類型有:頂點.面和Shape.頂點依據參數空間位置來定義,面和Shape 依據空間的限制來定義,可以將上述簡單Shape 組成集.例如,一個邊集形成一個線框;一個面集形成一個殼;一個實心體集形成一個組合實心體.
也可以將不同類型的Shape 組成一個復合體,并為一個Shape 指定拓撲方向和位置.依據Shape 的復雜程度,從頂點到組合實心體依次將Shape 列出來,這樣能方便地知道一個Shape 是由哪些簡單Shape 組成的.事實上,這就是TopoDS 包的意圖.TopoDS_Shape 類描述了Shape 的引用.它包含一個指向下層抽象Shape 的引用.一個拓撲方向和一個引用坐標.該類是通過數值處理的,不能被共享.描繪下層Shape 的類從不被直接引用,而是通過TopoDS_Shape 類被間接引用.
3.5 建立幾何體的相關包
在創建一個幾何對象前,必須知道這個對象是2D的還是3D 的,以及將如何使用這個對象.下面簡述基本幾何類型中主要的幾個包.gp 包為二維和三維對象提供了一些通過值處理的類,定義了一些基本的非持久幾何實體,這些實體在二維和三維的代數計算和基本幾何結構分析中用到.gp 包可以建立的幾何實體有:
二維和三維直角坐標(x,y,z).矩陣.笛卡爾點.向量.方向.軸.直線.圓.橢圓.雙曲線.拋物線.平面.無窮圓柱曲面.球面.螺旋面和圓錐面;它也提供了一些基本的幾何轉換,如等價.旋轉.平移.鏡像.縮放.復合變換等.
BRepPrimAPI包可以構建立方體.圓柱體.球體.圓臺.楔形體.圓環.旋轉體和拉伸體等幾何實體;BRepAlgoA-PI包提供用布爾運算來建立新的模型;BRepBuilderAPI包能夠建立點.邊.線框.面.殼.實體.組合實體等;BRepFilletAPI包可實現對實體進行倒角.圓角等操作.
4 結語
Qt 是一個使用廣泛的跨平臺圖形界面開發工具,可用于Windows,Linux,Mac OSX 和許多平臺.它具有靈活的面向對象的結構.清晰的文檔以及直觀的API,針對同功能的程序能夠運行在不同的系統平臺,并保持一致的界面和功能,較好地增強了程序的靈活性和可移植性,為開發跨平臺桌面應用程序的人機交互界面提供了良好的支持.OpenCASCADE 提供了多種包建立基本和復雜幾何模型.
在Visual C++環境下結合Qt 和OpenCASCADE 類庫能夠開發出跨平臺的幾何建模程序,建立不同復雜程度的幾何模型,可以作為相關數值計算軟件的建模模塊.
-
CAD
+關注
關注
17文章
1081瀏覽量
72367 -
C++
+關注
關注
22文章
2104瀏覽量
73502
發布評論請先 登錄
相關推薦
評論