Open CASCADE Technology(簡稱OCCT)
longlongway2012@hotmail.com 2020/11/05
一、概述
Open CASCADE是由法國Matra Datavision公司開發的CAD/CAE/CAM軟體平臺,具有3D曲面和物體建模功能的CAD資料交換和可視化提供服務的 開源軟體開發平臺,OCCT主要以C++類別庫形式對外提供功能包,并支持c#、Tcl、java等語言擴展,同時支持跨平臺軟體開發部署,包括Windows (IA-32和x86-64),Linux(x86-64),OS X / macOS(x86-64),Android(armv7和x86)和iOS(armv7,arm64)平臺,
OCCT主要涵蓋3D建模(CAD),制造/測量(CAM)或數值模擬(CAE)領域,可以開發二維和三維幾何 建模應用程式,包括通用的或專業的計算機輔助設計CAD系統、制造或分析領域的應用程式、仿真應用 程式或圖形,
二、OCCT組件包
OCCT旨在實作真正的模塊化和可擴展性,主要提供以下C++類別庫:
- 基礎資料結構(幾何建模,可視化,互動式選擇和特定于應用程式的服務);
- 建模演算法
- (多面)網格資料處理
- 基于自由格式(IGES,STEP)的資料互操作
OCCT庫可以總結為七大模塊以及測驗工具Draw:
- 基礎類別庫模塊(Foundation Classes)是所有其他OCCT類別庫的基礎,
- 建模資料模塊(Modeling Data)提供資料結構,以將2D和3D幾何圖元及其組成表示為CAD模型,
- 建模演算法模塊(Modeling Algorithms)包含大量的幾何和拓撲演算法;
- 網格模塊(Mesh)實作物件的細分表示;
- 可視化模塊(Visualization)為圖形資料表示提供了復雜的機制;
- 資料交換模塊(Data Exchange)可以與流行的資料格式進行互操作,并依靠Shape Healing來改善不同供應商的CAD軟體之間的兼容性;
- 應用框架模塊(Application Framework)提供了即用型解決方案,用于處理特定于應用程式的資料(用戶屬性)和常用功能(保存/還原,撤消/重做,復制/粘貼,跟蹤CAD修改等),
此外,Open CASCADE Test Harness(也稱為Draw)為該庫提供了一個入口點,并且可以用作其模塊的測驗工具,
基礎模塊
基礎模塊包含資料結構和服務組件所需的高層次抽象類,主要有:
- 基本型別,如布爾,字符,整數或實數;
- ASCII和Unicode字串和字串類處理;
- 收集類,用于處理靜態或動態調整大小的資料聚合,如陣列,串列,佇列,幾何和哈希表;
- 提供常用資料演算法和基礎線性代數計算(加法,乘法,向量和矩陣變換,求解線性代數系統等)
- 代表實物數量和支持日期和時間資訊的基本型別;
- 基本幾何型別提供定義和操縱基本資料結構的基本幾何和代數物體的實作;
- 描述例外情況的例外類,當程式正常執行被放棄時,
此模塊還提供各種通用服務,例如:
- 安全處理動態創建的物件,確
- 安全處理動態創建的物件,確保自動洗掉未參考的物件(智能指標);
- 可配置的優化記憶體管理器,提高了密集使用動態創建物件的應用程式的性能;
- 擴展的運行時型別資訊(RTTI)機制維護完整的型別層次結構,并提供對其進行迭代的方法;
- C++流的封裝;
- 通過特定的分配器自動管理堆記憶體;
- 運算式的基本解釋器,有助于創建定制的腳本工具,運算式的通用定義等;
- 用于處理配置資源檔案和可自定義的訊息檔案的工具,有助于在應用程式中提供多語言支持;
- 進度指示和用戶中斷界面,甚至使低級演算法也有可能以通用且方便的方式與用戶通信;
建模資料
建模資料提供用于3D物件的邊界表示(BRep,全稱:boundary representation)的資料結構,
在BRep中,形狀表示為拓撲內幾何體的集合,幾何形狀應理解為形狀的數學描述,例如曲線和曲面(簡單或規范,貝塞爾曲線,NURBS等),拓撲是將幾何物件系結在一起的資料結構,
幾何型別和實用程式為以下各項提供幾何資料結構和服務:
- 點,向量,曲線和曲面的描述:
- 使用軸或坐標系將其定位在3D空間中
- 通過應用平移,旋轉,縮放及其組合變換幾何體
- 通過差值和逼近創建引數曲線和曲面;
- 直接構造演算法;
- 將曲線和曲面轉換為NURBS形式;
- 計算2D和3D曲線上的點坐標;
- 計算幾何物件之間的極值,
拓撲定義了簡單幾何物體之間的關系,形狀是基本的拓撲物體,可以分為多個分量(子形狀):
- 頂點-一種零維形狀,對應于幾何中的點;
- 邊-對應于曲線的形狀,在每一個由頂點包圍的末端;
- 線框-一系列由頂點連接的邊;
- 面-部分(二維)平面或者(三維)表面,被一個閉合線框約束;
- 殼-線框邊界線的邊連接的面的集合
- 物體-與一個殼系結的三維空間的一部分
- 復合物體-物體的集合
可以將復雜形狀定義為簡單物體的組合,
建模演算法
建模演算法模塊將幾何建模中使用的各種拓撲和幾何演算法分組,基本上,Open CASCADE Technology中有兩組演算法:
- 實際設計中使用的高級建模例程;
- 低級數學支持功能用作建模API的基礎;
- 低級幾何工具提供以下演算法:
- 計算兩條曲線,曲面或一條曲線與一個曲面的交點;
- 將點投影到2D和3D曲線上,將點投影到曲面上,將3D曲線投影到曲面上;
- 根據約束構造直線和圓;
- 根據約束(插值,逼近,蒙皮,間隙填充等)構造自由形式的曲線和曲面;
- 低級拓撲工具提供以下演算法:
- 棋盤形形狀;
- 檢查形狀的正確定義;
- 確定形狀的區域和全域特性(導數,慣性特性等);
- 執行仿射變換;
- 查找邊緣所在的平面;
- 將形狀轉換為NURBS幾何;
- 從單獨的拓撲元素(面和邊)縫制連接的拓撲(殼和線),
頂級API提供以下功能
- 基元的構造
- 盒子
- 棱柱
- 圓柱
- 椎體
- 球體
- 環
- 運動學建模:
- 棱柱-線性掃掠
- 旋轉-旋轉掃掠
- 管道-一般形式掃掠
- 放樣
- 布爾運算,允許從源形狀的組合創建新形狀
- 交:包含S1和S2中的所有點;
- 并:包含S1或S2中的所有點;
- 差:包含S1中而不是S2中的所有點
- 本地修改的演算法
- 挖洞
- 殼
- 使用拔模角創建錐形形狀;
- 在形狀邊緣(包括半徑可變的弦)上制作圓角和倒角的演算法,
- 用于創建機械特征的演算法,即沿著平面或旋轉表面的凹陷,突起,肋和凹槽或縫隙
網格
網格模塊提供了以三角形小平面的形式處理物件的細分表示的功能,該模塊包含: - 用于存盤與形狀關聯的表面網格資料的資料結構以及用于處理它們的基本演算法;
- 資料結構和演算法,用于從BRep物件(形狀)構建三角形曲面網格;
- 用于顯示帶有相關的前處理器和后處理器資料(標量或矢量)的網格的工具,
Open CASCADE Technology包括兩個網狀轉換器: - VRML轉換器將Open CASCADE形狀轉換為VRML 1.0檔案(虛擬現實建模語言),
- STL轉換器將Open CASCADE形狀轉換為STL檔案,
Open CASCADE SAS還提供高級網格產品: - 打開CASCADE Mesh Framework(OMF)
- 快速網格
可視化
可視化模塊提供了即用型演算法,可以根據各種物件(形狀,網格等)創建圖形表示,在Open CASCADE Technology中,
可視化基于CAD資料及其圖形表示的分離,可以自定義演示文稿,以考慮到您的應用程式的特殊性,
該模塊還支持快速而強大的互動式選擇機制,
OCCT提供的查看工具范圍從處理基本幾何形狀和拓撲結構的低級工具(例如具有控制點和節點的NURBS可視化,渲染等值線
以估計引數化的速度和質量,或者渲染邊緣的引數化輪廓)到使用光線跟蹤實時高質量渲染模型的高級工具:陰影,反射,
透明度,抗鋸齒等,
這里只是幾個例子:
- 相機驅動的視圖投影和方向,可以在透視,正投影和立體投影之間進行選擇,
- 使用遞回Whitted演算法和有限體積層次結構有效優化結構的實時光線跟蹤技術,
- 支持GLSL著色器,與其他任何OpenGL資源一樣,著色器管理是全自動的,
- 支持標準和自定義材料,由透明度,漫反射,環境和鏡面反射和折射率定義,后者允許實作透明材料,例如玻璃,鉆石和水,
- 通過以下演算法優化渲染性能:
- 查看視錐剔除,在相機以外的部分將跳過渲染階段
- 背面剔除,減少了三角形的渲染數量并消除了形狀邊界處的瑕疵,
- 通過平面方程系數定義裁剪平面,能夠為水平或單個裁剪平面上的橫截面定義視覺屬性,
- 可以靈活調整3D視圖中尺寸的外觀,3D文本物件將給定的文本字串表示為模型空間中的真實3D物件,
資料交換
資料交換允許開發基于OCCT的應用程式,該應用程式可以通過在外部資料之間讀寫CAD模型來與其他CAD系統進行互動,無論外部
資料的質量如何,還是對內部表示的要求(例如,資料型別,可接受的幾何誤差等),交換都可以順利進行,
資料交換以模塊化的方式組織成一組介面,這些介面符合各種CAD格式:IGES,STEP,STL,VRML等,這些介面允許基于OCCT的
軟體與各種CAD/PDM軟體包交換資料,從而維護良好的互操作性,
- 標準化的資料交換界面允許查詢和檢查輸入檔案,將其內容轉換為CAD模型并在完全轉換的形狀上運行有效性檢查,當前支持以下格式,
- STEP(AP203:機械設計,涵蓋通用3D CAD; AP214:汽車設計)
- IGES (up to 5.3)
- glTF, OBJ, VRML and STL meshes.
- 擴展資料交換(XDE)允許翻譯附加到幾何資料的其他屬性(顏色,圖層,名稱,材料等),
- 高級資料交換組件,以支持使用以下專有格式的CAD軟體的互操作性和資料適配(也使用Shape Healing):
- ACIS SAT
- Parasolid
- DXF
- IFC
- JT
這些組件基于與STEP和IGES的介面相同的體系結構
形狀修復
形狀修復庫提供的演算法可校正和調整從其他CAD系統匯入OCCT的形狀的幾何形狀和拓撲,
形狀修復演算法包括但不限于以下操作:
- 分析形狀特征,尤其是通過分析幾何物件和拓撲來識別不符合OCCT幾何和拓撲有效性規則的形狀:
- 檢查邊和線的一致性;
- 檢查線在線框中的順序;
- 檢查面的方向;
- 分析形狀公差;
- 識別線框中的閉合和斷開邊界,
- 修復不正確或不完整的形狀:
- 提供3D曲線與其對應的引數曲線之間的一致性;
- 修復有缺陷的線框;
- 使形狀符合用戶定義的公差值;
- 填補補丁和邊之間的縫隙,
- 升級和更改形狀特征:
- 降低曲線和表面度;
- 分割形狀以獲得C1連續性;
- 將任何型別的曲線或曲面轉換為Bezier或B樣條曲線或曲面并反向轉換;
- 拆分封閉曲面和旋轉曲面,
| 子域 | 描述 | 對形狀的影響 |
|---|---|---|
| 分析 | 探索形狀屬性,計算形狀特征,檢測是否違反OCCT要求 | 形狀本身未修改 |
| 修復 | 固定形狀以滿足OCCT要求 | 形狀可能會更改其原始形式:修改,移除或創建子形狀等) |
| 升級 | 改進形狀以適合某些特定演算法 | 形狀被替換為新形狀,但是在幾何形狀上它們是相同的 |
| 定制化 | 修改形狀表示以適應特定需求 | 形狀不會更改,只有其內部表示形式的數學形式會更改 |
| 處理 | 通過用戶可編輯的資源檔案進行形狀修改的機制 |
應用框架
Open CASCADE應用程式框架(OCAF)根據應用程式/檔案范式處理應用程式資料,由于以下現成的功能和服務,
它使用關聯引擎來簡化CAD應用程式的開發:
- 管理應用程式資料的資料屬性,可以根據開發需求進行組織;
- 資料存盤和持久性(打開/保存);
- 可以修改和重新計算檔案中的屬性,使用OCAF,可以輕松地表示模型中的修改歷史和引數依賴性,
- 可以管理多個檔案;
- CAD / CAM / CAE應用程式共有的預定義屬性(例如,存盤尺寸);
- 撤消重做和復制粘貼功能,
- 由于OCAF處理應用程式結構,因此唯一的開發任務是創建特定于應用程式的資料和GUI,
OCAF與其他任何CAD框架的不同之處在于應用程式資料的組織,因為那里的資料結構基于參考鍵而不是形狀,
在模型中,諸如形狀資料,顏色和材質之類的屬性將附加到比形狀深的不變結構上,形狀物件成為Shape
屬性的值,就像整數是Integer屬性的值和字串是Name屬性的值一樣,
OCAF將這些屬性組織并嵌入到檔案中,OCAF檔案又由OCAF應用程式管理,
Draw Test Harness
Draw是用于OCCT庫的便捷測驗工具,在構建整個應用程式之前,可以將其用于測驗各種演算法并為其原型設計,這包括:
- 基于TCL語言的命令解釋器;
- 大量的2D和3D查看器;
- 一組預定義的命令,
- 查看器支持諸如縮放,平移,旋轉和全屏視圖之類的操作,
基本命令提供通用服務,例如:
- 獲得幫助;
- 從檔案中評估腳本;
- 在檔案中捕獲命令;
- 管理觀點;
- 顯示物件,
此外,Test Harness還提供命令來創建和操縱曲線和曲面(幾何)和形狀,訪問可視化服務,使用OCAF檔案,執行資料交換等,
您可以添加自定義命令來測驗或展示你開發的任何新功能,
reference
OCC官網
百度百科
OpenCasCade 簡介
Technical Overview
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/204831.html
標籤:java
