double MeasureOperate::getVolume(Body* body1)
{
double volume;
Session* theSession = Session::GetSession();
Part* workPart(theSession->Parts()->Work());
Part* displayPart(theSession->Parts()->Display());
// ----------------------------------------------
// Menu: Analysis->Measure Bodies...
// ----------------------------------------------
Session::UndoMarkId markId1;
markId1 = theSession->SetUndoMark(Session::MarkVisibilityVisible, "Start");
NXObject* nullNXObject(NULL);
MeasureBodyBuilder* measureBodyBuilder1;
measureBodyBuilder1 = workPart->MeasureManager()->CreateMeasureBodyBuilder(nullNXObject);
theSession->SetUndoMarkName(markId1, NXString("Measure Bodies \345\257\271\350\257\235\346\241\206", NXString::UTF8));
std::vector<Body*> bodies1(1);
bodies1[0] = body1;
BodyDumbRule* bodyDumbRule1;
bodyDumbRule1 = workPart->ScRuleFactory()->CreateRuleBodyDumb(bodies1);
std::vector<SelectionIntentRule*> rules1(1);
rules1[0] = bodyDumbRule1;
measureBodyBuilder1->BodyCollector()->ReplaceRules(rules1, false);
measureBodyBuilder1->SetInfoWindow(true);
std::vector<Unit*> massUnits1(5);
Unit* unit1(dynamic_cast<Unit*>(workPart->UnitCollection()->FindObject("SquareMilliMeter")));
massUnits1[0] = unit1;
Unit* unit2(dynamic_cast<Unit*>(workPart->UnitCollection()->FindObject("CubicMilliMeter")));
massUnits1[1] = unit2;
Unit* unit3(dynamic_cast<Unit*>(workPart->UnitCollection()->FindObject("Kilogram")));
massUnits1[2] = unit3;
Unit* unit4(dynamic_cast<Unit*>(workPart->UnitCollection()->FindObject("MilliMeter")));
massUnits1[3] = unit4;
Unit* unit5(dynamic_cast<Unit*>(workPart->UnitCollection()->FindObject("Newton")));
massUnits1[4] = unit5;
MeasureBodies* measureBodies1;
measureBodies1 = workPart->MeasureManager()->NewMassProperties(massUnits1, 0.99, measureBodyBuilder1->BodyCollector());
volume = measureBodies1->Volume();
measureBodies1->SetInformationUnit(MeasureBodies::AnalysisUnitCustomUnit);
//measureBodies1->Information();
delete measureBodies1;
Session::UndoMarkId markId2;
markId2 = theSession->SetUndoMark(Session::MarkVisibilityInvisible, "Measure Bodies");
theSession->DeleteUndoMark(markId2, NULL);
Session::UndoMarkId markId3;
markId3 = theSession->SetUndoMark(Session::MarkVisibilityInvisible, "Measure Bodies");
theSession->DeleteUndoMark(markId3, NULL);
theSession->SetUndoMarkName(markId1, "Measure Bodies");
measureBodyBuilder1->Destroy();
return volume;
}
NXOPEN 获取体积
最新推荐文章于 2024-07-08 21:23:20 发布