基於OpenCASCADE自制三維建模軟件(二)Open CASCADE

概述

Open CASCADE Technology(OCCT)是一個面向對象的C++類庫,用於快速開發設計領域的CAD/CAM/CAE應用程序。通常OCCT應用於開發處理計算機輔助設計(CAD)系統中的2D或3D幾何建模製造或分析應用仿真應用,甚至插圖工具
在這裏插入圖片描述
OCCT庫的設計具有模塊化和可擴展的特性,其提供的C++類有:

  • 基本數據結構(幾何建模、可視化、交互選擇和應用特定服務)
  • 建模算法
  • 處理網格數據
  • 數據與中間文件的互操作性(IGES, STEP)

C++類和其他類型被分組到中。包被組織成工具包(庫),我們可以將應用程序鏈接到其中。工具包被分成七個模塊,其結構如下圖所示:
在這裏插入圖片描述

一、基礎類(Foundation Classes)

基礎類模塊是所有其他OCCT類的基礎,包含高級Open CASCADE類使用的數據結構和服務:

  • 基本類型,如布爾、字符、整數或實數
  • 字符串類,處理ASCII和Unicode字符串的
  • 數據集類,處理靜態或動態大小的集合數據,如數組、列表、隊列、集和哈希表
  • 算法類,提供常用的數值算法和基本的線性代數計算
  • 物理量時間日期信息的基本類
  • 基本幾何類,提供定義和操作基本數據結構的基本幾何和代數實體的實現。
  • 異常處理類,對程序運行過程中產生的異常進行處理

基礎類提供各種通用服務,比如自動動態內存管理、集合、異常處理、通過向下轉型和插件創建。
基礎類包括以下內容:

1.1.根類(Root Classes)

根類是基本的數據類型和類,其它所有類都是依此而建立的。它提供以下類型和類:

  • 基本類型,如布爾型(Boolean)、字符型(Character)、整型(Integer)或實數(Real)等
  • 動態對象的安全處理,確保自動刪除未引用的對象
  • 可設置的內存優化管理器。提高了大量使用動態創建對象的應用程序的性能
  • 擴展的運行時類型識別機制,它有助於創建複雜的程序
  • 異常管理
  • C++流的封裝

根類主要在StandardMMgt 包中實現。

1.2.字符串(Strings)

字符串是基於ASCII和Unicode處理動態大小的字符序列的類。字符串也可以由句柄操作,因此可以共享。字符串在TCollection包中實現。

1.3.集合(Collections)

集合是處理動態大小的數據聚合的類。集合類是通用的,也就是說,它們定義了一種結構和算法,允許擁有多種對象,而不需要繼承於唯一跟類型,這與C++模板相似。當需要使用給定類型對象的集合時,必須對這個元素的指定類型進行實例化。一旦編譯了此聲明,所有基於這個通用集合的函數都可以在集合對象中實現。
集合包括廣泛的泛型類,如運行時大小的數組(arrays)、列表(lists)、堆棧(stacks)、隊列(queues)、集(sets )和哈希表(hash maps)。集合在TCollectionNCollection包中實現。

1.4.標準對象的集合(Collections of Standard Objects)

TColStd包使用Standard 包中的對象或TCollection包中的字符串,爲TCollection包中常用的通用類型提供實例化。

1.5。向量和矩陣(Vectors and Matrices)

向量和矩陣類提供了涉及向量和矩陣的常用數學算法和基本計算(加法、乘法、轉置、求逆等)。

1.6.基本幾何類型(Primitive Geometric Types)

基本幾何類型提供了基本幾何實體和代數實體的實現。這些實現符合STEP(Standard Exchange of Product data model,即產品數據模型的交換標準)。它們提供基本幾何Shape 的描述(點、向量、直線、圓與圓錐、平面與基本曲面、通過座標軸或座標系使Shape 在平面上或空間中定位)和Shape 幾何變換的定義與應用(平移、旋轉、對稱、縮放、複合變換、代數計算工具)。

1.7.常用數學算法(Common Math Algorithms)

常用數學算法爲那些經常使用的數學算法提供C++實現。這些包括:

  • 求解一組線性代數方程的算法
  • 求一元或多元函數的最小值的算法
  • 求解非線性方程或非線性方程組的算法
  • 求矩陣特徵值和特徵向量的算法

