iCAx开思工具箱

标题: zzz斑竹请进,关于UF_MODL_create_blend [打印本页]

作者: wgwang    时间: 2003-12-4 10:17
标题: zzz斑竹请进,关于UF_MODL_create_blend
斑竹,我先做了个圆柱,然后想用UF_MODL_create_blend把两头导圆,可是编译都通过了,运行时怎么也倒不出来,我的程序如下:
               UF_FEATURE_SIGN sign=UF_NULLSIGN;
  tag_t  cyl_tag , target_tag=0 , blend_tag;
  double origin[3]={0.0,0.0,0.0};
  char* height="10";
  char* diam="5";
  double  direction[3]={0.0,0.0,1.0};
  uf_list_p_t  edge_list;
  char * radius="0.1";
  double  vrb_tool=0.0254;
    /* Initialize the API environment */
    int errorCode = UF_initialize();
UF_MODL_create_cylinder (sign, target_tag, origin,height, diam,direction, [$cyl_tag )]
    UF_MODL_ask_body_edges (cyl_tag, [$edge_list )]
UF_MODL_create_blend ( radius, edge_list, 0,0,0, vrb_tool,[$blend_tag )]
   if ( 0 == errorCode )
  {
        /* TODO: Add your application code here */
  
        /* Terminate the API environment */
        errorCode = UF_terminate();
    }
  
请斑竹指点哪里出了问题::?
作者: liberty000    时间: 2003-12-4 10:29
     我个人认为UF_MODL_ask_body_edges (cyl_tag, &edge_list )应该改用
UF_MODL_ask_feat_edges (cyl_tag, &edge_list ),你创建的不是body,而是feature。
作者: wgwang    时间: 2003-12-4 11:43
谢谢liberty000 ,果然如此;
但我还是不明白什么时候是body,什么时候又是feature呢,
还有如果我只想倒一头,那我怎么从LIST里选呢,谢谢指点!
作者: liberty000    时间: 2003-12-4 13:09
你先用函数UF_MODL_ask_feat_edges (tag_t feature_obj_id, uf_list_p_t * object_list ),找到所需的面,然后再用UF_MODL_ask_face_edges (
tag_t face, uf_list_p_t * edge_list )找面上的边,如果需要的话再用函数UF_MODL_ask_edge_verts (tag_t edge, double point1[ 3 ],  
double point2[ 3 ], int * vertex_count ),利用所需边的特征找边。
作者: wgwang    时间: 2003-12-4 15:57
再次感谢liberty000 兄,你第一个函数应为UF_MODL_ask_feat_faces吧:)
  
感觉UG的C OPEN这套开发太麻烦了,效率不高,不知兄台有没有用过它的C++OPEN呢,效率会高点吗。
  
还想问一下body, feat, feature到底有什么区别?
比如
UF_MODL_ask_body_faces(...)
UF_MODL_ask_feat_faces(....)
有什么区别,我老把feat认为feature, 搞的头都大了。
  
请斑竹和各位高人解释一下吧。谢谢!
作者: liberty000    时间: 2003-12-4 17:21
wgwang wrote:
再次感谢liberty000 兄,你第一个函数应为UF_MODL_ask_feat_faces吧:)  
  感觉UG的C OPEN这套开发太麻烦了,效率不高,不知兄台有没有用过它的C++OPEN呢,效率会高点吗?  
  

对不起!弄错了!
c++open目前似乎功能不全。
作者: hirener    时间: 2003-12-5 16:36
ug的返回值这些情况下,有时候是feature tag, 有时候是body tag,两个是不一样的。就像sheet body 和face的区别。要看返回值的说明。如你这个函数最后一个返回值:tag_t *  cyl_tag Output Cylinder feature tag  
说了是feature tag。
feat 就是feature的简称。
feature 和body 的区别:
body是一个实体,feature是特征
body上面可能有很多个feature,比如你把你的圆柱倒圆角,那么还是一个body,特征就多了。
作者: hirener    时间: 2003-12-5 16:43
调函数时候,判断返回值。
如:
irc = UF_MODL_ask_body_edges (cyl_tag, [$edge_list )]  
if(irc)
{
     char mess[133];
  
     UF_get_fail_message(irc, mess);
     uc1601(mess, 1);
}
或者用宏来判断
这样就可以检查哪个函数出错了




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