李寒杰韓 翔
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—),男,江蘇徐州人,徐州東方傳動機械有限公司研究所所長,主要研究方向:機械設計及制造。