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

iCAx开思网

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

【原创】UG18的UF_ASSEM_ask_mc_data_of_compnt(...)

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

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

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

x
我想用UG18.0中的UF_ASSEM_ask_mc_data_of_compnt(...)函数,导出组件的配合约束信息,在VC++6.0中用外部模式应用程序调用此函数时,编译时无错误,调试时出现“libufun.dll access violation" 错误,请问是什么原因?  
在UG的帮助文档中为什么也找不到此函数?  
  
=====以下是部分源程序==
     UF_ASSEM_ask_component_data(child_part_occs, part_name, refset_name,instance_name, origin, csys_matrix, transform);
    
     cout << "art Name is ";
     cout << part_name << endl;
     cout << "-------------instance_name is  ";
     cout << instance_name << endl;  
  
      logical * mated=NULL;
      UF_ASSEM_mating_condition_p_t  mc_data;
      int nResult=0;
     
      nResult=UF_ASSEM_ask_mc_data_of_compnt(child_part_occs,       mated, mc_data);       
              
       tag_t * mated_component=NULL;
      int * n_mated_components=NULL;
     
  nResult=UF_ASSEM_ask_comps_mated_to_me(child_part_occs, [$mated_component, n_mated_components)]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 赞一下!赞一下!
2
发表于 2003-8-6 21:54:33 | 只看该作者
是不是要初始化?我记得有个初始化函数。
3
发表于 2003-8-7 09:13:09 | 只看该作者
非常感谢版主,但我当时已经初始化了,我想不是这个原因。下面是完整的main(...)函数
===============
extern void main( char argc, char *argv[] )
{
    /* Initialize the API environment */
    int errorCode = UF_initialize();
  
    if ( 0 == errorCode )
    {
           UF_PART_load_status_t  error_status;
  
           char  part_name1[133]    ="d:\\WorkDir\\UgWorks\\jaw\\Jaw_03assmembly.prt";
          tag_t part1;
          UF_PART_open(part_name1, [$part1, &error_status)]  
          //获得装配根 root_part_occ
       tag_t  root_part_occ=UF_ASSEM_ask_root_part_occ(part1);
       tag_t *child_part_occs; //数组
  
      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];
  
    //查询装配根root_part_occ下面的子组件
  
     int partNum=UF_ASSEM_ask_part_occ_children(root_part_occ,  [$child_part_occs)]
  
   for(int i=0; i<partNum; i++)
   {
    //获得组件的属性数据
  
   UF_ASSEM_ask_component_data(child_part_occs, part_name, refset_name,instance_name, origin, csys_matrix, transform);
      
    cout << "art Name is ";
    cout << part_name << endl;
  
    cout << "-------------instance_name is  ";
    cout << instance_name << endl;  
  
    //重要的装配信息获取函数,  
    logical * mated=NULL;
    UF_ASSEM_mating_condition_p_t  mc_data;
    int nResult=0;
    
    nResult=UF_ASSEM_ask_mc_data_of_compnt(child_part_occs, mated, mc_data);
    nResult=UF_ASSEM_ask_comps_mated_to_me(child_part_occs, [$mated_component, n_mated_components)]
  
      //递归调用,遍历装配中组件
     CycleAllParts(child_part_occs);
      }
     
     UF_PART_close_all();
     errorCode = UF_terminate();
   }
  
    /* Print out any error messages */
   &nbsprintErrorMessage( errorCode );
}
4
发表于 2003-8-7 16:39:02 | 只看该作者
问题在这,看其中的红色部分。
  
septdragons wrote:
非常感谢版主,但我当时已经初始化了,我想不是这个原因。下面是完整的main(...)函数  
  ===============  
  extern void main( char argc, char *argv[] )  
  {  
      /* Initialize the API environment */  
      int errorCode = UF_initialize();  
  
      if ( 0 == errorCode )  
      {  
             UF_PART_load_status_t  error_status;  
  
             char  part_name1[133]    ="d:\\WorkDir\\UgWorks\\jaw\\Jaw_03assmembly.prt";  
            tag_t part1;  
            UF_PART_open(part_name1, [$part1, &error_status)]   
            //获得装配根 root_part_occ  
         tag_t  root_part_occ=UF_ASSEM_ask_root_part_occ(part1);  
         tag_t *child_part_occs; //数组  
  
        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];  
  
      //查询装配根root_part_occ下面的子组件  
  
       int partNum=UF_ASSEM_ask_part_occ_children(root_part_occ,  [$child_part_occs)]  
      
     for(int i=0; i<partNum; i++)  
     {  
      //获得组件的属性数据  
  
     UF_ASSEM_ask_component_data(child_part_occs, part_name, refset_name,instance_name, origin, csys_matrix, transform);  
         
      cout << "art Name is ";  
      cout << part_name << endl;  
      
      cout << "-------------instance_name is  ";  
      cout << instance_name << endl;   
  
      //重要的装配信息获取函数,   
      logical * mated=NULL;  
      UF_ASSEM_mating_condition_p_t  mc_data; -> 该为:UF_ASSEM_mating_condition_t mc_data;
      int nResult=0;  
        
      nResult=UF_ASSEM_ask_mc_data_of_compnt(child_part_occs, mated, [$mc_data)]  
      nResult=UF_ASSEM_ask_comps_mated_to_me(child_part_occs, [$mated_component, n_mated_components)]  
  
        //递归调用,遍历装配中组件  
       CycleAllParts(child_part_occs);  
        }  
         
       UF_PART_close_all();  
       errorCode = UF_terminate();  
     }  
  
      /* Print out any error messages */  
      PrintErrorMessage( errorCode );  
  }
5
发表于 2003-8-8 09:34:54 | 只看该作者
感谢版主,问题已解决了。  
该函数的参数我传递错了。应为:
      logical mated=0;  
      UF_ASSEM_mating_condition_t  mc_data;
      int nResult=0;
      nResult=UF_ASSEM_ask_mc_data_of_compnt(child_part_occs,  [$mated, &mc_data)]
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

GMT+8, 2024-12-25 21:01 , Processed in 0.042768 second(s), 13 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2024 www.iCAx.org

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