iCAx开思网

标题: 【求助】关于函数UF_MODL_create_extruded() [打印本页]

作者: tari    时间: 2004-9-14 09:45
标题: 【求助】关于函数UF_MODL_create_extruded()
我在使用该函数时,系统提示错误为:section curves are not connected each other
UF_MODL_create_extruded(loop_list,taper_angle,limit,ref_pt,direction,create,feature);
各条曲线我通过UF_MODL_put_list_item()函数添加进去了,恳请指点!
作者: tari    时间: 2004-9-14 10:30
下面是相关的一段代码:(base_pt是点构造器生成的点,arc1是以base_pt为中心生成的圆)
UF_MODL_create_list([$loop_list)]
  if(edge!=NULL_TAG)
  {
    UF_MODL_ask_edge_faces(edge,[$face_list)]
   p3=face_list;
  while(p3!=NULL)
  {
    UF_MODL_ask_face_parm(p3->eid,base_pt,parm,face_pt);
    UF_MODL_ask_face_props(p3->eid,parm,point,[$u1,&v1,&u2,&v2,unit_norm,&radii)]
   UF_VEC3_is_parallel(unit_norm,direction,tolerance,[$is_parallel)]
   if(is_parallel!=1)
  {
     face=p3->eid;
     break;
  }
  p3=p3->next;
}
UF_MODL_create_curve_from_edge(edge,[$curve)]
UF_MODL_ask_curve_parm(curve,base_pt,[$param,curve_pt)]
double tolerance=0.0254;
int num_intersections;
UF_MODL_intersect_info_p_t  *intersections;
UF_MODL_intersect_objects(curve,arc1,tolerance,[$num_intersections,&intersections)]
for(int kk=0;kk<3;kk++)
{
   curve1_pt[kk]=intersections[0]->intersect.point.coords[kk];
   curve2_pt[kk]=intersections[1]->intersect.point.coords[kk];
}    
  
UF_MODL_ask_face_parm(face,curve_pt,parm,face_pt);
UF_MODL_ask_face_props(face,parm,point,[$u1,&v1,&u2,&v2,unit_norm,&radii)]
for(int i=0;i<3;i++)
{
   second_pt=curve_pt+unit_norm*3.5;
}
   UF_MODL_ask_face_parm(face,curve1_pt,parm,face_pt);
  UF_MODL_ask_face_props(face,parm,point,[$u1,&v1,&u2,&v2,unit_norm,&radii)]
for(i=0;i<3;i++)
{
    first_pt=curve1_pt+unit_norm*0.5;
}
  sline.start_point[0]=curve1_pt[0];
sline.start_point[1]=curve1_pt[1];
sline.start_point[2]=curve1_pt[2];
sline.end_point[0]=first_pt[0];
sline.end_point[1]=first_pt[1];
sline.end_point[2]=first_pt[2];
UF_CURVE_create_line([$sline,&line1)]
UF_MODL_put_list_item(loop_list,line1);
UF_MODL_ask_face_parm(face,curve2_pt,parm,face_pt);
UF_MODL_ask_face_props(face,parm,point,[$u1,&v1,&u2,&v2,unit_norm,&radii)]
for(i=0;i<3;i++)
{
third_pt=curve2_pt+unit_norm*0.5;
}
sline.start_point[0]=curve2_pt[0];
sline.start_point[1]=curve2_pt[1];
sline.start_point[2]=curve2_pt[2];
sline.end_point[0]=third_pt[0];
sline.end_point[1]=third_pt[1];
sline.end_point[2]=third_pt[2];
UF_CURVE_create_line([$sline,&line2)]
UF_MODL_put_list_item(loop_list,line2);
sline.start_point[0]=curve1_pt[0];
sline.start_point[1]=curve1_pt[1];
sline.start_point[2]=curve1_pt[2];
sline.end_point[0]=curve2_pt[0];
sline.end_point[1]=curve2_pt[1];
sline.end_point[2]=curve2_pt[2];
UF_CURVE_create_line([$sline,&line3)]
UF_MODL_put_list_item(loop_list,line3);
UF_CURVE_create_arc_thru_3pts(create_flag,first_pt,second_pt,third_pt,[$arc_tag)]
UF_MODL_put_list_item(loop_list,arc_tag);
UF_CURVE_ask_arc_data(arc_tag,[$arc)]
UF_CURVE_arc_t  arc_coords;
tag_t circle;
tag_t body;
arc_coords.matrix_tag=arc.matrix_tag;
  for(i=0;i<3;i++)
  arc_coords.arc_center=arc.arc_center;
  arc_coords.start_angle=0;
arc_coords.end_angle=360*DEGRA;
arc_coords.radius=1;        
UF_CURVE_create_arc([$arc_coords,&circle)]
UF_MODL_put_list_item(loop_list,circle);
    
rc=UF_MODL_create_extruded(loop_list,taper_angle,limit,ref_pt,direction,create,[$feature)]
if(rc)
{
   UF_get_fail_message(rc,msg);
   printf("error=%s\n",msg);
}
loop_list包含的5段曲线都是有值的
作者: tari    时间: 2004-9-14 17:59
各位高手指点一下吧!
作者: 刘亮    时间: 2004-9-14 20:01
朋友
UF_MODL_create_extruded()在哪个头文件里啊?
我怎么找不到啊
作者: tari    时间: 2004-9-14 20:03
uf_modl.h
作者: 刘亮    时间: 2004-9-14 20:37
怎么还是没有啊?是不是在uf_modl.h 里?
作者: 刘亮    时间: 2004-9-14 20:43
在uf_modl_sweep.h里
作者: tari    时间: 2004-9-14 22:13
我换了一个零件执行没问题,迷惑中!
各位继续指点,谢谢!
作者: tari    时间: 2004-9-14 22:30
下面两副图就是对应执行的情况:
作者: tari    时间: 2004-9-14 22:31
这个零件就不行
作者: tari    时间: 2004-9-15 08:57
我利用上面自动生成的线用UG自带的拉伸命令执行,错误提示如图:
作者: yanfang1108    时间: 2004-9-15 09:34
我也遇到过这种问题,你再好好检查一下,你看一下,你的拉伸曲线是不是不是封闭的?
作者: tari    时间: 2004-9-15 09:51
这个问题我解决了,是曲线不在同一个平面造成曲线不封闭,谢谢大家!




欢迎光临 iCAx开思网 (https://www.icax.org/) Powered by Discuz! X3.3