找回密码 注册 QQ登录
开思网工业级高精度在线3D打印服务

iCAx开思网

CAD/CAM/CAE/设计/模具 高清视频【积分说明】如何快速获得积分?快速3D打印 手板模型CNC加工服务在线3D打印服务,上传模型,自动报价
查看: 18314|回复: 13
打印 上一主题 下一主题

【求助】UF_MODL_create_chamfer的用法

[复制链接]
跳转到指定楼层
1
发表于 2004-3-31 21:19:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多同行朋友,交流,分享,学习。

您需要 登录 才可以下载或查看,没有帐号?注册

x
  我在精华区  手把手教你学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)]
这些可以画出圆柱,下面怎么导角呢?请各位帮帮忙阿
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 赞一下!赞一下!
2
发表于 2004-4-1 08:43:14 | 只看该作者
我不太清楚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()来倒角了。当然,如果你想把这个面上所有的边都倒掉,那就不必判断了。直接挨着倒就行了
3
发表于 2004-4-1 09:51:23 | 只看该作者
谢谢上面的那位回答,我在精华区 手把手教你学ug二次开发中看到chamfer的用法,是zzz编辑的,希望明白这个问题的大侠们再指点一下,非常感激
4
发表于 2004-4-1 10:49:38 | 只看该作者
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)]
5
发表于 2004-4-1 10:53:58 | 只看该作者
帮帮我阿,各位大侠,我急着用这个函数阿,
6
发表于 2004-4-1 10:55:26 | 只看该作者
谢谢上面这位阿,万分感谢
7
发表于 2004-4-1 10:58:40 | 只看该作者
请问windcc 大侠:我在圆柱上导角,要用到那一个阿,
8
发表于 2004-4-1 11:00:55 | 只看该作者
  
  
  
  
UF_MODL_create_chamfer是边倒角,倒出来的是倒角是个小平面。blend是圆倒角,倒出来的是曲面 ,在圆柱上导角,要用blend吗
9
发表于 2004-4-1 11:29:02 | 只看该作者
请教问题 wrote:
请问windcc 大侠:我在圆柱上导角,要用到那一个阿,

  
想要什么就用什么函数做呗:)
要用blend就用blend,要用chamfer就用chamfer呗
10
发表于 2004-4-1 11:34:48 | 只看该作者
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)]
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3D打印手板模型快速制作服务,在线报价下单!

QQ 咨询|手机版|联系我们|iCAx开思网  

GMT+8, 2024-12-29 13:43 , Processed in 0.038362 second(s), 11 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2024 www.iCAx.org

快速回复 返回顶部 返回列表