iCAx开思工具箱
标题:
请问feature与object的区别?
[打印本页]
作者:
zxdawn
时间:
2005-12-28 14:46
标题:
请问feature与object的区别?
我的部分代码如下:红线部分的值没有传进去extern int UF_MODL_ask_exps_of_feature (tag_t feature, int * number_of_exps, tag_t ** exps );tObj是个Body object identifier,我想可能是不是这里出了问题?哪位大侠帮忙提供点意见,我是要遍历面的信息,思路是先遍历零件的面,在找到与面相关的表达式,但是断点调试到红线部分只没有传进去。
for(int i=1; i<256; i++)
{
do
{
UF_LAYER_cycle_by_layer(i, &tObj);
if(tObj!=NULL_TAG)
{
UF_MODL_ask_body_faces(tObj,&face_list );
UF_MODL_ask_list_count(face_list,&count);
for(int j=0; j<count; j++)
{
UF_MODL_ask_list_item(face_list,j,&tObj);
UF_MODL_ask_face_data (tObj,&iType,point,dir,
box,&radius,&rad_data,
&norm_dir );
int number_of_exps=0;
tag_t *exps;
char *string=" ";
UF_MODL_ask_exps_of_feature(tObj,
&number_of_exps,&exps);
for(int z=0;z<number_of_exps;z++)
{
UF_MODL_ask_exp_tag_string(exps[z],&string);
sprintf(sLine,"%2d%2d%8d%8d\n",
tObj,i,iType,string);
UF_UI_write_listing_window(sLine);
UF_free(string);
UF_free(exps);
}
}
UF_MODL_delete_list_item(&face_list,tObj);
UF_MODL_delete_list(&face_list);
}
}
作者:
thriller
时间:
2005-12-28 15:26
for(int i=1; i<256; i++)
{
do
{
UF_LAYER_cycle_by_layer(i, &tObj);
//你通过上面这个函数得到的tObj是什么?
if(tObj!=NULL_TAG)
{
UF_MODL_ask_body_faces(tObj,&face_list );
//tObj一定是个body吗?
UF_MODL_ask_list_count(face_list,&count);
for(int j=0; j<count; j++)
{
UF_MODL_ask_list_item(face_list,j,&tObj);
//在这里把tObj重新赋值了,如何继续UF_LAYER_cycle_by_layer(i, &tObj)这个函数
UF_MODL_ask_face_data (tObj,&iType,point,dir,
box,&radius,&rad_data,
&norm_dir );
int number_of_exps=0;
tag_t *exps;
char *string=" ";
UF_MODL_ask_exps_of_feature(tObj,
&number_of_exps,&exps);
//上面这个函数得用feature才可以,你给的tObj是什么?
for(int z=0;z<number_of_exps;z++)
{
UF_MODL_ask_exp_tag_string(exps[z],&string);
sprintf(sLine,"%2d%2d%8d%8d\n",
tObj,i,iType,string);
UF_UI_write_listing_window(sLine);
UF_free(string);
UF_free(exps);
}
}
UF_MODL_delete_list_item(&face_list,tObj);
UF_MODL_delete_list(&face_list);
}
}
作者:
zxdawn
时间:
2005-12-29 16:08
for(int i=1; i<256; i++)
{
do
{
UF_LAYER_cycle_by_layer(i, &tObj);
//你通过上面这个函数得到的tObj是什么?是part tag
if(tObj!=NULL_TAG)
{
UF_MODL_ask_body_faces(tObj,&face_list );
//tObj一定是个body吗? 我想不出来还能用什么函数
UF_MODL_ask_list_count(face_list,&count);
for(int j=0; j<count; j++)
{
tag_t fObj;
UF_MODL_ask_list_item(face_list,j,&fObj);
UF_MODL_ask_face_data (fObj,&iType,point,dir, box,&radius,&rad_data,
&norm_dir );
int number_of_exps=0;
tag_t *exps;
char *string=" ";
UF_MODL_ask_exps_of_feature(fObj, &number_of_exps,&exps);
//上面这个函数得用feature才可以,你给的fObj是什么?我现在就是分不清楚feature的意思,下面的循环进不去,应该是feature的问题。
for(int z=0;z<number_of_exps;z++)
{
UF_MODL_ask_exp_tag_string(exps[z],&string);
sprintf(sLine,"%2d%2d%8d%8d,tObj,i,iType,string);
UF_UI_write_listing_window(sLine);
UF_free(string);
UF_free(exps);
}
}
UF_MODL_delete_list_item(&face_list,tObj);
UF_MODL_delete_list(&face_list);
}
}
作者:
supergirl
时间:
2005-12-29 17:26
正确的做法:楼主应该先从part里面cycle出body,再从body里面cycle出feature,然后从feature去问exp。
UG不支持非流形,所以body与feature是一对多的关系,也就是一个body可以有多个feature,但是一个feature最多只有一个body。
但是点和线是一个body一个feature的。
至于obj,好像UG里面只要有tag就算obj,part, display 的东东,还有sketch, 乱起八糟的东东好像都算object。
欢迎光临 iCAx开思工具箱 (https://t.icax.org/)
Powered by Discuz! X3.3