OpenCasCade基础知识
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();