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