找回密码 注册 QQ登录
一站式解决方案

iCAx开思网

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

UG API 装配问题!

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

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

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

x
我想请教各位一个问题:
如果在UG的装配中已经由UF_ASSEM_solve_mc(&ftf,&status,&dof,transform)函数正确求解,那么当接下来执行
UF_ASSEM_apply_mc_data(&ftf,&struct_status,&status)函数将配对条件应用到装配时,不能顺利进行,即:struct_status不等于UF_ASSEM_structure_ok
请问这是什么原因啊?
是不是与引用集相关呢?
多谢大家啊!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 赞一下!赞一下!
2
发表于 2006-12-5 17:09:42 | 只看该作者
把代码贴上来
3
发表于 2006-12-6 19:17:02 | 只看该作者
下面的是具体的程序。

[ 本帖最后由 chengcheng82 于 2006-12-6 21:29 编辑 ]
4
发表于 2006-12-6 19:25:12 | 只看该作者

2

char message[133];
         message[0]='\0';
         strcpy(message,"请选择第一个面");
         UF_UI_selection_options_t opts;
         UF_UI_mask_t mask;
         int response;
         tag_t first_plan,view;
         double cursor[3];
         int unhighlight=0;

                      opts.other_options=0;
         opts.reserved=NULL;
         opts.num_mask_triples=1;
         opts.mask_triples=&mask;
     opts.mask_triples->object_type=UF_face_type;
     opts.mask_triples->object_subtype=UF_bounded_plane_subtype;
     opts.mask_triples->solid_type=UF_UI_SEL_FEATURE_ANY_FACE;
     opts.scope=UF_UI_SEL_SCOPE_ANY_IN_ASSEMBLY;

         int type;
         double point[3],dir[3],box[6],radius,rad_data;
         int norm_dir;
            do
         {
              int irc=UF_UI_select_single(message,&opts,&response,&first_plan,cursor,&view);
                  UF_MODL_ask_face_data(first_plan,&type,point,dir,box,&radius,&rad_data,
        &norm_dir);
                  if(type!=22)
                  {
                                                                   uc1601("请选择一个平面",1);
                           UF_DISP_set_highlight(first_plan,0);
                  }
         }
         while(!(type==22&&response==5));
     if(response!=5)
         {
                                             uc1601("没有选择平面",1);
                  UF_terminate();
                  return(UF_UI_CB_CONTINUE_DIALOG);
         }
int ret;
tag_t from_part_occ;
ret=UF_ASSEM_ask_parent_component(first_plan,&from_part_occ);
logical is_occ=UF_ASSEM_is_occurrence(from_part_occ);
tag_t from_part_inst=UF_ASSEM_ask_inst_of_part_occ(from_part_occ);

char part_name[132+1];
char refset_name[30+1];
char instance_name[30+1];
double origin[3];
double csys_matrix[9];
double transform[4][4];
ret=UF_ASSEM_ask_component_data(from_part_occ,part_name,refset_name,instance_name,
                                                                origin,csys_matrix,transform);
uc1601(instance_name,1);
   
     message[0]='\0';
         strcpy(message,"请选择第二个面");
         tag_t second_plan;
     do
         {
              int irc=UF_UI_select_single(message,&opts,&response,&second_plan,cursor,&view);
                  UF_MODL_ask_face_data(second_plan,&type,point,dir,box,&radius,&rad_data,
        &norm_dir);
                  if(type!=22)
                  {
                           uc1601("请选择一个平面",1);
                           UF_DISP_set_highlight(second_plan,0);
                  }
         }
         while(!(type==22&&response==5));
         if(response!=5)
         {
                  uc1601("没有选择平面",1);
                  UF_terminate();
                  return(UF_UI_CB_CONTINUE_DIALOG);
         }

     tag_t to_part_occ;
     ret=UF_ASSEM_ask_parent_component(second_plan,&to_part_occ);
    tag_t to_part_ins=UF_ASSEM_ask_inst_of_part_occ(to_part_occ);
    ret=UF_ASSEM_ask_component_data(to_part_occ,part_name,refset_name,instance_name,                                                        origin,csys_matrix,transform);
     uc1601(instance_name,1);

     UF_ASSEM_mating_condition_t ftf;
     UF_ASSEM_init_mc(&ftf);
     ftf.mated_object=from_part_inst;
     ftf.name=NULL;//"tool->assemly";
     ftf.user_name=FALSE;
     ftf.constraints[0].from_status=UF_ASSEM_ok;
     ftf.constraints[0].to_status=UF_ASSEM_ok;
     ftf.constraints[0].mate_type=UF_ASSEM_v16_mate;
     ftf.constraints[0].from_type=UF_ASSEM_planar_face;
     ftf.constraints[0].to_type=UF_ASSEM_planar_face;
  
     ftf.constraints[0].from=UF_ASSEM_ask_prototype_of_occ(first_plan);
     ftf.constraints[0].from_part_occ=from_part_occ;
     ftf.constraints[0].to=UF_ASSEM_ask_prototype_of_occ(second_plan);
     ftf.constraints[0].to_part_occ=to_part_occ;
     ftf.constraints[0].offset=NULL_TAG;
     ftf.constraints[0].name="face to face";
     ftf.constraints[0].user_name=TRUE;
     ftf.num_constraints=1;
     ftf.suppressed=FALSE;
     UF_ASSEM_mc_status_t status;
  
     UF_ASSEM_mc_structure_state_t struct_status;
     UF_ASSEM_dof_t dof;
     ret=UF_ASSEM_solve_mc(&ftf,&status,&dof,transform);
     if(ret==0||status==UF_ASSEM_mc_solved)
  {
         ret=UF_ASSEM_apply_mc_data(&ftf,&struct_status,&status);
          if (struct_status=UF_ASSEM_structure_ok)
                  uc1601("成功求解",1);
          UF_DISP_refresh();
          uc1601("第一个点",1);
          UF_MODL_update();
         uc1601("第2个点",1);
  }
  UF_DISP_set_highlight(second_plan,0);
   uc1601("第3个点",1);
  UF_DISP_set_highlight(first_plan,0);
   uc1601("第4个点",1);
  UF_terminate();
    /* Callback acknowledged, terminate dialog             */
    /* It is STRONGLY recommended that you exit your       */
    /* callback with UF_UI_CB_EXIT_DIALOG in a ok callback.*/
    /* return ( UF_UI_CB_EXIT_DIALOG );                    */
    return (UF_UI_CB_CONTINUE_DIALOG);                           

}


问题:程序已经通过编译。可以得到:status=UF_ASSEM_mc_solved
           但是当应用 ret=UF_ASSEM_apply_mc_data(&ftf,&struct_status,&status);函数时,
并不能使其参数得到struct_status=UF_ASSEM_structure_ok,即,不能显示“成功求解”对话框。
另外,第一到第四个点都能执行到。
请问是什么原因呢?

十分感谢!!!

[ 本帖最后由 chengcheng82 于 2006-12-7 19:59 编辑 ]
5
发表于 2006-12-7 14:31:13 | 只看该作者
问一下,有知道二次开发的函数的全介绍的资料的吗?
6
发表于 2006-12-8 17:58:26 | 只看该作者
chengcheng82兄弟;
看了你的代码,编译运行后程序没有问题,两个面也装配在了一起;
如果还有什么问题可以来我的网站找我:西安天空网(https://www.xiansky.com
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

GMT+8, 2025-1-16 05:49 , Processed in 0.032906 second(s), 11 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2025 www.iCAx.org

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