OCC的類比較多,看起來比較亂,在學習的過程可以總結一下,以方便后人。。。
1、gp_xxx包含了基本的幾何類。
2、Standard_XXX是occ定義的數值類型,包括一些類型定義和宏定義。
3、Geom_XXX定義了幾何數據結構,由gp_XXX構建成的數據結構,不包含算法,一般稱其為構建幾何類。
4、GC_MakeXXX也是由gp_XXX構建成的數據結構,與Geom_XXX不同的是,GC_MakeXXX包含構建算法,一般稱其為幾何形狀構建包。
Handle(Geom_XXX) XXX = GC_MakeXXX(<params>)
5、TopoDS_XXX是由多個Geom_XXX組成的,他們有共同的父類TopoDS_Shape,從名字可以看出該類對象包括了拓撲關系,但是TopoDS_XXX僅是一種數據結構,不包括算法。
6、BRepBuilderAPI_XXX一般稱為拓撲結構構建包,實現了從Geom_XXX到TopoDS_XXX的構建過程。
7、BRepPrimAPI_XXX一般稱為實體構建包,也就是將TopoDS_XXX構建成為實體,當然這里的實體也是TopoDS_XXX對象
8、BRepFilletAPI_XXX為倒角包。
9、TopExp_Explorer為拓撲解析包,用於TopoDS_XXX的解析,就是將已知實體(拓撲結構)解析為邊組合、面組合等等。
for(TopExp_Explorer aFaceExplorer(myBody, TopAbs_FACE); aFaceExplorer.More(); aFaceExplorer.Next()) { TopoDS_Face aFace = TopoDS::Face(aFaceExplorer.Current()); }
10、TopAbs_ShapeEnum是一個特殊的結構,類似於一個拓撲結構的數組,具有More()、Next()、Current()三個重要的方法,一般稱之為拓撲解析結果集。
11、BRepAlgoAPI_XXX是核心算法包,專門用於Shape對象的布爾運算(交集common(Boolean intersection)、差集cut(Boolean subtraction)、並集fuse(Boolean union)),一般稱之為幾何算法包。
12、BRep_Tool主要有三個方法,用於從TopoDS_XXX到Geom_XXX的轉換。
Handle(Geom_Surface) aSurface = BRep_Tool::Surface(aFace);
13、Standard_Transient類主要有兩個用途。
① DynamicType 函數用來獲取 Handle(Geom_Surface)的真實類型,因為Geom_Surface有可能是任何一種面。
② IsKind 用來判斷該類型是否是某個類的子類。
if(aSurface->DynamicType() == STANDARD_TYPE(Geom_Plane)) { Handle(Geom_Plane) aPlane = Handle(Geom_Plane)::DownCast(aSurface); }
14、BRepOffisetAPI_XXX一般稱為形體生成包,用於將線框模型生成實體模型。
BRepOffsetAPI_ThruSections aTool(Standard_True);
aTool.AddWire(threadingWire1);
aTool.AddWire(threadingWire2);
aTool.CheckCompatibility(Standard_False);
TopoDS_Shape myThreading = aTool.Shape();
