NXOPEN 获取体积

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;

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值