用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();

 

posted @ 2025-03-27 17:20  unicornsir  阅读(38)  评论(0)    收藏  举报