Brep边界表示法相关的类都在ModelingData模块下的TKBrep toolkit中
一、TKBrep下比较重要的包有:
- TopoDS:边界表示法核心类
- TopExp:Brep数据结构进行遍历工具类
- TopTools:Brep数据结构集合类
二、Boundary representation(BRep)
边界表示(Boundary Representation)也称为BRep表示,它是几何造型中最成熟、无二义的表示法。实体Solid用一组封闭的面组成,而每个面又由它所在的曲面的定义加上其边界来表示,面的边界是边的并集,而边又是由点来表示的。
边界表示的一个重要特征是描述形体的信息包括几何信息(Geometry)和拓朴信息(Topology)两个方面。拓朴信息描述形体上的顶点、边、面的连接关系,它形成物体边界表示的“骨架”。形体的几何信息犹如附着在“骨架”上的肌肉。例如,形体的某个面位于某一个曲面上,定义这一曲面方程的数据就是几何信息。此外,边的形状、顶点在三维空间中的位置(点的坐标)等都是几何信息,一般来说,几何信息描述形体的大小、尺寸、位置和形状等。
在边界表示法中,边界表示就按照体-面-环-边-点的层次,详细记录构成形体的所有几何元素的几何信息及其相互连接的拓朴关系。这样,在进行各种运算和操作中,就可以直接取得这些信息。
一个边界表示法的数据模型中,包含拓扑与几何两部分,他们的对应关系:
几何对象 拓扑对象
Point <----> Vertex
Curve、line <----> Edge
Surface <----> Face
三、TopoDS包
TopoDS包提供拓扑相关的类,他们的基类都是TopoDS_Shape。
- TopoDS_Compound: 多个solid的组合
- TopoDS_Solid:实体
- TopoDS_Shell:多个由边相连的面
- TopoDS_Face:由封闭的wire组成的面,是平面或曲面的一部分
- TopoDS_Wire:由多个边组成,边之间由顶点相连
- TopoDS_Edge:边
- TopoDS_Vertex:顶点
TopoDS类:当某Shape确定是是某种拓扑类型,可通过TopoDS类转换成更准确的子类。
Brep_Tool类:提供获取Brep Shape的几何对象
- 从拓扑面获取几何面
static const Handle(Geom_Surface)& Surface (const TopoDS_Face& F, TopLoc_Location& L);
- 从Vertex获取几何点
static gp_Pnt Pnt (const TopoDS_Vertex& V);
- 从Edge获取3D曲线
static Handle(Geom_Curve) Curve (const TopoDS_Edge& E, Standard_Real& First, Standard_Real& Last);
四、TK3d工具集下TopAbs包
这个包定义了拓扑相关的枚举。
1. TopAbs_State: 定义点或多个点相对于某个shape的位置:
- TopAbs_IN: 内部
- TopAbs_OUT:外部
- TopAbs_ON:之上,如点在边上
- TopAbs_UNKNOWN:不确定,可能是计算失败
2. TopAbs_Orientation: 方向,如线的方向
- TopAbs_FORWARD:
- TopAbs_REVERSED
- TopAbs_INTERNAL
- TopAbs_EXTERNAL
3. TopAbs_ShapeEnum: 定义拓扑形状
- TopAbs_COMPOUND:复合体
- TopAbs_COMPSOLID:
- TopAbs_SOLID:体
- TopAbs_SHELL:壳
- TopAbs_FACE:面
- TopAbs_WIRE:线框
- TopAbs_EDGE:边
- TopAbs_VERTEX:顶点
- TopAbs_SHAPE:
五、TopExp包
TopExp包提供查看、操作拓扑数据的类。TopExp_Explorer可查看一个拓扑对象的子组件。
Standard_EXPORT TopExp_Explorer(const TopoDS_Shape& S, // 要查找的对象
const TopAbs_ShapeEnum ToFind, // 目标查找类型
const TopAbs_ShapeEnum ToAvoid = TopAbs_SHAPE); // 过滤掉的类型