注从occ demo 中onmakeface()
/////////////
//第一步创建曲面 P1.SetCoord(35,-200,40); P2.SetCoord(50,-204,30); P3.SetCoord(65,-200,30); P4.SetCoord(35,-20,45); P5.SetCoord(45,-20,30); P6.SetCoord(65,-20,65); TColgp_Array2OfPnt array2(1,3,1,2); array2.SetValue(1,1,P1); array2.SetValue(2,1,P2); array2.SetValue(3,1,P3); array2.SetValue(1,2,P4); array2.SetValue(2,2,P5); array2.SetValue(3,2,P6); Handle (Geom_BSplineSurface) BSplineSurf = GeomAPI_PointsToBSplineSurface(array2,3,8,GeomAbs_C2,0.001); TopoDS_Face aFace = BRepBuilderAPI_MakeFace(BSplineSurf); //创建映射空间uv space //2d lines gp_Pnt2d P12d(0.9,0.1); gp_Pnt2d P22d(0.2,0.7); gp_Pnt2d P32d(0.02,0.1); Handle (Geom2d_Line) line1 = new Geom2d_Line(P12d,gp_Dir2d((0.2-0.9),(0.7-0.1))); Handle (Geom2d_Line) line2 = new Geom2d_Line(P22d,gp_Dir2d((0.02-0.2),(0.1-0.7))); Handle (Geom2d_Line) line3 = new Geom2d_Line(P32d,gp_Dir2d((0.9-0.02),(0.1-0.1))); //Edges are on the BSpline surface Edge1 = BRepBuilderAPI_MakeEdge(line1,BSplineSurf,0,P12d.Distance(P22d)); Edge2 = BRepBuilderAPI_MakeEdge(line2,BSplineSurf,0,P22d.Distance(P32d)); Edge3 = BRepBuilderAPI_MakeEdge(line3,BSplineSurf,0,P32d.Distance(P12d)); Wire1 = BRepBuilderAPI_MakeWire(Edge1,Edge2,Edge3);
//创建wire 并指出方向。 Wire1.Reverse(); PinkFace = BRepBuilderAPI_MakeFace(aFace,Wire1); BRepLib::BuildCurves3d(PinkFace);
//分割线------------------------------------------------------------------------//tobe continue
需要对occ中uv space 进行深入理解