OCCT学习001-----简介
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
總結
以上是生活随笔為你收集整理的OCCT学习001-----简介的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 申请苹果开发者帐号傻瓜式教程
- 下一篇: mysql中没有sock文件_mysql