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

iCAx开思网

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

请斑竹看看(UG源代码)

[复制链接]
跳转到指定楼层
1
发表于 2004-5-2 01:56:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
//////////////////////////////////////////////////////////////////////////////
//
//  asm03.cpp
//
//  Description:
//      Contains Unigraphics entry points for the application.
//
//////////////////////////////////////////////////////////////////////////////
  
//  Include files
#include <uf.h>
#include <uf_exit.h>
#include <uf_ui.h>
#include <uf_modl.h>
#include <uf_assem.h>
#include <uf_part.h>
#include <uf_object_types.h>
#if ! defined ( __hp9000s800 ) && ! defined ( __sgi ) && ! defined ( __sun )
#  include <strstream>
#   include <iostream>
  using std:strstream;
  using std::endl;  
  using std::ends;
  using std::cerr;
#else
#  include <strstream.h>
#   include <iostream.h>
#endif
#include "asm03.h"
  
//----------------------------------------------------------------------------
//  Activation Methods
//----------------------------------------------------------------------------
  
//  Unigraphics Startup
//      This entry point activates the application at Unigraphics startup
extern "C" DllExport void ufsta( char *param, int *returnCode, int rlen )
{
    /* Initialize the API environment */
    int errorCode = UF_initialize();
  
    if ( 0 == errorCode )
    {
        /* TODO: Add your application code here */
              char message[133];
        message[0]='\0';
        strcpy(message,"请再选择第一个平面!");
        UF_UI_selection_options_t opts;
        UF_UI_mask_t mask;
        int response;
        tag_t 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];
        double dir[3];
        double box[6];
        double radius;
        double rad_data;
        int norm_dir;
        tag_t first_plan;
        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;
        }
        /*char name[256+1];
        int k;
        k=UF_PART_ask_part_name (first_plan, name);
        uc1601(name,1);*/
        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_ins=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;
        }
        tag_t to_part_occ;
        ret=UF_ASSEM_ask_parent_component(second_plan,[$to_part_occ)]
        is_occ=UF_ASSEM_is_occurrence(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;
          ftf.mated_object=from_part_ins;
        ftf.name=NULL;
        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)]
        //UF_get_fail_message(ret,message);
        if(ret==0 || status==UF_ASSEM_mc_solved)
        {   
          uc1601("ok!",1);
          ret=UF_ASSEM_apply_mc_data([$ftf,&struct_status,&status)]
          UF_DISP_refresh();
          UF_MODL_update();
        }
        UF_DISP_set_highlight(first_plan,0);
        UF_DISP_set_highlight(second_plan,0);
  
        /* Terminate the API environment */
        errorCode = UF_terminate();
    }
  
    /* Print out any error messages */
   &nbsprintErrorMessage( errorCode );
}
  
//----------------------------------------------------------------------------
//  Utilities
//----------------------------------------------------------------------------
  
// Unload Handler
//     This function specifies when to unload your application from Unigraphics.
//     If your application registers a callback (from a MenuScript item or a
//     User Defined Object for example), this function MUST return
//     "UF_UNLOAD_UG_TERMINATE".
extern "C" int ufusr_ask_unload( void )
{
    return( UF_UNLOAD_UG_TERMINATE );
}
  
/* PrintErrorMessage
**
**     Prints error messages to standard error and the Unigraphics status
**     line. */
static void PrintErrorMessage( int errorCode )
{
    if ( 0 != errorCode )
    {
        /* Retrieve the associated error message */
        char message[133];
        UF_get_fail_message( errorCode, message );
  
        /* Print out the message */
        UF_UI_set_status( message );
  
        // Construct a buffer to hold the text.
        ostrstream error_message;
  
        // Initialize the buffer with the required text.
        error_message << endl
                      << "Error:" << endl
                      << message
                      << endl << endl << ends;
  
      // Write the message to standard error
        cerr << error_message.str();
    }
}
  
我试了这个程序,这个程序没有错误但没有结果。
我是这样做的,先新建 1.prt,然后装配两个 2.prt,3.prt。
然后把上面的程序运行,先选择 1.prt的一个平面,然后再选择 2.prt的一个平面,最终 还是没有结果,请问斑竹这是什么问题,请指点指点我吧,这问题费了我不少时间呢,写毕业设计急需,谢谢!!!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 赞一下!赞一下!
2
发表于 2004-5-2 01:58:02 | 只看该作者
写错了,修正一下,我是先选择了 2.prt的一个平面,然后再选择了 3.prt的一个平面的。
3
发表于 2004-5-2 12:04:38 | 只看该作者
版主和各位高手,可不可以帮帮我啊,求求你们了。
那个代码是清华书上的,程序没有错,就是没有装配结果,听郁闷的。
4
发表于 2004-5-7 22:23:07 | 只看该作者
清华书就没有错啊?
头像被屏蔽
5
发表于 2004-5-16 09:40:28 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
6
发表于 2004-5-16 10:31:50 | 只看该作者
这个好像是个很严重的问题,好像程序和GUI之间的信息交换那么困难,我也尝试了这个程序,显然书本上的程序有错误,但是不知道该怎样解决,我也等着高手指教呢。着急。谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

GMT+8, 2024-12-26 21:05 , Processed in 0.028588 second(s), 10 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2024 www.iCAx.org

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