iCAx开思网

标题: [求助]UG二次开发问题[急][3q] [打印本页]

作者: jinbit    时间: 2004-7-16 19:52
标题: [求助]UG二次开发问题[急][3q]
如何用VC在UG中打开文件,我下面的代码只能打开UG环境,文件没打开  
  
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 */  
        UF_PART_load_status_t error_status;  
  
        char part_name1[133]="G:\\mouse2.prt";  
  
        int unit=1;  
        tag_t part1;  
  
        UF_PART_open(part_name1,[$part1,&error_status)]  
  
        /* Terminate the API environment */  
        errorCode = UF_terminate();  
    }  
  
    /* Print out any error messages */  
    //PrintErrorMessage( errorCode );  
}  
  
VC中的环境设置如下  
project->setting->debug->excecutable for debug session = ugraf.exe  
  
请高人指点
作者: tari    时间: 2004-7-16 20:47
打开UG环境后,File->Execute UG/open->user Function,执行dll文件
作者: jinbit    时间: 2004-7-16 22:44
先谢谢了,我试一试.好心人
作者: jinbit    时间: 2004-7-16 23:00
我是新学的,还是不太明白:
我用这个程序的目的是想在程序中打开"G:\\mouse2.prt"; 这个文件
  
   char part_name1[133]="G:\\mouse2.prt";  
  UF_PART_open(part_name1,[$part1,&error_status)]  
楼主:这个程序为什么不能运行出UG环境下的部件?
  
再谢了.
作者: haiying    时间: 2004-7-17 10:57
  你是自己建立的win32 动态连接库,还是用UG在VC里的向导生成的?头文件uf_part.h 加了吧。程序我试过,没问题的啊!
作者: jinbit    时间: 2004-7-17 11:50
我是利用UG在VC里的向导生成的,头文件uf_part.h 加了.而只能运行出UG 的环境.按我的想法应该是直接打开我定义的文件.您用这个程序直接打开文件了吗?如果您有时间给我发个EXAMPLE 吧.谢谢.
初学真是难.不过有高手在我也很有信心.
作者: haiying    时间: 2004-7-17 15:43
是啊,我也是这么做的,只是把你的路径改成我存放的文件的路径。你的程序应该没问题的,是不是你的路径不对,再换个试试看。或者重新做一遍。我用的是NX1.0
作者: tari    时间: 2004-7-17 18:21
不需要选择执行dll文件?怎么弄的,我也想知道
作者: jinbit    时间: 2004-7-17 21:38
//  jinjing.cpp
//
//  Description:
//      Contains Unigraphics entry points for the application.
//
//////////////////////////////////////////////////////////////////////////////
  
//  Include files
#include <uf.h>
#include <uf_exit.h>
#include <uf_ui.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 "jinjing.h"
#include "uf_part.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 */
/* TODO: Add your application code here */  
        UF_PART_load_status_t error_status;  
  
        char part_name1[133]="G:\\ugex1\\jine.prt";  
  
        int unit=1;  
        tag_t part1;  
  
        UF_PART_open(part_name1,[$part1,&error_status)]  
  
        /* Terminate the API environment */  
        errorCode = UF_terminate();  
    }
  
    /* Print out any error messages */  
    //PrintErrorMessage( errorCode );  
  
        /* 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();
    }
}
  
这是程序的全部内容,运行后出现下列对话框:
作者: jinbit    时间: 2004-7-17 21:55
这个对话框写着:
please specify the  executable file
然后我点击了下面的按钮.有三个选项:分别是  browse,    active control test comtainer,--我选择了BROWSE,然后在UG11里选择了ugraf可执行文件.
结果是只打开了UG 的环境.
我的目的是不出现这个对话框直接打开UG文件;
不知毛病出在那里.另外我的项目的建立都是在默认状态下完成的.
让您费心了/
作者: jinbit    时间: 2004-7-17 21:56
我的也是NX1.0
作者: haiying    时间: 2004-7-18 11:17
试试在UG环境下 File->Execute UG/open->user Function,执行你生成的dll文件。




欢迎光临 iCAx开思网 (https://www.icax.org/) Powered by Discuz! X3.3