iCAx开思工具箱

标题: 如何获知 body_tag ? [打印本页]

作者: jimstill    时间: 2004-9-16 19:25
标题: 如何获知 body_tag ?
我要对屏幕上一显示部件进行trim(或scale)操作时,需要获知其 body_tag,我看到的一些例子是由 UF_MODL_ask_feat_body(feat_tag, &body_tag)命令来获取的,但是当此部件不是由单个feature构成时,又如何知道它的 body_tag 呢?  
请教各位!!
作者: tari    时间: 2004-9-16 20:17
不是由单个feature的也行
作者: 刘亮    时间: 2004-9-16 20:28
UF_OBJ_cycle_objs_in_part(part_tag,type,&obj_id)
作者: jimstill    时间: 2004-9-17 11:07
还是不行,万分苦恼,请大家看看我的函数程序:
int TRIM_ok_cb ( int dialog_id,
             void * client_data,
             UF_STYLER_item_value_type_p_t callback_data)
{
     double plane_data[9] = {0.0,0.0,0.0, 10.0,0.0,0.0, 0.0,10.0,0.0};
     tag_t  plane_tag;
     tag_t  part;
     tag_t  trim_feature;
     tag_t feat, body_tag;
     int    direction=0;
     int   type;  
     int   count=0;
  
     if ( UF_initialize() != 0)  
          return ( UF_UI_CB_CONTINUE_DIALOG );
  
     /* ---- Enter your callback code here ----- */
    
  
     FTN(uf5374) (&plane_data[0], &plane_data[3], &plane_data[6],
                     [$plane_tag)]
  
    part=UF_PART_ask_display_part();
     
    type=UF_feature_type;
    feat=NULL_TAG;
    
    UF_OBJ_cycle_objs_in_part(part,type,[$feat)]  
    while(feat!=NULL_TAG)  
    {  
     count++;  
     UF_OBJ_cycle_objs_in_part(part,type,[$feat)]  
     
        
    }  
  
    UF_MODL_ask_feat_body(feat, [$body_tag)   ]
  
    UF_MODL_trim_body(body_tag, plane_tag , direction, [$trim_feature )]
  
     UF_terminate ();
  
      return (UF_UI_CB_EXIT_DIALOG);                           
  
}
  
问题究竟出在哪里?恳请大家帮忙
作者: tari    时间: 2004-9-17 17:00
plane_tag有值吗?
如果有值的话,你使用UF_MODL_ask_feat_object()得到object,用object去切试试看
作者: tari    时间: 2004-9-17 17:08
请问uf5374()这个函数前面三个参数分别代表什么?
UG自带的文档我只找到这个
uf5374_
Replaced by UF_MODL_create_plane  
  
extern void uf5374_ (
double * rp1,  
double * rp2,  
double * rp3,  
tag_t * nr4 );
  
double *  rp1   
double *  rp2   
double *  rp3   
tag_t *  nr4   
  
--------------------------------------------------------------------------------
作者: jimstill    时间: 2004-9-18 20:22
在 uf_modl_legacy.h 头文件有定义:
/* uf5374 create plane */
/* Replaced by UF_MODL_create_plane */
extern UFUNEXPORT void FTN(uf5374)(double *rp1, double *rp2,
                        double *rp3, tag_t *nr4);
谢谢大家,
这个问题我已基本解决:就是将UF_MODL_ask_feat_body(feat, &body_tag)  语句插在
  while(feat!=NULL_TAG)  
    {  
     }
的大括号里即可。但奇怪的是,大多数部件会返回三、四个不同的body_tag值,其中只有一个是正确的。即出现次数最多的那一个,只有找到那个值,才能
进行trim 操作。
作者: tari    时间: 2004-9-19 09:54
不是每个body都会和平面相交的,不相交当然不能trim
作者: zzz    时间: 2004-9-20 22:13
估计你的body_tag根本就没有得到,找body tag的方法在以前的帖子里有,精华贴里有索引,自己找一下吧




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