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

iCAx开思网

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

【求助】如何用api函数UF_MODL_intersect_objects()

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

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

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

x

    请教高手,我用一组基准平面和一片体相交得到一组截面线,然后我又在
其中一个基准面内画了一组平行直线,
    tag_t  section_curves[10]={NULL_TAG};
   UF_CURVE_section_from_planes ([$objects_section,&planes_data,section_curves)]
    .....
     tag_t lines[10]={NULL_TAG};
      for(...){
            ....
    UF_CURVE_create_line([$sline1,lines)]}
这些步骤我都实现了,现我想在画线的这个基准面内检查一条直线与此面内
  截面线交点的个数,因此用到函数:
           tag_t  curve1=section_curves[0];
           tag_t  curve2=lines[1];
           double tolerance=0.1;
           int       num_intersections;
           UF_MODL_intersect_info_t  **intersections;
  
         UF_MODL_intersect_objects      (   curve1, curve2, tolerance,  [$num_intersections,&intersections)]  
这样求出的num_intersections老是为0,而实际图形显示则有交叉,后来我采用另一方法来定义curve1和curve2,
/*select two curves*/
                                 char cue[]="sheet two curves";
    char title[]="选择曲线";
    int response,count,k=0;
    tag_p_t  objects;
    if(UF_UI_select_with_class_dialog(cue,title,UF_UI_SEL_SCOPE_WORK_PART,NULL,NULL,
      &response,&count,&objects)==0)
    {
      if(response==UF_UI_OK&&count>0)
      {
        for( k=0;k<count;k++)
      {
         UF_DISP_set_highlight(objects[k],0);
      }
        
      }
    }
    tag_t  curve1=objects[0];
                                 tag_t  curve1=objects[1];
结果我得到了正确的结果,num_intersections=2,有两个交叉点。我很是疑惑,为什么的第一种方法不行,而第二种方法可行。我不想用交互式方法,请高手指点,如何用第一种才行得通。急!!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 赞一下!赞一下!
2
发表于 2003-6-19 12:16:58 | 只看该作者
我现在还没有时间是你这个问题。我想你可以这样试一试:
1、先生成你要的那些线。然后调用UF_MODL_intersect_objects,可以下结果如何。
2、如果不行。就用交互式选择,还是选前面那两根线(tag要一致,顺序也不要反),就相当于用相同的参数调用UF_MODL_intersect_objects,看看他出什么结果。
  
如果第一部失败,第二部成功,那就真的有问题了。
3
发表于 2003-6-19 15:12:37 | 只看该作者
完全没有搞懂UF_CURVE_section_from_planes的用法,最后生成的section是一个feature,不是object,而且也不需要一个数组去接收它。
4
发表于 2003-6-23 19:54:59 | 只看该作者

   感谢zzz版主的提醒,如果要实现我前面所说的第一种办法的话,就必须得到SECTION的object。请问如何从它的feature tag获得它的object tag呢(交互式方法除外)。我好像没法找到这样的函数,有时间的话,还请大侠指点一二。
  谢谢!
5
发表于 2003-6-24 09:34:33 | 只看该作者
应该是UF_MODL_ask_feat_object()吧
6
发表于 2003-6-24 16:06:02 | 只看该作者
疑问:是不是这个函数本身有点问题?我前几天也用这个函数来求两条spline的交点。用UG显示明明有个交点,可是用函数却求不出来,num_intersections=0!!
希望zzz、spline等高手能找出问题所在!!ths
7
发表于 2003-6-24 17:12:07 | 只看该作者
这个函数我也用过啊,没有问题。出问题的最大可能是输入的tag类型不对。
单纯这样找问题是不可能的,如果可以的话,最好把你的代码贴出来。
8
发表于 2003-6-24 21:51:54 | 只看该作者
我程序中的两条spline的type和subtype相同,type=UF_spline_type;
subtype=UF_b_curve_b_spline_subtype;
第一条spline是通过UF_CURVE_create_joined_curve函数join一些spline得到的,第二条是用UF_MODL_create_curve_from_edge函数create一条edge得到的,应该都不会有什么问题吧!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

GMT+8, 2025-1-29 08:31 , Processed in 0.028770 second(s), 11 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2025 www.iCAx.org

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