点击查看详细介绍

UF_MODL_ask_mass_props_3d() 函数的参数解释说明、函数详细用法,以及实例代码演示

misnn 10年前 1795 0

购买与咨询 NX 二次开发视频教程,请联系微信号:13890821008  QQ号:85585969  


函数结构:
UF_MODL_ask_mass_props_3d
(
tag_t * objects,
int num_objs,
int type,
int units,
double density,
int accuracy,
double acc_value [ 11 ],
double mass_props [ 47 ],
double statistics [ 13 ]
)

函数说明:
返回的固体或片状指定集合的质量特性身体。指定单元和密度值,要么一个精确值(设定精度=1)或相对公差的质量(设定精度=2)财产计算。对于简单的分析固体或片状体(如平面,柱面)的0.9精度值是足够的。对于更复杂的固体或B-表面片体面对,精度值越接近1.0可以是必要。如果指定了相对公差,精度系统迭代值,直到连续质量属性值在规定范围内相对公差。相对公差值是由测试值定义(或估计相对误差)就是MP(n)是为第n个大众属性值迭代的精度值。如果指定的0.0相对宽容的,没有测试的完成相应的质量特性值,尽管所有的质量属性值使用相同的精确度值计算出来。

函数参数:
第1个参数为输入:
objects代表参数变量,tag_t * 为输入参数类型,固体或片状体识别,分析1型实心体,板体num_objs阵分析类型2和3

第2个参数为输入:
输入int 整数型的参数,参数的变量格式为num_objs,对象的数量

第3个参数为输入:
输入int 整数型的参数,参数的变量格式为type,3D分析1 =固体的类型2=薄壳 - 片体3 =由片体为界

第4个参数为输入:
输入int 整数型的参数,参数的变量格式为units,质量和长度1 =磅单位和英寸2=磅和脚3 =克厘米4 =公斤米

第5个参数为输入:
输入double 双精度类型的参数,参数的变量格式为density,密度 - 每单位体积质量(每单位面积的质量为薄壳)。不用于固体分析;为实心体的固体的密度在分析中使用,并且将合并的集合体的密度的质量特性阵列中输出(mass_props[46])。

第6个参数为输入:
输入int 整数型的参数,参数的变量格式为accuracy,1 =使用精度2=使用相对公差

第7个参数为输入:
输入double 双精度类型的参数,参数的变量格式为acc_value [ 11 ],[0]=准确度在0.0和1.0之间的值,如果精度=1[1-10]没有使用,如果精度=1[0]=对面积的相对宽容,如果精度=2[1]=的体积相对宽容[2-4]=的最初时刻(重心)[5-7]=惯性(重心)的时刻相对公差相对公差[8-10] =惯性的产品相对公差(重心)

第8个参数为输出:
输出double 双精度类型的参数,参数的变量格式为mass_props [ 47 ],质量属性[0]=外围应用[1]=体积(0.0薄壳)[2]=质量[3-5]=中心的质量(COFM),WCS[6-8]=最初时刻(重心)9-11] =瞬间惯性,WCS[12-14]=惯量驱动(重心)[15]=球的转动惯量[16-18]=惯性产品,WCS[19-21]=惯性产品(重心)[22-30] =主轴,WCS[31-33] =主力矩(重心)[34-36] =半径回转,WCS[37-39]=半径回转(重心)[40]=球面半径的回转[41-45]=未使用[46]=密度

第9个参数为输出:
输出double 双精度类型的参数,参数的变量格式为statistics [ 13 ],错误是,如果实现了相对公差精度估计= 2;否则+/-误差范围内给出了[0]=错误对于表面积[1]=错误因卷[2]=错误对于质量[3] =半径误差球[4]=错误对于转动惯量XC[5] =错误弯矩YC[6]=错误弯矩ZC[7] =错误有关的转动惯量XC[8] =错误有关的转动惯量YC[9]=错误有关的转动惯量ZC[10] =错误有关的所有产品:惯性XCYC[11]=错误对于产品惯性YCZC[12]=错误对于产品惯性XCZC

UF_MODL_ask_mass_props_3d函数实例代码演示:
下面的例子将提示您选择实体。然后,它打印出从分析所选获得的质量属性身体。
[quote]
#include <stdio.h>
#include <uf.h>
#include <uf_ui.h>
#include <uf_disp.h>
#include <uf_defs.h>
#include <uf_modl.h>
#include <uf_object_types.h>
#define UF_CALL(X) (report( __FILE__, __LINE__, #X, (X)))
static int report( char *file, int line, char *call, int irc)
{
if (irc)
{
char messg[133];
printf("%s, line %d: %s\n", file, line, call);
(UF_get_fail_message(irc, messg)) ?
printf(" returned a %d\n", irc) :
printf(" returned error %d: %s\n", irc, messg);
}
return(irc);
}
static void do_ugopen_api(void)
{
UF_UI_selection_options_t opts;
UF_UI_mask_t mask = {UF_solid_type, 0, UF_UI_SEL_FEATURE_BODY};
tag_t *solbody = NULL;

int response = 2;
int type = 1;
int unit = 3;
int accuracy = 1;
int count = 0;
int zero = 0;
int i;
double acc_val[11] = {.01,0,0,0,0,0,0,0,0,0,0};
double density = 1.0;
double massprop[47];
double massprop_stat[13];
opts.num_mask_triples = 1;
opts.mask_triples = &mask;
opts.scope = UF_UI_SEL_SCOPE_WORK_PART;
UF_CALL(UF_UI_select_by_class("Select solid bodies",&opts,&response,
&count,&solbody));
/* if sheet bodies were selected */
if ( solbody != NULL )
{
UF_CALL(UF_MODL_ask_mass_props_3d(solbody,
count,
type,
unit,
density,
accuracy,
acc_val,
massprop,
massprop_stat));
for (i=0; i<47; i++)
{
printf("[%d] = %f\n",i,massprop[i]);
}
for (i=0; i<count; i++)
{
UF_CALL(UF_DISP_set_highlight(solbody[i],zero));
}
UF_free(solbody);
}
}
/*ARGSUSED*/
void ufusr(char *param, int *retcode, int param_len)
{
if (!UF_CALL(UF_initialize()))
{
do_ugopen_api();
UF_CALL(UF_terminate());
}
}
int ufusr_ask_unload(void)
{
return (UF_UNLOAD_IMMEDIATELY);
}




[/quote]

0

最新回复 (0)
请登录后发表新帖