1.8.異常(Exceptions)

提供了常用異常類的層次結構,所有這些都基於異常的根類,Failure類。異常類描述了函數運行期間可能發生的異常情況。發生異常時,程序將不能正常運行。針對這種情況執行的操作稱爲異常處理。

1.9.數量(Quantities)

支持日期和時間信息的各種類,以及表示大多數物理量(如長度、面積、體積、質量、密度、重量、溫度、壓力等)的基本類型。

1.10.應用服務組件(Application services)

基礎類還包括一些低層服務的實現,這些服務可以使用Open CASCADE創建可定製的、用戶友好的應用程序。這些包括:

  • 單元轉換工具,爲處理數量和相關物理單元提供了統一的機制:檢查單元兼容性,及執行不同單元之間的值轉換,等等
  • 表達式的基本解釋器,便於創建自定義腳本工具,表達式的通用定義,等等
  • 處理配置資源文件和可自定義消息文件的工具,使應用程序更容易提供對多語言的支持
  • 進程指示和用戶中斷接口,甚至爲底層算法提供了一種通用和便利的方式與用戶通信的可能性

二、建模數據(Modeling Data)

建模數據提供數據結構來實現三維對象的邊界表示(BRep)。在BRep中,形狀表示爲拓撲中的幾何集合。幾何被理解爲一個形狀的數學描述,如曲線和曲面(簡單或標準,Bezier,NURBS等)。拓撲是將幾何對象綁定在一起的數據結構。
幾何類型和實例爲以下提供了幾何數據結構和服務:

  • 點、向量、曲線、曲面描述
  • 通過插值和近似建立參數曲線和曲面
  • 直接構造算法
  • 將曲線和曲面轉換爲NURBS形式
  • 二維和三維曲線上點座標的計算
  • 幾何對象間極值的計算

拓撲定義了簡單幾何實體之間的關係。形狀是一個基本的拓撲實體,可以分爲組件(子形狀):

  • 頂點——與點對應的零維形狀;
  • 邊——與曲線相對應的形狀,在每條邊上都有一個頂點;
  • 線——由頂點連接的邊緣序列;
  • 面——平面(二維)或曲面(三維)的一部分,由線包圍;
  • 外殼——由金屬線邊界的邊緣連接的面集合;
  • 實體——三維空間有限的封閉部分,以殼爲界;
  • 複合固體——由外殼邊界的面連接的固體的集合。

複雜形狀可以定義爲簡單形狀實體的集合。

三、建模算法(Modeling Algorithms)

建模算法模塊組被廣泛用於幾何建模的拓撲和幾何算法。在Open CASCADE中,基本上有以下算法:

  • 在實際設計中使用的高級建模例程
  • 作爲建模API基礎的底層數學支持函數
  • 底層幾何工具算法
  • 底層拓撲工具算法

頂級API提供以下功能:

  • 建模基本類型

    • 盒子
    • 棱鏡
    • 氣缸
    • 球體
    • 環面
  • 運動學建模

    • 棱柱
    • 旋轉
    • 管道
    • 放樣
      Shapes containing pipes with variable radius produced by sweeping
  • 布爾運算,它允許從源形狀的組合中創建新形狀。對於S1和S2兩種形狀:

    • 交集(Common) 包含S1和S2中的所有點
    • 並集(Fuse) 包含S1或S2中的所有點
    • 差集(Cut) 包含S1中所有不在S2中的點
  • 局部修改的算法,例如:

    • 挖空(Hollowing)
    • 成殼(Shelling)
    • 使用拔模角度創建錐形形狀
    • 在形狀邊緣上製作圓角和倒角的算法
  • 用於創建機械特徵的算法,即沿平面或旋轉表面的凹陷、前凸、擋邊和槽
    在這裏插入圖片描述

四、網格(Mesh)

網格模塊提供了處理三角形面片形式的對象的鑲嵌表示的功能。這個模塊包含:

  • 用於存儲與形狀相關的曲面網格數據的數據結構和處理這些數據的基本算法
  • 利用BRep對象構造三角曲面網格的數據結構和算法
  • 用於顯示與相關的預處理和後處理數據(標量或向量)的網格的工具

