iCAx开思工具箱

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 27004|回复: 15
打印 上一主题 下一主题

向zzz版主大哥请教个曲线相交得交点的问题

[复制链接]
跳转到指定楼层
楼主
发表于 2008-4-8 14:22:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册登录,享用更多网站功能!

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

x
ZZZ和各位版主,各位学长 很不好意思现在还因为这么简单的问题打扰大家,但小弟试了很多次了就是得不到结果, 在建立好的模型上做条截面线,然后哦求得2截面线的交点,截面线我做出来了 但交点始终得不到 ,请ZZZ大哥和其他各位学长帮我看看,感激不尽
void ufusr(char *param, int *retcode, int param_len)
{
  if (!UF_CALL(UF_initialize()))
  {
//////////////////////////////////////////////////////////获得当前叶object_id
  
  int             type1,subtype;
  tag_t           part_tag;
  tag_t           block_tag;
  tag_t           plane1_tag;
  
  part_tag=UF_PART_ask_display_part();

  block_tag=NULL_TAG;

  UF_OBJ_cycle_objs_in_part(part_tag,UF_solid_type,&block_tag);

  while (block_tag)
  {
          UF_OBJ_ask_type_and_subtype(block_tag,&type1,&subtype);
  if (subtype==UF_solid_body_subtype)
  {
          break;
  }
  UF_OBJ_cycle_objs_in_part(part_tag,UF_solid_type,&block_tag);
  }
////////////////第一条截面线
double  origin1_point[3];
double  pl1_normal[3];
  
  origin1_point[0] = 20.0;
  origin1_point[1] = 40.0;
  origin1_point[2] = 0;
  
  pl1_normal[0] = 0.0;
  pl1_normal[1] = 0.0;
  pl1_normal[2] = 1.0;


  
UF_MODL_create_plane(origin1_point, pl1_normal, &plane1_tag);

    tag_t  objects1[1];
        tag_t  planes1[100];

objects1[0]=block_tag;

  
   tag_t section_curves_feature1;
   UF_CURVE_section_general_data_t  general1_data;
    UF_CURVE_section_planes_data_t   planes1_data;


       
    planes1[0] = plane1_tag;
    general1_data.associate     = 1;
    general1_data.objects       = objects1;
    general1_data.num_objects   = 1;
    general1_data.grouping      = 0;
    general1_data.join_type     = 0;
    general1_data.tolerance     = 0.0245;

    planes1_data.planes         = planes1;
    planes1_data.num_planes     = 1;

UF_CURVE_section_from_planes (&general1_data, &planes1_data,
                   &section_curves_feature1);

double  origin2_point[3];
double  pl2_normal[3];
  
  origin2_point[0] = 20.0;
  origin2_point[1] = 0;
  origin2_point[2] = 40.0;
  
  pl2_normal[0] = 0.0;
  pl2_normal[1] = 1.0;
  pl2_normal[2] = 0.0;

//////////////////////第二截面线
  tag_t plane2_tag;
UF_MODL_create_plane(origin2_point, pl2_normal, &plane2_tag);

    tag_t  objects2[1];
        tag_t  planes2[100];

objects2[0]=block_tag;

  
   tag_t section_curves_feature2;
   UF_CURVE_section_general_data_t  general2_data;
   UF_CURVE_section_planes_data_t   planes2_data;


       
    planes2[0] = plane2_tag;
    general2_data.associate     = 1;
    general2_data.objects       = objects2;
    general2_data.num_objects   = 1;
    general2_data.grouping      = 0;
    general2_data.join_type     = 0;
    general2_data.tolerance     = 0.0245;

    planes2_data.planes         = planes2;
    planes2_data.num_planes     = 1;

UF_CURVE_section_from_planes (&general2_data, &planes2_data,
                   &section_curves_feature2);

////////////////////求交
  int num_intersects, type;
  UF_MODL_intersect_info_p_t *intersect_data;



double tol = 0.1;

UF_MODL_intersect_objects(section_curves_feature2,section_curves_feature1,
                                                  tol,&num_intersects,&intersect_data);
红色部分是不是有错误?
FILE *fp4;


   if((fp4=fopen("e:\\my_source\\line4.txt","w"))==NULL)
   {
             printf("could not open data file.");
             exit(0);
   }

int i;
  for(i = 0; i < num_intersects; i++)
  {
    type = (intersect_data)->intersect_type;

       
    switch(type)
    {
      case UF_MODL_INTERSECT_POINT:

        fprintf(fp4,"\nx,y,z coordinates are: (%f, %f, %f)\n",
               (intersect_data)->intersect.point.coords[0],
               (intersect_data)->intersect.point.coords[1],
               (intersect_data)->intersect.point.coords[2]);

        fprintf(fp4,"Object 1 UV parameters are: (%f, %f)\n",
               (intersect_data)->intersect.point.object_1_u_parm,
               (intersect_data)->intersect.point.object_1_v_parm);

        fprintf(fp4,"Object 2 UV parameters are: (%f, %f)\n",
               (intersect_data)->intersect.point.object_2_u_parm,
               (intersect_data)->intersect.point.object_2_v_parm);

        break;

      case UF_MODL_INTERSECT_COINCIDE:

        printf("\nCoincident curve tag is: %d\n",
               intersect_data->intersect.coincide.identifier);

        printf("Object 1 UV parameters are: (%f, %f)\n",
               intersect_data->intersect.coincide.object_1_first_parm,
               intersect_data->intersect.coincide.object_1_second_parm);

        printf("Object 2 UV parameters are: (%f, %f)\n",
               intersect_data->intersect.coincide.object_2_first_parm,
               intersect_data->intersect.coincide.object_2_second_parm);
        break;

      case UF_MODL_INTERSECT_CURVE:

        printf("\nThe curve identifier is: %d\n",
               (intersect_data)->intersect.curve.identifier);
        break;

      default:

        printf("\nSomething went wrong, we shouldn't be here!");
        break;
    }

   // Free each element of the array.
      UF_free(intersect_data);
  }

  if(num_intersects != 0)
  {
  //// Free the array.
    UF_free(intersect_data);
  }


    UF_CALL(UF_terminate());
  }
}

