本文主要是介绍Open CASCADE学习|2个TCL命令转C++,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1、torus aTorus 10 2
该命令的实现代码为:
static Standard_Integer anasurface (Draw_Interpretor& ,Standard_Integer n, const char** a)
{if (n < 2) return 1;gp_Ax3 loc;
Standard_Integer i;
if (n < 5) {loc = gp_Ax3(gp_Pnt(0,0,0),gp_Dir(0,0,1),gp_Dir(1,0,0));i = 2;}else if (n < 8) {loc = gp_Ax3(gp_Pnt(Draw::Atof(a[2]),Draw::Atof(a[3]),Draw::Atof(a[4])),gp_Dir(0,0,1),gp_Dir(1,0,0));i = 5;}else if (n < 11) {loc = gp_Ax3(gp_Pnt(Draw::Atof(a[2]),Draw::Atof(a[3]),Draw::Atof(a[4])),gp_Dir(Draw::Atof(a[5]),Draw::Atof(a[6]),Draw::Atof(a[7])));i = 8;}else if (n < 14) {loc = gp_Ax3(gp_Pnt(Draw::Atof(a[2]),Draw::Atof(a[3]),Draw::Atof(a[4])),gp_Dir(Draw::Atof(a[5]),Draw::Atof(a[6]),Draw::Atof(a[7])),gp_Dir(Draw::Atof(a[8]),Draw::Atof(a[9]),Draw::Atof(a[10])));i = 11;}elsereturn 1;
Handle(Geom_Geometry) result;
if (!strcasecmp(a[0],"plane")) {Handle(Geom_Plane) C = new Geom_Plane(loc);result = C;}else {if (i >= n) return 1;Standard_Real par1 = Draw::Atof(a[i]);if (!strcasecmp(a[0],"cylinder")) {Handle(Geom_CylindricalSurface) C = new Geom_CylindricalSurface(loc,par1);result = C;}else if (!strcasecmp(a[0],"sphere")) {Handle(Geom_SphericalSurface) C = new Geom_SphericalSurface(loc,par1);result = C;}else {if (i+1 >= n) return 1;Standard_Real par2 = Draw::Atof(a[i+1]);if (!strcasecmp(a[0],"cone")) {par1 *= (M_PI / 180.0);Handle(Geom_ConicalSurface) C =new Geom_ConicalSurface(loc,par1,par2);result = C;}else if (!strcasecmp(a[0],"torus")) {Handle(Geom_ToroidalSurface) C =new Geom_ToroidalSurface(loc,par1,par2);result = C;}} }
DrawTrSurf::Set(a[1],result);return 0;
}
转化为C++代码:
gp_Ax3 loc = gp_Ax3(gp_Pnt(0, 0, 0), gp_Dir(0, 0, 1), gp_Dir(1, 0, 0));
Handle(Geom_ToroidalSurface) aTorus =new Geom_ToroidalSurface(loc, 10, 2);
2、mkedgecurve aHelixEdge 0.01
该命令的实现代码为:
static Standard_Integer mkedgecurve (Draw_Interpretor& ,Standard_Integer n,const char** a)
{
if (n < 3) return 1;Standard_Real Tolerance = Draw::Atof(a[2]) ;
TopoDS_Shape S = DBRep::Get(a[1]);if (S.IsNull()) return 1;BRepLib::BuildCurves3d(S,Tolerance) ;return 0 ;
}
转化为C++代码:
BRepLib::BuildCurves3d(aHelixEdge,0.01);
这篇关于Open CASCADE学习|2个TCL命令转C++的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!