Open CASCADE包括兩個網格轉換器:

  • VRML轉換器將Open CASCADE的形狀轉換爲VRML 1.0文件(虛擬現實建模語言)。兩種表示模式是可能的:陰影模式(用網格算法計算的三角形集表示形狀)和線框模式(用曲線集表示形狀)
  • STL轉換器將Open CASCADE的形狀轉換爲STL文件。STL (STtereoLithography)格式廣泛應用於3D打印
    在這裏插入圖片描述

五、可視化(Visualization)

可視化模塊提供了從各種對象(形狀、網格等)創建圖形表示的現成算法。
在Open CASCADE Technology中,可視化是基於CAD數據的分離及其圖形表示。支持快速強大的交互選擇機制。
視圖提供從低級工具使用基本的幾何和拓撲(如NURBS可視化與控制點和節點,繪製等值線估計參數化的速度和質量,或邊緣呈現參數剖面)到高級工具實時高質量渲染的光線追蹤模型:陰影、反射、透明度、抗鋸齒等。
這裏有幾個例子:

  • 相機驅動的視圖投影和定位,能夠在透視、正投影和立體投影之間進行選擇
  • 實時光線跟蹤技術採用遞歸Whitted算法和有界體層次結構的有效優化結構
    Real time visualization by ray tracing method
  • 支持GLSL着色器。像任何其他OpenGL資源一樣,着色器管理是完全自動的。

Fragment shader implementing custom clipping surface

  • 支持標準和定製材料,由透明度,漫反射,環境和鏡面反射和折射率定義。後者允許實現透明材料,如玻璃,鑽石和水。
    Simulation of a glass cover
  • 能夠在三維視圖中靈活調整尺寸外觀。3D文本對象將給定的文本字符串表示爲模型空間中的真實3D對象。
    Display of shape cross-section and dimensions

六、標準的數據轉換(Data Exchange)

數據交換模塊與流行的數據格式互操作,依靠形狀癒合來提高不同廠商CAD軟件之間的兼容性;
數據交換允許開發基於OCCT的應用程序可以通過編寫和從外部數據讀取CAD模型來與其他CAD系統交互。不管外部數據的質量或對其內部表示的要求如何(例如數據類型、可接受的幾何誤差等),交換都可以順利地運行。
Shape imported from STEP
數據交換以模塊化的方式組織爲一組接口,這些接口符合各種CAD格式:IGES、STEP、STL、VRML等。該接口允許基於OCCT的軟件與各種CAD/PDM軟件包交換數據,保持了良好的互操作性。

  • 標準化的數據交換接口允許查詢和檢查輸入文件,將其內容轉換爲CAD模型,並對完全轉換後的形狀運行有效性檢查。目前支持以下格式。
    • STEP
    • IGES
    • VRML和STL網格
  • 擴展數據交換(XDE)允許轉換附加到幾何數據的附加屬性(顏色、層、名稱、材質等)。
  • 除了標準的數據交換接口外,高級數據交換組件也可用來支持與CAD軟件的互操作性和數據適配(也使用形狀修復),使用以下專有格式:
    • ACIS SAT
    • Parasolid
    • DXF

這些組件基於與使用STEP和IGES的接口相同的體系結構。

七、應用程序框架(Application Framework)

Open CASCADE Application Framework (OCAF)基於應用程序/文檔範式處理應用程序數據。它使用聯想引擎,簡化了CAD應用程序的開發,這要歸功於以下即時可用的功能和服務:

  • 管理應用數據的數據屬性,可以根據開發需求進行組織;
  • 數據存儲和持久性(打開/保存)
  • 修改和重新計算文檔中的屬性的可能性。使用OCAF可以很容易地表示模型中的修改歷史和參數依賴關係
  • 管理多個文檔的可能性
  • CAD/CAM/CAE應用程序通用的預定義屬性(例如存儲尺寸)
  • 撤消-重做和複製-粘貼功能

由於OCAF處理應用程序結構,所以唯一的開發任務是創建專用的數據和GUI。
OCAF在組織應用程序數據方面不同於任何其他CAD框架,因爲那裏的數據結構基於引用鍵而不是形狀。在模型中,形狀數據、顏色和材料等屬性被附加到一個不變的結構上,該結構比形狀更深。形狀對象成爲形狀屬性的值,就像整數號是Integer屬性的值,字符串是Name屬性的值一樣。
OCAF將這些屬性組織並嵌入到文檔中。OCAF文檔由OCAF應用程序管理。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章