NXOpen创建样条曲线
通过指定点的方式构造样条曲线
1、初始化样条曲线构造器
NXOpen::Features::FitCurve *nullNXOpen_Features_FitCurve(NULL);
NXOpen::Features::FitCurveBuilder *fitCurveBuilder1;
fitCurveBuilder1 = workPart->Features()->CreateFitCurveBuilder(nullNXOpen_Features_FitCurve);
2、设置所构建样条曲线的参数
fitCurveBuilder1->SetTolerance(0.001); //设置拟合精度
2.1 将构造方式设置为指定点
fitCurveBuilder1->SetTargetSourceType(NXOpen::Features::FitCurveBuilder::TargetSourceTypesSpecifiedPoints); //指定样条构造方式
fitCurveBuilder1->Radius()->SetRightHandSide("50");
2.2 指定曲线的类型 <按照自己拟合点的特点选取,自己试试>
fitCurveBuilder1>SetFittingParameters(NXOpen::Features::FitCurveBuilder::FittingParametersOptionsDegreeAndTolerance);
2.3 指定拟合曲线次数
fitCurveBuilder1->SetDegree(2); //样条曲线拟合次数,必须小于输入点数
fitCurveBuilder1->Extender()->StartValue()->SetRightHandSide("0");
fitCurveBuilder1->Extender()->EndValue()->SetRightHandSide("0");
fitCurveBuilder1->RejectionThreshold()->SetRightHandSide("10");
//将收集的点添加到拟合曲线里
//其中Poicollection是vecor动态数组,其中保存了构造的点(std::vector< NXOpen::Point*> Poicollection )
for (int i = 0; i < Poicollection.size(); i++)
{
bool Isok;
Isok= fitCurveBuilder1->Target()->Add(Poicollection[i]); //添加拟合点
}
3、执行
NXOpen::NXObject *nXObject1;
nXObject1 = fitCurveBuilder1->Commit();
fitCurveBuilder1->Destroy();
4、拟合效果