日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

OCCT培训笔记(刘星讲)--第1天

發(fā)布時(shí)間:2023/12/18 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OCCT培训笔记(刘星讲)--第1天 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

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文件,可用。
pload All //加載所有命令 help //幫著命令 cls //清空命令行 clear //清空二維顯示窗口 fit //適應(yīng)顯示 2dfit //適應(yīng)顯示二維窗口。 axo //顯示二維窗口 vinit //顯示三維窗口 vzb //顯示三維窗口中的指示軸 vdisplay //在三維中顯示 vhelp //交互命令幫助 vclear //清空三維顯示窗口 explode // dump //顯示數(shù)據(jù)信息,顯示曲線或曲面中保存的數(shù)據(jù) whatis //顯示的是什么,shape的一句話顯示。 getsourcefile //獲得命令的源碼文件位置 //二維窗口的繪制命令 line //畫直線,有方向箭頭 circle //畫圓 ellipse //畫橢圓 parabola //畫拋物線,箭頭有方向 hyperbola //雙曲線 beziercurve //貝塞爾曲線 bsplinecurve //B樣條曲線,OCCT算法最高支持25次,理解節(jié)點(diǎn)矢量的表達(dá)方式 whatis //顯示類型 pcurve //在二維空間中顯示曲線。 translate //移動(dòng)模型

曲面的參數(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è)模型表示法的比較:

  • 構(gòu)造、實(shí)體、建模(CSG):不能對(duì)任意模型建模。
  • 圖紙:是二維的。
  • 線框表示:出現(xiàn)二義性。
  • mesh文件,多用于動(dòng)畫模型,里面沒有精確的數(shù)學(xué)表達(dá)。
  • 邊界表示法(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。

  • TopoDS_TShape :TopoDS的handle。只能指針。
  • 本地坐標(biāo)系統(tǒng)。矩陣變換。gp_Trsf類。
  • 朝向,forward和reverse。edge朝向一致就是forward,相反是reverse。face的法線朝里是forward,朝外是reverse。 朝向只有放到具體的拓?fù)潴w中才有意義。
  • 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)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。