全国统一学习专线 8:30-21:00
来源: 夏坤数控 编辑:佚名
杭州ug培训哪家好
简介菜单脚本语言提供了向NX添加新菜单项的命令。菜单脚本命令包含在具有.men后缀的菜单文件中。在菜单文件中,每个菜单项由NX菜单结构内的位置,菜单项的显示文本,ACTIONS文本字符串(用于定义程序,操作记录或要执行的回调)定义,以及按钮在NX中标识菜单项的名称。在NX启动时,NX会读取启动目录中的所有菜单文件。它还将在所有加载的应用程序中执行所有初始化入口点(参见Entry Points)。在此初始化过程中,列出为菜单文件中的操作的任何回调必须由启动目录中的应用程序注册。这些回调也称为菜单事件处理程序。
MenuBarManager类 (or UF_MB chapter for legacy C) 定义了用于注册回调的方法。方法AddMenuAction(C , VB, or CSharp),addMenuAction (JAVA)或UF_MB_add_actions(Open C)用于**引用菜单文件中的ACTIONS文本字符串来注册每个菜单项的回调。 必须在NX启动期间调用AddMenuAction(或其语言特定的等效项)才能为每个新菜单项注册回调。 当选择菜单项时,NX将查找并执行相关程序,操作记录或回调。
菜单文件和包含回调注册方法的程序必须位于启动文件夹中,而作为操作列出的程序和操作记录必须位于应用程序文件夹中(参见 Application Directory Structure).
菜单文件简介
本节显示添加新菜单项的示例菜单文件(.men扩展名)。 无论使用哪种NX Open API语言,菜单文件都是相同的。
要添加新的菜单项,以下概述菜单文件中所需的基本命令。
VERSION 120
EDIT UG_GATEWAY_MAIN_MENUBAR
MENU <用于标识现有或新菜单项的**文本>
<新菜单项 1>
<新菜单项 2>
<...>
END_OF_MENU
每个新的菜单项都使用以下基本命令定义:
BUTTON <用于在所有菜单文件中引用此菜单项的**文本>
LABEL <菜单项显示文字>
ACTIONS <应用程序文件夹中的程序或操作记录的名称或NX将菜单项与回调关联的文本>
执行程序
任何程序可以链接到菜单文件的按钮。 这包括与NX无关的应用程序,如Web浏览器或**Common API编写的自定义NX应用程序。
执行与NX无关的程序
以下示例菜单文件(go_to_siemens.men)在“文件”选项卡→“打开”下方添加一个按钮,**Internet Explorer启动西门子网站。 当NX在启动过程中初始化菜单时,该菜单文件必须放在启动目录中才能注册“转到Siemens.com”按钮。
Menu file: go_to_siemens.men
VERSION 120
EDIT UG_GATEWAY_MAIN_MENUBAR
AFTER UG_FILE_OPEN
BUTTON SAMPLE_GO_TO_SIEMENS
LABEL Go to Siemens.com
ACTIONS "start iexplore "
END_OF_AFTER
执行Common API程序
如果要从按钮运行Common API程序,程序必须包含一个有效的入口点:ufusr(C或C ),Main(C#或VB)或main(Java)。 一旦编译,程序的库文件必须放在“application”文件夹中。 如果程序是用C,C ,C#或VB编写的,则不需要从菜单文件中的ACTIONS行指定库的文件扩展名。 但是,如果是Java类或jar文件,则必须指定程序的文件扩展名。 您可以在Windows上使用与Windows系统上相同的菜单文件,因为不会使用库扩展名,而是在两个平台上扩展Java扩展名。
以下示例菜单文件(my_programs.men)在“文件”选项卡→“打开”下面添加按钮,执行自定义C 程序和自定义VB程序。
Menu file: my_programs.men
VERSION 120
EDIT UG_GATEWAY_MAIN_MENUBAR
AFTER UG_FILE_OPEN
BUTTON SAMPLE_MY_CPP_BUTTON
LABEL Run C Program
ACTIONS my_cpp_program
BUTTON SAMPLE_MY_VB_BUTTON
LABEL Run VB Program
ACTIONS my_vb_program
END_OF_AFTER
警告:VB和C#在非Windows系统上不可用,因此如果您打算在非Windows系统上运行,菜单文件不应包含对VB或C#程序的任何引用。
Menu file: my_cpp_program.cpp
/*****************************************************************************
**
** my_cpp_program.cpp
**
** Description:
** Contains Unigraphics entry points for the application.
**
*****************************************************************************/
/* Include files */
#if ! defined ( __hp9000s800 ) && ! defined ( __sgi ) && ! defined ( __sun )
# include <strstream>
# include <iostream>
using std::ostrstream;
using std::endl;
using std::ends;
using std::cerr;
#else
# include <strstream.h>
# include <iostream.h>
#endif
#include <uf.h>
#include (ug_session.hxx>
#include <ug_exception.hxx>
#include <uf_ui.h>
#include <uf_exit.h>
#include <ug_info_window.hxx>
static void processException( const UgException &exception );
/*****************************************************************************
** Activation Methods
*****************************************************************************/
/* Explicit Activation
** This entry point is used to activate the application explicitly, as in
** "File->Execute UG/Open->User Function..." */
extern DllExport void ufusr( char *parm, int *returnCode, int rlen )
{
/* Initialize the API environment */
UgSession session( true );
try
{
/* TODO: Add your application code here */
uc1601("Welcome to My Custom C Program", TRUE );
}
/* Handle errors */
catch ( const UgException &exception )
{
processException( exception );
}
}
/*****************************************************************************
** 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 int ufusr_ask_unload( void )
{
return( UF_UNLOAD_UG_TERMINATE );
}
/* processException
Prints error messages to standard error and a Unigraphics
information window. */
static void processException( const UgException &exception )
{
/* Construct a buffer to hold the text. */
ostrstream error_message;
/* Initialize the buffer with the required text. */
error_message << endl
<< "Error:" << endl
<< ( exception.askErrorText() ).c_str()
<< endl << endl << ends;
/* Open the UgInfoWindow */
UgInfoWindow::open ( );
/* Write the message to the UgInfoWindow. The str method */
/* freezes the buffer, so it must be unfrozen afterwards. */
UgInfoWindow::write( error_message.str() );
/* Write the message to standard error */
cerr << error_message.str();
error_message.rdbuf()->freeze( 0 );
}
Menu file: my_vb_program.vb
Option Strict Off
Imports System
Imports NXOpen
Module Module1
' Explicit Activation
' This entry point is used to activate the application explicitly
Sub Main()
Dim theSession As Session = Session.GetSession()
MsgBox("Welcome to My Custom VB Program")
End Sub
Public Function GetUnloadOption(ByVal dummy As String) As Integer
'Unloads the image when the NX session terminates
GetUnloadOption = NXOpen.Session.LibraryUnloadOption.AtTermination
End Function
End Module
菜单文件必须放在“startup”文件夹中。 在编译和链接示例程序(my_cpp_program.cpp和my_vb_program.vb)之后,需要将可执行文件(my_cpp_program.dll和my_vb_program.dll)放在“application”文件夹中。
Executing Journals略
【詹老师】:
了解更多杭州ug培训>>>>杭州ug培训
了解更多杭州培训网>>>>杭州培训网