iCAx开思工具箱

标题: 【求助】UF_MODL_create_chamfer的用法 [打印本页]

作者: 请教问题    时间: 2004-3-31 21:19
标题: 【求助】UF_MODL_create_chamfer的用法
  我在精华区  手把手教你学ug二次开发中看到UF_MODL_create_chamfer的用法,但是没看懂,希望哪位大侠给举一个简单的例子,在圆柱上导角,
UF_FEATURE_SIGN sign=UF_NULLSIGN;
double origin[ 3 ]={0.0,0.0,0.0};
char * height="6";
char * diam="2";
ouble direction[ 3 ]={0.0,0.0,1.0};
tag_t  cyl_obj_id=0;
  i_ret=UF_MODL_create_cylinder ( sign, NULL, origin, height,diam,direction, [$ cyl_obj_id)]
这些可以画出圆柱,下面怎么导角呢?请各位帮帮忙阿
作者: goodluckwu    时间: 2004-4-1 08:43
我不太清楚chamfer和blend的区别,不过我做过blend,是这样的,也许对你有帮助:
     1。使用UF_MODL_ask_body_faces()获得所有的face。
     2。便利所有face,使用UF_MODL_ask_face_props(),提取每个face的法线方向,找到你要的face(如果你使用别的方法来区分你所要倒角的面也可以)
    3。使用UF_MODL_ask_face_edges()获得该面所有的边。
    4。使用UF_ask_curve_data()之类的函数来判断是否是你想要的边。找到了就可以调用UF_MODL_create_blend()来倒角了。当然,如果你想把这个面上所有的边都倒掉,那就不必判断了。直接挨着倒就行了
作者: 请教问题    时间: 2004-4-1 09:51
谢谢上面的那位回答,我在精华区 手把手教你学ug二次开发中看到chamfer的用法,是zzz编辑的,希望明白这个问题的大侠们再指点一下,非常感激
作者: windcc    时间: 2004-4-1 10:49
UF_MODL_create_chamfer是边倒角,倒出来的是倒角是个小平面。blend是圆倒角,倒出来的是曲面,往里凹或者往外凸,自动判断。
UF_MODL_create_chamfer我做过一个例子。
  
参数:
    int    cyl_1_num_faces,ii,cyl_1_num_edge;
  
  double rad[2]={0,0};
  
    double cyl_1_face_param[2],cyl_1_face_point[3],cyl_1_face_u_deriv1[3];
    double cyl_1_face_v_deriv1[3],cyl_1_face_u_deriv2[3],cyl_1_face_v_deriv2[3];
    double cyl_1_face_normal[3],cyl_1_face_radii[2];
  
    uf_list_p_t cyl_1_face_list, cyl_1_edge_list, chamfer_1_edge_list;
  
  tag_t cyl_1_face_tag, place_face[2],cyl_1_edge_tag[2],edge_obj_1;
  
  UF_CURVE_arc_t cyl_1_arc_coords;  
  
  int chamfer_1_subtype = 2;            /*2 = Double Offset*/
  char * chamfer_1_offset1 = "0.3";
  char * chamfer_1_offset2 = "0.3";  
  char * chamfer_1_theta = "0";
  //uf_list_p_t chamfer_1_edge_list;
  tag_t  chamfer_feature_obj_1;  
实现:
    UF_MODL_ask_feat_faces(cyl_obj_1, [$cyl_1_face_list)]
    UF_MODL_ask_list_count(cyl_1_face_list, [$cyl_1_num_faces)]
  
    cyl_1_face_param[0] = 0.5;
    cyl_1_face_param[1] = 0.5;
  
  for (ii = 0;ii < cyl_1_num_faces;ii++)
    {
      UF_MODL_ask_list_item(cyl_1_face_list, ii, [$cyl_1_face_tag)]
  
      UF_MODL_ask_face_props(cyl_1_face_tag,
                             cyl_1_face_param,
                             cyl_1_face_point,
                             cyl_1_face_u_deriv1,cyl_1_face_v_deriv1,
                             cyl_1_face_u_deriv2,cyl_1_face_v_deriv2,
                             cyl_1_face_normal,cyl_1_face_radii);
  
    if (cyl_1_face_normal[2] < -0.75)
      place_face[ 0 ] = cyl_1_face_tag;
   }
  
  UF_MODL_ask_face_edges (place_face[ 0 ], [$cyl_1_edge_list)]
  UF_MODL_ask_list_count(cyl_1_edge_list, [$cyl_1_num_edge)]
  
  for(ii=0;ii<cyl_1_num_edge;ii++)
  {
    UF_MODL_ask_list_item(cyl_1_edge_list, ii, [$cyl_1_edge_tag[ii])]
    UF_CURVE_ask_arc_data (cyl_1_edge_tag[ii], [$cyl_1_arc_coords)]
    rad[ii] = cyl_1_arc_coords.radius;
    
  }
    if(rad[ 0 ] > rad[ 1 ] )
    {
      edge_obj_1 = cyl_1_edge_tag[ 0 ];
    }
    else
    {
      edge_obj_1 = cyl_1_edge_tag[ 1 ];
    }
  
  UF_MODL_create_list([$chamfer_1_edge_list)]
  
  UF_MODL_put_list_item(chamfer_1_edge_list, edge_obj_1);
  
  UF_MODL_create_chamfer (chamfer_1_subtype,  
              chamfer_1_offset1,  
              chamfer_1_offset2,  
              chamfer_1_theta,  
              chamfer_1_edge_list,  
              [$chamfer_feature_obj_1)]
