iCAx开思工具箱

标题: 【求助】急啊,搜索part中的面 [打印本页]

作者: tari    时间: 2004-5-14 12:38
标题: 【求助】急啊,搜索part中的面
下面是我写的代码:
tag_t part;
int type=UF_face_type;
tag_t face=NULL_TAG;
UF_OBJ_cycle_objs_in_part(part,type,[$face)]
char name[30+1];
UF_OBJ_ask_name(face,name);
uc1601(name,1);
调试没问题,但没得到自己想要的结果,问题出在哪里?希望高人指点一下!
作者: tari    时间: 2004-5-14 15:32
下午,我换了一种方法试试:下面是我写的代码:
tag_t part;
       part=UF_open_part();
       tag_t feature=NULL_TAG;
       int type=UF_feature_type;
       uf_list_p_t  face_list;
       uf_list_p_t  p1;
       UF_OBJ_cycle_objs_in_part(part,type,[$feature)]
       while(feature!=NULL_TAG)
       {
         if(feature==NULL_TAG) uc1601("a",1);
         UF_MODL_ask_feat_faces(feature,[$face_list)]
         int *type1=NULL;
         p1=face_list;
         do
       {
         UF_MODL_ask_face_type(p1->eid,type1);
  
         if(*type1==UF_MODL_CYLINDRICAL_FACE)  uc1601("cylinder",1);
         if(*type1==UF_MODL_PLANAR_FACE)       uc1601("plane",1);
         if(*type1==NULL)   uc1601("fail",1);
         p1=p1->next;
       }while(p1->eid!=NULL_TAG);
       UF_OBJ_cycle_objs_in_part(part,type,[$feature)]
       }
           调试没错,但执行时弹出错误信息窗口:Interal error:......,麻烦哪位高人指点一下,急啊!
作者: zzz    时间: 2004-5-14 20:07
tari wrote:
下午,我换了一种方法试试:下面是我写的代码:  
  tag_t part;  
         part=UF_open_part();  
         tag_t feature=NULL_TAG;  
         int type=UF_feature_type;  
         uf_list_p_t  face_list;  
         uf_list_p_t  p1;  
         UF_OBJ_cycle_objs_in_part(part,type,[$feature)]  
         while(feature!=NULL_TAG)  
         {  
           if(feature==NULL_TAG) uc1601("a",1);  
           UF_MODL_ask_feat_faces(feature,[$face_list)]  
           int *type1=NULL;  
           p1=face_list;  
           do  
         {  
           UF_MODL_ask_face_type(p1->eid,type1);  
  
           if(*type1==UF_MODL_CYLINDRICAL_FACE)  uc1601("cylinder",1);  
           if(*type1==UF_MODL_PLANAR_FACE)       uc1601("plane",1);  
           if(*type1==NULL)   uc1601("fail",1);  
           p1=p1->next;  
         }while(p1->eid!=NULL_TAG);  
         UF_OBJ_cycle_objs_in_part(part,type,[$feature)]  
         }  
             调试没错,但执行时弹出错误信息窗口:Interal error:......,麻烦哪位高人指点一下,急啊!

  
把int *type1 改为 int type1, 输出用取地址。
作者: ptjmy    时间: 2004-5-15 09:48
我把指针改为地址后,执行的结果是弹出三个fail,为什么type的值老是0呢?
然后弹出上面提到的错误信息,焦急等待中。。。。
其实我就是想自动搜索得到两个需要的面的tag而已,还有其他其他好办法
作者: ptjmy    时间: 2004-5-15 10:14
需要自动得到下面的两个面的tag,大家有没有更好的办法,输入的是部件名
作者: ptjmy    时间: 2004-5-15 11:18
我已经调通了,原来这条语句:while(p1->eid!=NULL_TAG)错了,改为:while(p1->next!=NULL); 就可以了
不过好像搜索不到圆柱面,面的类型一直是22(UF_MODL_PLANAR_FACE)奇怪!三个平面倒是可以找到,有人知道为什么吗?
(我造型的时候,先用圆柱画端部,然后在上面添加了一个boss)
作者: ptjmy    时间: 2004-5-15 12:50
我已经找到原因了,原来应该用:while(p1-!=NULL);如果按照上面的条件,每次搜索最后一个面就过去了,呵呵




欢迎光临 iCAx开思工具箱 (https://t.icax.org/) Powered by Discuz! X3.3