用Opencascad创建折线段
根据点创建折线段
Handle(Geom_BSplineCurve) CreatePolylineFromPoints(const TColgp_Array1OfPnt& points) { Standard_Integer nbPoints = points.Length(); // 创建节点序列 TColStd_Array1OfReal knots(1, nbPoints); TColStd_Array1OfInteger mults(1, nbPoints); // 设置节点和重复度 for (Standard_Integer i = 1; i <= nbPoints; i++) { knots.SetValue(i, i - 1); mults.SetValue(i, 1); } mults.SetValue(1, 2); // 首节点重复度 mults.SetValue(nbPoints, 2); // 末节点重复度 // 创建一次B样条曲线(折线) return new Geom_BSplineCurve(points, knots, mults, 1); // 度数为1 }
显示该折线段
TColgp_Array1OfPnt Points1(1,4); Points1.SetValue(1,gp_Pnt(0,0,0)); Points1.SetValue(2,gp_Pnt(2,1,0)); Points1.SetValue(3,gp_Pnt(4,0,0)); Points1.SetValue(4,gp_Pnt(6,2,0)); GeomAPI_PointsToBSpline PTBS1 = CreatePolylineFromPoints(Points1); TopoDS_Edge S = BRepBuilderAPI_MakeEdge(BSC1).Edge(); Handle(AIS_Shape) ais1 = new AIS_Shape(S); myAISContext->SetColor(ais1,Quantity_NOC_GREEN,Standard_False); myAISContext->SetMaterial(ais1,Graphic3d_NOM_PLASTIC,Standard_False); myAISContext->Display(ais1,Standard_False); Fit();