作者: 请教问题    时间: 2004-4-1 10:53
帮帮我阿,各位大侠,我急着用这个函数阿,
作者: 请教问题    时间: 2004-4-1 10:55
谢谢上面这位阿,万分感谢
作者: 请教问题    时间: 2004-4-1 10:58
请问windcc 大侠:我在圆柱上导角,要用到那一个阿,
作者: 请教问题    时间: 2004-4-1 11:00
  
  
  
  
UF_MODL_create_chamfer是边倒角,倒出来的是倒角是个小平面。blend是圆倒角,倒出来的是曲面 ,在圆柱上导角,要用blend吗
作者: windcc    时间: 2004-4-1 11:29
请教问题 wrote:
请问windcc 大侠:我在圆柱上导角,要用到那一个阿,

  
想要什么就用什么函数做呗:)
要用blend就用blend,要用chamfer就用chamfer呗
作者: windcc    时间: 2004-4-1 11:34
blend:
参数:
/*8倒角的参数*/  
  
/*取圆柱体1的平面,判断参数*/
    int    num_faces,ii,num_mao,num_edge;
  
    double face_param[2],face_point[3],face_u_deriv1[3];
    double face_v_deriv1[3],face_u_deriv2[3],face_v_deriv2[3];
    double face_normal[3],face_radii[2];
  
    uf_list_p_t face_list;
  
  //tag_t  place_face[1];
    tag_t face_tag, mao_tag,edge_tag,edge_obj_cir;
  //tag_t top_face[1],
  
  uf_list_p_t  cy1_edge_list, blend1_edge_list;
  
int edge_type;
  
  const char * blend1_radius = "0.2";
//  uf_list_p_t blend1_edge_list;
  int blend1_smooth_overflow = 0;
  int blend1_cliff_overflow = 0;
  int blend1_notch_overflow = 0;  
  double blend1_vrb_tool = 0;
  tag_t blend1_feature_obj_1;
  
实现:
  
  //从体取面
    UF_MODL_ask_feat_faces(mao_tag  , [$face_list)]
  
    UF_MODL_ask_list_count(face_list, [$num_faces)]
  
    face_param[0] = 0.5;
    face_param[1] = 0.5;
  
  for (ii = 0;ii < num_faces;ii++)
    {
      UF_MODL_ask_list_item(face_list, ii, [$face_tag)]
  
      UF_MODL_ask_face_props(face_tag,
                             face_param,
                             face_point,
                             face_u_deriv1,face_v_deriv1,
                             face_u_deriv2,face_v_deriv2,
                             face_normal,face_radii);
  
  //  if (face_normal[2] > 0.75)
      //  place_face[0] = face_tag;
     // if (face_normal[1] < -0.75)
      //  top_face[0] = face_tag;
    }
  
  //从面取线
  UF_MODL_ask_face_edges (face_tag, [$cy1_edge_list)]
  UF_MODL_ask_list_count(cy1_edge_list, [$num_edge)]
  
  for(ii=0;ii<num_edge;ii++)
  {
    UF_MODL_ask_list_item(cy1_edge_list, ii, [$edge_tag)]
  
    
    UF_MODL_ask_edge_type (
              edge_tag,  
               [$edge_type)]
  
    if(edge_type == UF_MODL_CIRCULAR_EDGE)
    {
      edge_obj_cir = edge_tag;
    }
  
    //  sprintf(temp,"vertex_count=%f\n",point1[2]);
  
    //    UF_UI_write_listing_window(temp);
  
  }
  
  
  
  UF_MODL_create_list([$blend1_edge_list)]
  
  UF_MODL_put_list_item(blend1_edge_list, edge_obj_cir);
  
  UF_MODL_create_blend (blend1_radius, blend1_edge_list, blend1_smooth_overflow, blend1_cliff_overflow, blend1_notch_overflow, blend1_vrb_tool, [$blend1_feature_obj_1)]
作者: 请教问题    时间: 2004-4-1 11:41
我是一个新手,对函数的用法不清楚,想做一个在圆柱边上导圆角,实在作不出来,
作者: 请教问题    时间: 2004-4-1 11:43
windcc 你好厉害阿,我很崇拜,想请问你的联习方式,好吗
作者: 请教问题    时间: 2004-4-3 16:51
windcc,请你帮我看看螺纹的画法好吗?我画不出,只能用特征表示
作者: jelowell    时间: 2007-4-17 19:19
我也急于知道 在二次开发中如何进行倒角




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