1 BRepBuilderAPI类
1.1 BRepBuilderAPI_MakeVertex类
BRepBuilderAPI_MakeVertex类用来创建点;
1.2 BRepBuilderAPI_MakeEdge类
BRepBuilderAPI_MakeEdge类用来创建边;
比如由直线生成边:
cpp
gp_Lin line(gp_Ax1(gp_Pnt(10,10,10),gp_Dir(1,0,0)));
WhiteEdge = BRepBuilderAPI_MakeEdge(line,-20,10);
下面为生成四分之一圆边:
cpp
gp_Elips Elips(gp_Ax2(gp_Pnt(10,0,0),gp_Dir(1,1,1)),60,30);
RedEdge = BRepBuilderAPI_MakeEdge(Elips,0,PI/2);
下面是由曲线生成边:
cpp
Handle (Geom_BezierCurve) curve = new Geom_BezierCurve(array);
BRepBuilderAPI_MakeEdge ME (curve);
GreenEdge = ME;
V3 = ME.Vertex1();
V4 = ME.Vertex2();
1.3 BRepBuilderAPI_MakeWire类
BRepBuilderAPI_MakeWire类用来创建一个线框。
用一个Wire和一个边来生成一个新的Wire:
cpp
ExistingWire = BRepBuilderAPI_MakeWire(Edge2);
Edge3 = BRepBuilderAPI_MakeEdge(gp_Pnt(-300,0,-80),gp_Pnt(-90,20,-30));
BRepBuilderAPI_MakeWire MW1(ExistingWire,Edge3);
if (MW1.IsDone())
{YellowWire = MW1;}
用一个Wire和添加边的方法来生成Wire:
cpp
BRepBuilderAPI_MakeWire MW;
MW.Add(ExistingWire2);
MW.Add(Edge5);
MW.Add(Edge6);
MW.Add(Edge7);
if (MW.IsDone()) {
WhiteWire = MW.Wire();
LastEdge = MW.Edge();
LastVertex = MW.Vertex();
1.4 BRepBuilderAPI_MakeFace类
BRepBuilderAPI_MakeFace类用来生成一个面,有多种生成面的方法;
--通过一个封闭曲线生成面:
cpp
BRepBuilderAPI_MakeFace(curve);
--通过一个Wire生成面:
cpp
BrownFace = BRepBuilderAPI_MakeFace(YellowWire);
1.5 Bnd_Box2d类
定义一个二维空间的边界盒,可以得出边界盒各个点的值,有时,在某个方向是无限大,这种情况下,称为在此方向上是开放的,示例:
cpp
Bnd_Box2d aCBox;
Geom2dAdaptor_Curve GACC (C);
BndLib_Add2dCurve::Add (GACC,Precision::Approximation(),aCBox);
1.6 Bnd_Box类
定义一个三维空间的边界盒,可以扩大或缩小边界盒,也可以合并两个轴对齐边界盒;
2 BRepPrimAPI类
2.1 BRepPrimAPI_MakeBox类
使用MakeBox类创建一个长方体,结果以一个壳或体返回。创建长方体的方式有如下四种:
以上创建方式对应类的BRepPrimAPI_MakeBox的四种构造函数:
cpp
Standard_EXPORT BRepPrimAPI_MakeBox(const Standard_Real dx,const Standard_Real dy,const Standard_Real dz);
Standard_EXPORT BRepPrimAPI_MakeBox(const gp_Pnt& P,const Standard_Real dx,const Standard_Real dy,const Standard_Real dz);
Standard_EXPORT BRepPrimAPI_MakeBox(const gp_Pnt& P1,const gp_Pnt& P2);
Standard_EXPORT BRepPrimAPI_MakeBox(const gp_Ax2& Axes,const Standard_Real dx,const Standard_Real dy,const Standard_Real dz);
2.2 BRepPrimAPI_MakeWedge类
使用类BRepPrimAPI_MakeWedge来创建楔形体。楔形体就是带斜面的长方体,即带角度的长方体。楔形体的创建方式与长方体的创建方式相似。下图所示为构造楔形体的两种方式。一种是加入ltx尺寸来描述dy上的面,另一种是加入xmin,xmax,zmin,zmax来描述dy上的面。
第一种方式是第二种方式在满足以下条件下的特例:
cpp
xmin = 0, xmax = ltx, zmin = 0, zmax = dz
创建一个金字塔的楔形体可以用下面的方式:
cpp
xmin = xmax = dx / 2, zmin = zmax = dz / 2
生成上图所示的程序如下所示:
cpp
TopoDS_Shape S1 = BRepPrimAPI_MakeWedge(60.,100.,80.,20.);
TopoDS_Shape S2 = BRepPrimAPI_MakeWedge(gp_Ax2(gp_Pnt(100.,100.,0.),gp_Dir(0.,0.,1.)),
60.,50.,80.,25.,-10.,40.,70.);
2.3 BRepPrimAPI_MakeOneAxis类
BRepPrimAPI_MakeOneAxis类是所有旋转体图元的基类。旋转体通过将曲线绕一个轴旋转得到。它们有圆柱体、圆锥体、球体、圆环体等。这些旋转体对于不同的图元有不同的构造参数,但是它们也有共同的参数:
- 一个坐标系统;
- 一个角度,范围为[0, 2*PI];
- 曲线的vmin,vmax参数;
OneAxis构造的结果是体Solid、壳Shell或面Face。通常不会直接使用类BRepPrimAPI_MakeOneAxis,而是使用它的派生类。
如下图所示描述了类的参数:
2.4 BRepPrimAPI_MakeCylinder类
使用类BRepPrimAPI_MakeCylinder来创建圆柱体。圆柱可以在默认的坐标系中被创建,也可以指定的坐标系(gp_Ax2)中创建。创建方式如下:
- 半径、高度创建一个完整的圆柱;
- 半径、高度及角度来创建部分圆柱;
如下代码所示为沿X、Y、Z偏移一定距离的四分之一的圆柱:
cpp
Standard_Real X = 20;
Standard_Real Y = 10;
Standard_Real Z = 15;
Standard_Real R = 10;
Standard_Real DY = 30;
// Make the system of coordinates.
gp_Ax2 axes = gp::ZOX();
axes.Translate(gp_Vec(X, Y, Z));
TopoDS_Face F = BRepPrimAPI_MakeCylinder(axes, R, DY, PI/2.);
2.5 BRepPrimAPI_MakeCone
使用类BRepPrimAPI_MakeCone来创建圆锥体。与圆柱体一样,圆锥体可以在默认的坐标系中被创建,也可以指定的坐标系中被创建。创建方式如下:
1)两个半径和高度来创建一个完整的圆锥。一个半径可以为零,这样就创建了一个尖顶的圆锥;
2)半径、高度和角度来创建部分圆锥。
如下代码创建的圆锥如下图所示:
cpp
TopoDS_Shape C1 = BRepPrimAPI_MakeCone (50.,25.,200.);
TopoDS_Shape C2 = BRepPrimAPI_MakeCone(gp_Ax2(gp_Pnt(100.,100.,0.),
gp_Dir(0.,0.,1.)), 605.,0.,150.,210.*PI180);
2.6 BRepPrimAPI_MakeSphere类
使用类BRepPrimAPI_MakeSphere来创建球体。与圆柱体一样,球体可以在默认的坐标系中被创建,也可以指定的坐标系中被创建。有四种创建方式,如下图所示:
- 一个半径值,创建一个完整的球体;
- 半径和角度,创建部分的球体;
- 半径和两个角度值,创建纬度上的部分的球体。两个角度a1,a2必须满足如下条件:PI/2 <= a1 < a2 <= PI/2
- 一个半径和三个角度值;
实现上图中球体的代码如下:
cpp
TopoDS_Shape S1 = BRepPrimAPI_MakeSphere(gp_Pnt(-200.,-250.,0.),80.);
TopoDS_Shape S2 = BRepPrimAPI_MakeSphere(100.,120.*PI180);
TopoDS_Shape S3 = BRepPrimAPI_MakeSphere(gp_Pnt(200.,250.,0.),100., -60.*PI180, 60.*PI180);
TopoDS_Shape S4 = BRepPrimAPI_MakeSphere(gp_Pnt(0.,0.,-300.),150., -45.*PI180, 45.*PI180, 45.*PI180);
2.7 BRepPrimAPI_MakeTorus类
使用类BRepPrimAPI_MakeTorus来创建圆环体。与其它基本图元类似,一个圆环体可以在默认的坐标系中创建,也可以在指定的坐标系中创建。创建与与球体创建方式类似:
- 两个半径,创建一个完整的圆环体;
- 两个半径和一个角度值,创建部分的圆环体;
- 两个半径和两个角度值,创建纬度上的部分圆环体;两个角度必须满足如下条件:0 < a2 -- a1 < 2 * PI;
- 两个半径和三个角度值,创建部分的圆环体;
实现上图中环的代码如下:
cpp
TopoDS_Shape S1 = BRepPrimAPI_MakeTorus(60.,20.);
TopoDS_Shape S2 = BRepPrimAPI_MakeTorus(gp_Ax2(gp_Pnt(100.,100.,0.),gp_Dir(1.,1.,1.)), 50.,20.,210.*PI180);
TopoDS_Shape S3 = BRepPrimAPI_MakeTorus(gp_Ax2(gp_Pnt(-200.,-150.,-100),gp_Dir(0.,1.,0.)),
60.,20.,-45.*PI180,45.*PI180,90.*PI180);