OCCT培训笔记(刘星讲)--第1天
OCCT培訓筆記(劉星講)--第1天
- 七大模塊概述
- 1、各個package的內容記錄
- Module FoundationClasses
- Toolkit TKernel
- Toolkit TKMath
- Module ModelingData
- Module ModelingAlgorithms
- Module Visualization
- Module DataExchange
- 2、造型數據結構 ModelingData Geometry
- 2.1、曲線
- 2.2、曲面
- 2.3、Draw.bat的使用
- 2.4、插值和擬合
- 3、造型數據 ModelingData Topology
- 3.1、兩個概念
- 3.2、為什么使用邊界表示法?
- 3.3、邊界表示法的具體內容
- 3.4、強制類型轉換
- 3.5、容器工具(實例代碼略)
- 3.6、 遍歷工具(實例代碼略)
- 3.7、B-Rep實體,即實現類型
- 1、BRep_TVertex 類的幾何
- 2、BRep_TEdge 類的幾何
- 3、BRep_TFace 類的幾何
- 3.8、B-Rep實體的精度問題
- 3.9、BRepAdaptor包(略)
- 3.10、BRep_Tool類
- 3.11、特殊情況
七大模塊概述
- Foundation Classes 基礎模塊。被其它模塊引用功能。
- Modeling Data 建模數據。
- Modeling Algorithm 建模算法。
- Mesh 網格化。
- Visualization 顯示模塊。
- OCAF:Open CADCADE Application Framwork 應用程序框架。
- Development Tool 開發工具。
- Standardized Data Exchange 數據交換。
- Draw Test Harness 是一個用于測試OCCT庫的功能工具。
1、各個package的內容記錄
- FoundationClasses–基礎類
- Modeling Data --數據結構
Module FoundationClasses
基礎模塊
Toolkit TKernel
一些基本功能,包括容器,定義一下數組,沒有用STL的數組。
- Package NCollection 容器
- Package OSD 文件讀寫相關
- Package Quantity 自己重定義的量。
- Package Units 單位轉換相關
- Package UnitsAPI 單位轉換相關
- Package Standard 類型管理
- 其他 類型管理,智能指針,內存池,并行庫的封裝。
Toolkit TKMath
曲線曲面問題的求解,最底層的功能。
- Package BSplCLib B樣條曲線
- Package BSplSLib B樣條曲面
- Package BVH 包圍盒算法,加速拾取,求交點。
- Package Bnd 包圍盒相關算法。
- Package CSLib 簡單封裝的曲線曲面的算法
- Package Convert 把基本的曲線曲面轉換成B樣條的曲線曲面。
- Package ElCLib 基礎的曲線,直線,圓,橢圓,拋物線,雙曲線。
- Package ElSLib 基礎的曲面,平面,圓柱面,圓錐面。
- Package Expr 數學表達式求解。
- Package ExprIntrp 數學表達式求解。
- Package PLib 多項式的計算。
- Package Poly 網格數據的存儲。多段線的存儲。三角剖分。
- Package Precision 精度。
- Package TColgp 各種容器類。
- Package TopLoc 多次連續變換后,都會記錄下來。
- Package gp 常見的點、向量、圓、橢圓、圓錐面、球面,變換矩陣,四元數。
- Package math 這個模塊最核心的包。各種計算。實現各種數值算法的功能。
- math_FunctionRoot 解一個方程的根。
- math_BFGS 多元函數的最小化。
- math_FunctionSet 方程組相關問題的基類。
- math_Function 方程的基類。
一元函數:
多元函數:
方程組:
Module ModelingData
Modeling Data為邊界表示法(BRep)的3D模型提供數據結構。BRep模型是由拓撲(Topology)和幾何(Geometry)來表示的。
邊界表示法(Boundary Representation)也稱為BRep表示。它是幾何造型中最成熟、無二義性的表示法。
邊界表示法詳解(略,后面再詳細說明)
- Toolkit TKG2D 二維曲線曲面,表示參數空間。
- Toolkit TKG3D 三維曲線曲面
- Toolkit TKBRep 邊界表示法
- Toolkit TKGeomBase 對于曲線曲面的基本算法。
- Package Extrema 求極值
- Package Geom2dConvert 轉換到B樣條的曲線曲面
- Package GeomConvert 轉換
- Package GeomProjLib 投影
- Package IntAna 曲線曲面的求交計算。
- Package IntAna2d 曲線曲面的求交計算。
Module ModelingAlgorithms
- Toolkit TKBool 布爾運算
- Toolkit TKFeat 針對機械的運算,比如倒角
- Toolkit TKFillet 倒圓角
- Toolkit TKGeomAlgo 幾何相關的,擬合、投影、求交。
- Toolkit TKHLR 隱藏線的消除。主要用于自動生成過程。
- Toolkit TKMesh 用來生成顯示用的網格。比如三角網格
- Toolkit TKOffset 掃掠放樣功能。
- Toolkit TKBRepPrimAPI 常見基本形狀的生成。
- Toolkit TKShHealing 對模型的檢查修復。
- Toolkit TKTopAlog 拓撲的生成
- Package BRepClass3d 模型的定位,是在模型內、外,還是邊界上面。
- Toolkit TKXMesh 簡單的封裝,可能是付費接口的兼容。
Module Visualization
用于顯示和交互的模塊。顯示中的縮放、平移和旋轉。交互中點線面的選擇。模型的顏色材質和透明度等。
Module DataExchange
用于數據交互,可以看到它支持的文件格式。
- Toolkit TKBinXCAF ocaf格式
- Toolkit TKIGES iges格式,gltf格式
- Toolkit TKSTEP step格式
- Toolkit TKSTL stl格式
- Toolkit TKVRML vrml格式
2、造型數據結構 ModelingData Geometry
非參數化幾何:解析幾何。不使用Handle化。對應Module FoundationClasses中的ToolKit TKMath中的幾何。gp_開頭的類都是非參數的幾何。
參數化幾何:使用Handle來處理的。對應到 Module ModelingData中的 ToolKit TKG2d和ToolKit TKG3d中的內容。
例如,Package Geom中的類對應的參數幾何。根據step標準。
非參數有一些局限性,所以用參數幾何。
2.1、曲線
下面是參數幾何的類繼承關系:
trimmed curve(裁剪曲線):就是給曲線的定義域加范圍,是有界的,比如直線給范圍變成線段。
offset curve(偏移曲線) :是基線加上偏移方向和距離。曲線上的每個點都有一個固定的偏移。
曲線可以得到參數對應的點和一階導數、二階導數和三階導數,以及曲線連續性的類型。
2.2、曲面
Geom_SweptSurface類簡單掃掠曲面,比如拉伸和選中。
不支持T樣條曲面,需要基礎Geom_ElementarySurface類派生后自己實現。
2.3、Draw.bat的使用
- 調用draw.bat文件,不要用.exe文件,會自動配置環境遍歷。我的沒有安裝好,用了exe文件,可用。
曲面的參數空間是UV。
plane //畫平面 cylinder //畫圓柱 trimv //裁剪v方向上的作用域 cone //圓錐面 sphere //球面 torus //圓環面 extsurf //線性拉伸曲線得到曲面 revsurf //旋轉曲線得到曲面 beziersurf //貝塞爾曲面 bsplinesurf //B樣條曲面 trim //矩形裁剪曲面 offset //偏移曲面2.4、插值和擬合
插值:是通過所有的得到的曲線。
擬合:是所有點到達線距離和最小的曲線。
Module ModelingAlgorithms 中 ToolKit TKGeomAlgo中PackageGeomAPI中的類:
GeomAPI_Interpolate 類是插值類。
GeomAPI_PointToBSpline類是擬合。用最小二乘法之類的算法做的。
判斷點在線或面的內或外,都在拓撲里面。
Module ModelingAlgorithms 中 ToolKit TKTopAlgo中Package BRepClass中。
3、造型數據 ModelingData Topology
為了表示任意的一個邊界范圍。
3.1、兩個概念
1、抽象拓撲(TopoDS):只是描述邊界之間的關系。
(對應Module ModelingData中ToolKit TKBRep中Package TopoDS包中的類)
2、拓撲的幾何邊界表示(BRep):
- BRepBuilderAPI類,BRepPRimAPI類,BRepOffsetAPI類,BRepFilletAPI類,用于之間構造拓撲體。
- BRepAlgoAPI類,用于幾何的布爾運算。
- TopExp類,用于遍歷拓撲體中的數據。
- BRepTools類,訪問各類的數據,類型轉換,用于訪問對應類的數據和函數。
- BRepFeat類,高級特征??
3.2、為什么使用邊界表示法?
其他幾個模型表示法的比較:
邊界表示法(BRep表示:Boundary Representation):
優點:幾何造型中最成熟,且沒有二義性,可以表達任意模型,有幾何信息的表示法。
缺點:不穩定,比較復雜。
3.3、邊界表示法的具體內容
體—面—環—邊—點 的層次記錄幾何信息。
OCCT的拓撲結構只能從上往下,不能從下往上查找。
edge和curve的關系,用點去限定curve得到edge。
face和surface的關系,用edge去限定surface的一部分,得到face。
IsPartner()-比較TShape一樣,為true。
IsSame()-比較TShape和坐標一樣,為true。
IsEqual()-比較TShape、坐標和朝向都一樣,為true。
3.4、強制類型轉換
TopoDS_Shape 類型——轉——
——TopoDS_Vertex 類型:TopoDS::Vertex() 函數。
——TopoDS_Edge 類型:TopoDS::Edge() 函數。
——TopoDS_Wire 類型:TopoDS::Wire() 函數。
——TopoDS_Face 類型:TopoDS::Face() 函數。
——TopoDS_Shell 類型:TopoDS::Shell() 函數。
——TopoDS_Solid 類型:TopoDS::Solid() 函數。
——TopoDS_CompSolid 類型:TopoDS::CompSolid() 函數。
3.5、容器工具(實例代碼略)
TopTools_MapOfShape類和TopTools_ListIteratorOfShape類是TopoDS_Shape 類型的容器。
3.6、 遍歷工具(實例代碼略)
- TopoDS_Iterator類:遍歷所有子模型。
- TopExp_Explorer類:遍歷制定類型。
- TopExp::MapShapes() 方法:遍歷制定的類型放到map里面。
- TopExp::MapShapesAndAncestors()方法:遍歷得到指定類型的所有父類型。
3.7、B-Rep實體,即實現類型
BRep_TVertex類,BRep_TEdge類和BRep_TFace類,定義了點,邊和面,其中包含了限定的幾何信息。
1、BRep_TVertex 類的幾何
記錄三維坐標點。
記錄點的相關幾何信息表示:BRep_PointOnCurve曲線上的點,BRep_PointsOnSurface曲面上的點等。
2、BRep_TEdge 類的幾何
- 三維曲線和曲線上的2個參數定義一條邊。
- 需要元素比較多列在下面:
曲面上的曲線(Geom2d_Curve(二維曲線PCurve));曲線上的兩個參數;曲面上的2對參數。
3、BRep_TFace 類的幾何
wir在surface上面限定一部分,就是face。BRep_TFace 類中只保存了Geom_Surface的幾何信息。
3.8、B-Rep實體的精度問題
- 點的精度是半徑r的球的范圍
- 邊就是一個半徑的管道
- 面就是一個曲面的上下厚度
3.9、BRepAdaptor包(略)
讓拓撲的線、面以幾何的形式來使用。
3.10、BRep_Tool類
很多靜態函數用于獲得點、線和面的幾何信息。
3.11、特殊情況
特殊類型邊:退化邊和縫合邊。
-
退化邊的情況如下圖:
-
縫合邊的情況如下圖:
BRep_Tool類中Degenerated()函數,判斷邊是否是退化的。
Geometry Surface 里面的求導函數,可以計算曲面上一點的法線。
Module ModelingData ->ToolKit TKBRep ->Package BRep中:BRep_Builder類。
用MakeFace函數去構造一個Face;MakeEdge()、MakeVertex()等。
——第一天完結——
總結
以上是生活随笔為你收集整理的OCCT培训笔记(刘星讲)--第1天的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 主流手机CPU及机型介绍!手机CPU生产
- 下一篇: sin函数对照表_三角函数数值对照表.p