测量曲面的面积(UG(NX)二次开发)
这里用的是比较笨的方法:首先抽取面成为片体,然后计算片体的面积,最后将片体删除。
在此给出抽取面成为片体的函数和计算片体面积的函数。
/// <summary>
/// 抽取面成片体
/// </summary>
/// <param name="face">被抽取面</param>
/// <param name="sheet_body">创建的片体</param>
public void ExtractFace(Face face, out Body sheet_body)
{
try
{
int mode = 0;
Tag sheet_body_tag;
theUFSession.Modl.ExtractFace(face.Tag, mode, out sheet_body_tag);
sheet_body = Tag2NXObject<Body>(sheet_body_tag);
}
catch (Exception ex)
{
sheet_body = null;
MessageBox.Show(ex.ToString());
}
}
/// <summary>
/// 计算片体的表面积
/// </summary>
/// <param name="sheet_body">片体</param>
/// <param name="area">面积</param>
public void AskAreaOfSheetbody(Body sheet_body, out double area)
{
try
{
Tag[] obj = new Tag[1] { sheet_body.Tag };
int num_obj = 1;
int type = 2;
int unites = 4;
double density = 1.0;
int accuracy = 1;
double[] acc_value = new double[11];
for (int i = 0; i < 11; i++)
{
acc_value[i] = 0.0254;
}
double[] mass_props = new double[47];
double[] statistics = new double[13];
theUFSession.Modl.AskMassProps3d(obj, num_obj, type, unites, density, accuracy, acc_value, mass_props, statistics);
area = mass_props[0] * 1000000;
}
catch (Exception ex)
{
area = 0;
MessageBox.Show(ex.ToString());
}
}
浙公网安备 33010602011771号