UG NX二次开发(C#)-分析-测量体对象的体积
Posted GimiGimmy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UG NX二次开发(C#)-分析-测量体对象的体积相关的知识,希望对你有一定的参考价值。
1、简要说明
采用NXOpen.net测量体积的二次开发时,是应用MeasureManager空间,即是测量管理空间,查看MeasureManager空间的帮助说明,如下图所示。
这个空间中包含了曲线、曲面、体、角度、距离等类。我们在进行体的计算时,是应用MeasureBodyBuilder,查看其帮助文档说明如下:
这个类是为了测量体积的赋值,获得体积是用MeasureManager.NewMassProperties。
2、测量体积的方法
针对此,我们可以编写测量体积的方法CalculateBodyVolume():
/// <summary>
/// 计算体的体积,如果是多个体,则是体积之和
/// </summary>
/// <param name="bodies">测量的体对象</param>
/// <param name="volume">输出体积</param>
public static void CalculateBodyVolume(Body []bodies,out double volume)
volume = 0;
NXOpen.NXObject nullNXOpen_NXObject = null;
NXOpen.MeasureBodyBuilder measureBodyBuilder;
NXOpen.Part workPart = theSession.Parts.Work;
measureBodyBuilder = workPart.MeasureManager.CreateMeasureBodyBuilder(nullNXOpen_NXObject);
NXOpen.BodyDumbRule bodyDumbRule1;
bodyDumbRule1 = workPart.ScRuleFactory.CreateRuleBodyDumb(bodies, true);
NXOpen.SelectionIntentRule[] rules1 = new NXOpen.SelectionIntentRule[1];
rules1[0] = bodyDumbRule1;
measureBodyBuilder.BodyCollector.ReplaceRules(rules1, false);
NXOpen.Unit[] volumeUnit1 = new NXOpen.Unit[1];
NXOpen.Unit unit = (NXOpen.Unit)workPart.UnitCollection.FindObject(UFConstants.UF_UNIT_VOLUME_mm3);
volumeUnit1[0] = unit;
NXOpen.MeasureBodies measureBodies;
measureBodies = workPart.MeasureManager.NewMassProperties(volumeUnit1, 0.99, true, measureBodyBuilder.BodyCollector);
volume = measureBodies.Volume;
measureBodies.Dispose();
measureBodyBuilder.Destroy();
11.1.2.3 测量实例
我们在UG NX中创建一个长方体(长宽高均为100mm),选择体,并点击测量按钮,得到如下结果。
测量的体积为1000000mm³:
以上是关于UG NX二次开发(C#)-分析-测量体对象的体积的主要内容,如果未能解决你的问题,请参考以下文章
UG NX二次开发(C#)-外部模式-批量删除某些图层中的体对象和曲线对象
UG NX二次开发(C#)-外部模式-批量删除某些图层中的体对象和曲线对象