UG二次开发实现实体质量属性测量
2012-09-21李寒杰韩
李寒杰韩 翔
1.徐州东方传动机械有限公司研究所,徐州 2211162.徐州工程学院机电工程学院,徐州 221000
UG二次开发实现实体质量属性测量
李寒杰1韩 翔2
1.徐州东方传动机械有限公司研究所,徐州 2211162.徐州工程学院机电工程学院,徐州 221000
利用UG/Open API二次开发实现实体质量属性测量,并给出关键代码。
UG/Open API;质量属性;测量
利用与UG软件交互的方法测量实体模型质量,需要经过一系列交互操作,过程较繁琐。本文利用UG/Open API二次开发实现了实体质量属性测量,并将它放在UG用户菜单上,使用非常方便。此法同时对系统集成开发也有参考意义。
API提供了质量分析接口函数UF_ MODL_ask_mass_props_3d ( ),它可进行的实体质量分析内容有:实体表面积、体积、质量、质心、惯性矩、惯性积、主轴、力矩、回转半径等。
下面给出开发的关键部分代码。为了使程序有较广的适用范围,实体选择采用人机交互形式。
static void do_ugopen_api()
{
int type=1,unit=3,accuracy=1;
int response,count,I, zero=0;
double acc_val[11]
={.01,0,0,0,0,0,0,0, 0, 0,0};
double density, massprop[47];
double massprop_stat[13];
tag_t *body=NULL, solbody;
UF_MODL_density_units_t units = UF_MODL_grams_centimeters;
int ip3=1;
double density1[1]={7830.0};
char *cp1="输入实体密度";
char cp2[1][16]={"实体密度(g/ cm3)"};
char result[133];
UF_UI_select_with_class_dialog
("实体质量属性分析","选择实体",
UF_UI_SEL_SCOPE_ANY_IN_ ASSEM BLY,
NULL,NULL, &response, &count, &body); //选择实体
uc1609(cp1,cp2,ip3,density1,0); // 输入实体密度
density=density1[0];
solbody=body[0];
UF_MODL_set_body_density (solbody, units, density); //设置实体密度
if ( body != NULL )
{
UF_MODL_ask_mass_props_3d( body, count, type,unit,density, accuracy, acc_val, massprop,massprop_ stat); //实体质量分析
for (i=0; i<47; i++)
{
printf("[%d]= %f ",i,massprop[i]);
}
for (i=0; i< count; i++)
{
U_DISP_set_highlight(body[i],zero);
}
UF_free(body);
}
…程序结果如图1、2所示。
图1 选择实体对话框
图2 输入实体密度
[1]董正卫,田立中,付宜利编著,徐海峰审校.UG/OPEN API编程基础.北京:清华大学出版社,2002
[2]孙家广等.计算机图形学(第3版).北京:清华大学出版社,1998
10.3969/j.issn.1001-8972.2012.20.036
李寒杰(1978—),男,江苏徐州人,徐州东方传动机械有限公司研究所所长,主要研究方向:机械设计及制造。