BodyFromSweepの使用例①


BodyFromSweepの使い方を紹介します。

MSCE SDKの中にC++の新しいクラスSolidUtilsがあります。Create::BodyFromSweepというメソッドがMSCEで使用されます。
以下のサンプルコードは、IDが6513の要素を取り込んだ後、断面が円の要素を作り、弧に従ってソリッドに掃引しています。

BodyFromSweepの重要なパラメータは以下となります:

solid:生成されるソリッド

profile:掃引の断面

path:掃引のパス

void BodyFromSweepTest()
{
	ElementId id = 6513;
	ElementHandle myArc(id, ACTIVEMODEL);
	CurveVectorPtr path = ICurvePathQuery::ElementToCurveVector(myArc);

	DPoint3d  startPnt, endPnt;
	DVec3d startTangent, endTangent;
	path->at(0)->GetStartEnd(startPnt, endPnt, startTangent, endTangent);
	RotMatrix rMatrix = RotMatrix::From1Vector(startTangent, 2, true);

	EditElementHandle myCircle;
	EllipseHandler::CreateEllipseElement(myCircle, nullptr, startPnt, 1000, 1000, rMatrix, true, *ACTIVEMODEL);	
	CurveVectorPtr profile = ICurvePathQuery::ElementToCurveVector(myCircle);

	ISolidKernelEntityPtr solid;
	EditElementHandle     sweepSolid;
	SolidUtil::Create::BodyFromSweep(solid, *profile, *path, *ACTIVEMODEL, false, true, false);
	DraftingElementSchema::ToElement(sweepSolid, *solid, nullptr, *ACTIVEMODEL);
	sweepSolid.AddToModel();
}