代码如下:
//弧线拉伸成面 DVec3d dVecNormal;
DPoint3d origin, defaultNormal = DPoint3d::From(0, 0, 1); dVecNormal = DVec3d::From(defaultNormal.x, defaultNormal.y, defaultNormal.z); dVecNormal.ScaleToLength(4000);
EditElementHandle eeh1; if (SUCCESS != SolidHandler::CreateProjectionElement(eeh1, NULL, eeh, origin, dVecNormal, NULL, true, *ACTIVEMODEL)) { return; }
//添加厚度 MSElementDescrP elp1 = eeh1.GetElementDescrP(); BODY_TAG target;
Transform bodyTransform; mdlSolid_beginCurrTrans(ACTIVEMODEL); mdlSolid_elementToBody(&target, &bodyTransform, elp1, ACTIVEMODEL); mdlSolid_endCurrTrans();
double forwardDis = 0; double backwardDis = 1000; MSElementDescrP newElement = NULL;
if (SUCCESS != mdlSolid_thickenSheetBody(target, NULL, NULL, forwardDis, backwardDis)) { return; //设置厚度失败,为什么设置不成功,总是走这个分支 }
mdlSolid_bodyToElement(&newElement, target, true, -1, -1, -1, NULL, ACTIVEMODEL);
EditElementHandle neweeh(newElement, true, true); neweeh.AddToModel();
问题:
mdlSolid_thickenSheetBody执行失败,不清楚什么原因,我需要将弧面拉伸厚度为1000.
请改用更直接的SolidUtil::Modify::ThickenSheet函数。
mdlSolid_xxx类函数比较底层,涉及到许多设计模型到ParaSolid模型的转换问题,尽量避免去调用它们。比如,如果要调用mdlSolid_thickenSheetBody的话,你的1000这个值就需要在两个空间中去转换,而不能直接拿来就用。
Answer Verified By: Xiang Liu
好的,谢谢,我试一下。