[CE update 6 sdk ]用 BodyFromLoft创建放样实体时总是不成功,麻烦老师帮忙看一下错在哪里?

试着写了个简单的代码,就是根据两个圆界面和一根导向线用 BodyFromLoft放样生成实体,总是不成功。

麻烦老师帮忙看一下错在哪里?代码如下:

void createLoftSolid(WCharCP /*unparsed*/)
{
	DPoint3d basePt1, basePt2;
	basePt1 = basePt1.From(0, 0, 0);
	basePt2 = basePt2.From(0, 0, 500);

	//构建要放样的两个圆截面
	DPoint3d normal;
	normal = normal.From(0.0, 0.0, 1.0);
	DEllipse3d circle1, circle2;
	circle1.InitFromCenterNormalRadius(basePt1, (DVec3dCR)normal, 500);
	circle2.InitFromCenterNormalRadius(basePt2, (DVec3dCR)normal, 300);

	//构建放样的导向线
	DPoint3d Pts[2];
	Pts[0].x = 500; Pts[0].y = 0; Pts[0].z = 0;
	Pts[1].x = 300;  Pts[1].y = 0; Pts[1].z = 500;
	bvector<DPoint3d> LinePts;
	LinePts.push_back(Pts[0]);
	LinePts.push_back(Pts[1]);
	ICurvePrimitivePtr GuideLinePtr = ICurvePrimitive::CreateLineString(LinePts);
	CurveVectorPtr GuideLineVectorPtr = CurveVector::Create(CurveVector::BOUNDARY_TYPE_Open);
	GuideLineVectorPtr->push_back(GuideLinePtr);

	ICurvePrimitivePtr pCirclePtr1 = ICurvePrimitive::CreateArc(circle1);
	ICurvePrimitivePtr pCirclePtr2 = ICurvePrimitive::CreateArc(circle2);
	CurveVectorPtr ArcVectorPtr = CurveVector::Create(CurveVector::BOUNDARY_TYPE_None);
	ArcVectorPtr->Add(pCirclePtr1);
	ArcVectorPtr->Add(pCirclePtr2);

	ISolidKernelEntityPtr loftSolid;
	EditElementHandle loftSolidEEh;
	//根据两个圆截面及导向线进行放样生成实体
	if (SUCCESS == SolidUtil::Create::BodyFromLoft(loftSolid, &ArcVectorPtr, ArcVectorPtr->size(), &GuideLineVectorPtr, GuideLineVectorPtr->size(), *ACTIVEMODEL,true, false))
	{
		Bentley::DgnPlatform::DraftingElementSchema::ToElement(loftSolidEEh, *loftSolid, nullptr, *ACTIVEMODEL);
		loftSolidEEh.AddToModel();
	}
}

Parents Reply Children
No Data