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