int ufusr_ask_unload(void)
{
  return (UF_UNLOAD_IMMEDIATELY);
}

1.jpg (15.59 KB, 下载次数: 8)

图
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 支持支持
沙发
发表于 2008-4-9 22:47:15 | 只看该作者

马上注册登录,享用更多网站功能!

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

x
板凳
 楼主| 发表于 2008-4-11 14:29:50 | 只看该作者

马上注册登录,享用更多网站功能!

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

x
地板
发表于 2008-4-11 20:24:21 | 只看该作者

马上注册登录,享用更多网站功能!

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

x
5
 楼主| 发表于 2008-4-15 08:36:02 | 只看该作者

马上注册登录,享用更多网站功能!

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

x
6
 楼主| 发表于 2008-4-15 09:37:57 | 只看该作者

马上注册登录,享用更多网站功能!

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

x

未命名.JPG (31.34 KB, 下载次数: 7)

未命名.JPG
7
 楼主| 发表于 2008-4-15 10:10:50 | 只看该作者

马上注册登录,享用更多网站功能!

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

x
8
 楼主| 发表于 2008-4-15 10:28:49 | 只看该作者

马上注册登录,享用更多网站功能!

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

x
9
发表于 2008-4-15 11:13:29 | 只看该作者

马上注册登录,享用更多网站功能!

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

x
10
 楼主| 发表于 2008-4-15 11:14:05 | 只看该作者

马上注册登录,享用更多网站功能!

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

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手板模型制作,在线3D打印服务

QQ|小黑屋|手机版|开思工具箱 CAD工具箱_CAM工具箱  

GMT+8, 2024-12-22 22:16 , Processed in 0.022123 second(s), 9 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2024 www.iCAx.org

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