李寒杰韓 翔
1.徐州東方傳動(dòng)機(jī)械有限公司研究所,徐州 2211162.徐州工程學(xué)院機(jī)電工程學(xué)院,徐州 221000
UG二次開(kāi)發(fā)實(shí)現(xiàn)實(shí)體質(zhì)量屬性測(cè)量
李寒杰1韓 翔2
1.徐州東方傳動(dòng)機(jī)械有限公司研究所,徐州 2211162.徐州工程學(xué)院機(jī)電工程學(xué)院,徐州 221000
利用UG/Open API二次開(kāi)發(fā)實(shí)現(xiàn)實(shí)體質(zhì)量屬性測(cè)量,并給出關(guān)鍵代碼。
UG/Open API;質(zhì)量屬性;測(cè)量
利用與UG軟件交互的方法測(cè)量實(shí)體模型質(zhì)量,需要經(jīng)過(guò)一系列交互操作,過(guò)程較繁瑣。本文利用UG/Open API二次開(kāi)發(fā)實(shí)現(xiàn)了實(shí)體質(zhì)量屬性測(cè)量,并將它放在UG用戶菜單上,使用非常方便。此法同時(shí)對(duì)系統(tǒng)集成開(kāi)發(fā)也有參考意義。
API提供了質(zhì)量分析接口函數(shù)UF_ MODL_ask_mass_props_3d ( ),它可進(jìn)行的實(shí)體質(zhì)量分析內(nèi)容有:實(shí)體表面積、體積、質(zhì)量、質(zhì)心、慣性矩、慣性積、主軸、力矩、回轉(zhuǎn)半徑等。
下面給出開(kāi)發(fā)的關(guān)鍵部分代碼。為了使程序有較廣的適用范圍,實(shí)體選擇采用人機(jī)交互形式。
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="輸入實(shí)體密度";
char cp2[1][16]={"實(shí)體密度(g/ cm3)"};
char result[133];
UF_UI_select_with_class_dialog
("實(shí)體質(zhì)量屬性分析","選擇實(shí)體",
UF_UI_SEL_SCOPE_ANY_IN_ ASSEM BLY,
NULL,NULL, &response, &count, &body); //選擇實(shí)體
uc1609(cp1,cp2,ip3,density1,0); // 輸入實(shí)體密度
density=density1[0];
solbody=body[0];
UF_MODL_set_body_density (solbody, units, density); //設(shè)置實(shí)體密度
if ( body != NULL )
{
UF_MODL_ask_mass_props_3d( body, count, type,unit,density, accuracy, acc_val, massprop,massprop_ stat); //實(shí)體質(zhì)量分析
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);
}
…程序結(jié)果如圖1、2所示。
圖1 選擇實(shí)體對(duì)話框
圖2 輸入實(shí)體密度
[1]董正衛(wèi),田立中,付宜利編著,徐海峰審校.UG/OPEN API編程基礎(chǔ).北京:清華大學(xué)出版社,2002
[2]孫家廣等.計(jì)算機(jī)圖形學(xué)(第3版).北京:清華大學(xué)出版社,1998
10.3969/j.issn.1001-8972.2012.20.036
李寒杰(1978—),男,江蘇徐州人,徐州東方傳動(dòng)機(jī)械有限公司研究所所長(zhǎng),主要研究方向:機(jī)械設(shè)計(jì)及制造。