Open CASCADE基础介绍(2)
一些OCC的基础知识,愿与各位OCC爱好者共同学习;mail: tongabcd@yeah.net
一:关于体的类
BRepBuilderAPI_MakeVertex类
创建点;
BRepBuilderAPI_MakeEdge类
此类用来创建边;
比如,由直线生成边:
gp_Lin line(gp_Ax1(gp_Pnt(10,10,10),gp_Dir(1,0,0)));
WhiteEdge = BRepBuilderAPI_MakeEdge(line,-20,10);
下面为生成四分之一园边:
gp_Elips Elips(gp_Ax2(gp_Pnt(10,0,0),gp_Dir(1,1,1)),60,30);
RedEdge = BRepBuilderAPI_MakeEdge(Elips,0,PI/2);
下面是由曲线生成边:
Handle (Geom_BezierCurve) curve = new Geom_BezierCurve(array);
BRepBuilderAPI_MakeEdge ME (curve);
GreenEdge = ME;
V3 = ME.Vertex1();
V4 = ME.Vertex2();
BRepBuilderAPI_MakeWire类
用来创建一个Wire类;
用一个Wire和一个边来生成一个新的Wire:
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:
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();
}
BRepBuilderAPI_MakeFace类
生成一个面;有多种生成面的方法;
--通过一个封闭曲线生成面:
BRepBuilderAPI_MakeFace(curve);
--通过一个Wire生成面:
BrownFace = BRepBuilderAPI_MakeFace(YellowWire);
Bnd_Box2d类:
定义一个二维空间的边界盒,可以得出边界盒各个点的值,有时,在某个方向是无限大,这种情况下,称为在此方向上是开放的;
示例:
Bnd_Box2d aCBox;
Geom2dAdaptor_Curve GACC (C);
BndLib_Add2dCurve::Add (GACC,Precision::Approximation(),aCBox);
Bnd_Box类:
定义一个三维空间的边界盒,可以扩大或缩小边界盒,也可以合并两个轴对齐边界盒;
BRepPrimAPI_MakeBox类
用来生成一个立方体;
构造一个立方体可以是两个对角点,一个角点及三个方向长度,可以是非轴对称的:
TopoDS_Shape B2 = BRepPrimAPI_MakeBox (gp_Ax2(gp_Pnt(-200.,-80.,-70.), gp_Dir(1.,2.,1.)), 80.,90.,120.);
使用方法
TopoDS_Face& BottomFace() ;.可以得到立方体的底面;同样,用其它类似的方法可以获得顶面等;
方法TopoDS_Solid& Solid() ;可以将box转化为一个Solid;
方法TopoDS_Shell& Shell() ;可以将box转化为一个shell;
BRepPrimAPI_MakeCylinder类
用来生成一个园柱体或园柱体的一部分;
比如:
TopoDS_Shape C2 = BRepPrimAPI_MakeCylinder (gp_Ax2(gp_Pnt(200.,0.,200.), gp_Dir(0.,1.,0.)),40.,110.,210.*PI180);
BRepPrimAPI_MakeCone类
生成一个园锥或园锥的一部分;
BRepPrimAPI_MakeSphere类
生成球体或球体的一部分,可以是U方向切