手机访问

手机扫一扫

|投诉/建议

全国统一学习专线 8:30-21:00

杭州ug培训学校

来源: 夏坤数控      编辑:佚名

杭州ug培训学校

执行回调(菜单事件处理程序)

回调**用于操作记录和程序的ACTIONS命令与菜单按钮相关联。 但是,Callbacks的执行有两个主要的区别。

1.菜单文件不直接引用回调名称(如程序或操作记录的名称),它引用必须注册到回调的字符串。 回调**AddMenuAction(C ,VB或C#),addMenuAction(JAVA)或UF_MB_add_actions(Open C)在自定义应用程序中**相关联的字符串进行注册。

2.回调使用返回值,可以终止为该按钮定义的操作列表。

回调的可用返回值包括:

Continue - 继续执行菜单项的操作

Cancel - 用户交互请求禁止菜单项的操作

Override Standard - 禁止进一步的操作,因为预处理取代了标准NX菜单项的标准操作

Warning - 禁止进一步的行动,因为警告条件提高

Error - 禁止进一步的操作,因为出现错误条件

即使Cancel ,Override Standard,Warning 和Error 返回值具有不同的定义,以编程方式它们都表现相同。 除Continue之外的任何返回值将阻止列表中的其余操作执行。 它们之间**真正的区别是syslog中的一个注释,说明使用哪个返回值。

例子:

以下示例显示单个菜单按钮的多个回调的注册。 从**个回调返回的状态控制其他动作是否执行。 要运行测试编译提供的cb_status_test程序,并将cb_status_test库与示例菜单文件一起放在启动文件夹中。 现在启动NX并转到文件选项卡→打开。 将打开一个对话框,提示您选择“返回状态”。 如果选择继续,其他操作将执行。 如果您选择任何其他返回值,文件打开对话框将不会打开,my_end_action将不会执行。

Menu file: cb_status_test.men

VERSION 120

EDIT UG_GATEWAY_MAIN_MENUBAR

AFTER UG_FILE_NEW

BUTTON UG_FILE_OPEN

LABEL Open...

ACTIONS/REPLACE my_action_status_test STANDARD my_end_action

END_OF_AFTER

Header: cb_status_test.h

//------------------------------------------------------------------------------

//

// cb_status_test.h

//

// Description:

// Contains NX entry points for the customized menu callbacks.

//

//------------------------------------------------------------------------------

#include <iostream>

#include <uf_defs.h>

#include <uf.h>

#include <NXOpen/Session.hxx>

#include <NXOpen/MenuBar_MenuBarManager.hxx>

#include <NXOpen/MenuBar_MenuButton.hxx>

#include <NXOpen/UI.hxx>

#include <NXOpen/Callback.hxx>

#include <NXOpen/NXException.hxx>

using namespace std;

using namespace NXOpen;

class CbStatusTest;

extern CbStatusTest *theCbStatusTest;

class CbStatusTest

{

// class members

public:

static Session* theSession;

static UI* theUI;

static ListingWindow* lw;

static int registered;

CbStatusTest();

~CbStatusTest();

//------------------------- Callback Prototypes -----------------------

MenuBar::MenuBarManager::CallbackStatus ActionStatusTestCB(

MenuBar::MenuButtonEvent* buttonEvent );

MenuBar::MenuBarManager::CallbackStatus EndActionCB(

MenuBar::MenuButtonEvent* buttonEvent );

private:

void InitializeCallbacks();

};

Source: cb_status_test.cpp

//------------------------------------------------------------------------------

//

// cb_status_test.cpp

//

// Description:

// Contains NX entry points for the customized menu callbacks.

//

//------------------------------------------------------------------------------

#include "cb_status_test.h" #include

#include <NXOpen/ListingWindow.hxx>

#include <uf_ui_types.h>

#include <uf_ui.h>

//------------------------------------------------------------------------------

// Initialize static variables

//------------------------------------------------------------------------------

Session *(CbStatusTest::theSession) = NULL;

UI *(CbStatusTest::theUI) = NULL;

int CbStatusTest::registered = 0;

ListingWindow* CbStatusTest::lw = NULL;

CbStatusTest *theCbStatusTest;

//------------------------------------------------------------------------------

// Constructor for Callback Status Test

//------------------------------------------------------------------------------

CbStatusTest::CbStatusTest()

{

try

{

// Initialize the NX Open C API environment

theSession = Session::GetSession();

// Initialize the Open C API environment

int errorCode = UF_initialize();

if(0 != errorCode)

throw NXOpen::NXException::Create(errorCode);

theUI = UI::GetUI();

lw = theSession->ListingWindow();

InitializeCallbacks();

}

catch (const NXOpen::NXException& ex)

{

std::cerr << "Caught exception" << ex.Message() << std::endl;

}

return;

}

//------------------------------------------------------------------------------

// Register the callbacks with NX

//------------------------------------------------------------------------------

void CbStatusTest::InitializeCallbacks()

{

try

{

if( registered == 0 )

{

theUI->MenuBarManager()->AddMenuAction

("my_action_status_test", make_callback(this, &CbStatusTest::ActionStatusTestCB) );

theUI->MenuBarManager()->AddMenuAction("my_end_action",

make_callback(this, &CbStatusTest::EndActionCB) );

registered = 1;

}

}

catch (const NXOpen::NXException& ex)

{

std::cerr << "Caught exception" << ex.Message() << std::endl;

}

return;

}

//------------------------------------------------------------------------------

// Startup entrypoint for NX

//------------------------------------------------------------------------------

extern "C" DllExport void ufsta(char *param, int *retcod, int param_len)

{

theCbStatusTest = new CbStatusTest();

return;

} //------------------------------------------------------------------------------

// Public method GetUnloadOption

// This method specifies how a shared image is unloaded from memory

// within NX.

//------------------------------------------------------------------------------

extern "C" DllExport int ufusr_ask_unload()

{

return (int)Session::LibraryUnloadOptionAtTermination;

}

//------------------------------------------------------------------------------

// Method: UnloadLibrary()

// You have the option of coding the cleanup routine to perform any housekeeping

// chores that may need to be performed. If you code the cleanup routine, it is

// automatically called by NX.

//------------------------------------------------------------------------------

extern "C" DllExport void ufusr_cleanup(void)

{

// do your cleanup here if necessary

return;

}

//------------------------- Callback Functions ---------------------------------

//------------------------------------------------------------------------------

// Callback Name: ActionStatusTestCB

// This is the first callback exectued when the File->Open button is activated.

// It will let you select the status you wish to return from this callback.

//------------------------------------------------------------------------------

MenuBar::MenuBarManager::CallbackStatus CbStatusTest::ActionStatusTestCB(

NXOpen::MenuBar::MenuButtonEvent* buttonEvent )

{

MenuBar::MenuBarManager::CallbackStatus cb_status =

MenuBar::MenuBarManager::CallbackStatusContinue;

if( !UF_initialize() )

{

char name[133] = "";

int response = 0;

int len = 0;

char items[5][38];

sprintf( items[0], "Continue" );

sprintf( items[1], "Cancel" );

sprintf( items[2], "Override Standard" );

sprintf( items[3], "Warning" );

sprintf( items[4], "Error" );

lw->Open();

lw->WriteLine(" ");

lw->WriteLine("Inside Action Status Test Callback:");

// set the default button name, to the name of the button which activated

this event

sprintf( name, "%s", buttonEvent->ActiveButton()->ButtonTypeName

().GetLocaleText() );

UF_UI_lock_ug_access( UF_UI_FROM_CUSTOM );

response = uc1603( "Select a return status", 0, items, 5 );

UF_UI_unlock_ug_access( UF_UI_FROM_CUSTOM );

if ( response == 1 || response == 5 )

{

// Back or Continue

cb_status = MenuBar::MenuBarManager::CallbackStatusContinue;

lw->WriteLine( " Returning CallbackStatusContinue" );

}

else if( response == 2 || response == 6 )

{

// cancel

cb_status = MenuBar::MenuBarManager::CallbackStatusCancel;

lw->WriteLine( " Returning CallbackStatusCancel" );

}

else if( response == 7 )

{

cb_status = MenuBar::MenuBarManager::CallbackStatusOverrideStandard;

lw->WriteLine( " Returning CallbackStatusOverrideStandard" );

}

else if( response == 8 )

{

cb_status = MenuBar::MenuBarManager::CallbackStatusWarning;

lw->WriteLine( " Returning CallbackStatusWarning" );

}

else if( response == 9 )

{

cb_status = MenuBar::MenuBarManager::CallbackStatusError;

lw->WriteLine( " Returning CallbackStatusError" );

}

}

UF_terminate();

return cb_status;

}

//------------------------------------------------------------------------------

// Callback Name: EndActionCB

// This is the last action associated with the File-Open button.

// This will only get executed if ActionStatusTestCB

// returns CallbackStatusContinue

//------------------------------------------------------------------------------

MenuBar::MenuBarManager::CallbackStatus CbStatusTest::EndActionCB(

NXOpen::MenuBar::MenuButtonEvent* buttonEvent )

{

lw->Open();

lw->WriteLine("Inside My End Action Callback");

return MenuBar::MenuBarManager::CallbackStatusContinue;

关于menuscript的其他信息可以在Open C Reference Guide的UF_MB章节的概述中找到。

工具栏按钮的应用(交互式)

本主题讨论了**交互式创建的工具栏按钮执行应用程序。 要了解如何从使用工具栏文件(.tbr扩展名)定义的按钮执行应用程序,请参阅工具栏文件

使用Interactive NX创建工具栏按钮

以下步骤用于使用NX定义工具栏按钮。

步骤1 - 创建新的空工具栏

在主菜单栏区域的鼠标光标中,单击MB3并选择自定义。

单击自定义菜单上的新建以显示工具栏属性对话框。

输入您的自定义工具栏的名称。

可选择选择NX应用程序。 工具栏仅在选定的NX应用程序处于活动状态时可用。

单击确定创建一个空工具栏。

对要添加到新工具栏的每个按钮执行步骤2和3。

步骤2 - 添加按钮到工具栏

从“自定义”对话框中,选择“命令”选项卡。

在类别列表中,选择新建按钮。

从“命令”列表中,选择“新建用户命令”,然后将其拖放到新工具栏以添加按钮名称“用户命令”。

右键单击新的“用户命令”按钮,然后输入所需的名称。

右键单击新按钮,然后选择所需的按钮类型(文本,图像或两者)。

右键单击新按钮,并选择要为该按钮显示的图像。

**右键单击按钮,可以更改除“编辑操作”之外的所有其他所需按钮属性,这在下一步中将会介绍。

步骤3 - 定义按钮动作

右键单击该按钮,然后选择编辑操作以显示按钮操作对话框。

选择操作类型,然后输入或浏览并选择该操作的相应对象(参见下表)。

输入按钮消息文本 - 文本显示在按钮工具提示中

单击“确定”完成按钮定义。

可用的按钮操作类型和操作所需的对象在下表中给出。

按钮动作类型

它能做什么

行动所需要的是什么

Journal File

运行操作记录

操作记录文件的完整路径 (.vb, .cs, pv).

User Function

运行NX Open应用程序 (也运行Open C / C 应用程序)

可执行文件的完整路径 (.exe. .dll, .sl)

System Commands

执行操作系统命令脚本

任何可以在系统shell上执行的命令,例如 "start notepad" (Windows) / "vi newtextfile" (非Windows)

User Tools

加载UTD文件

UTD文件的完整路径。 有关如何创建/用户UTD文件的更多信息,请参阅(Gateway→Customizing NX→UTD)

Macros

运行NX宏

NX宏(.macro)文件的完整路径(注:Macros不推荐用于自动化)

Grip

运行Grip程序

GRIP程序文件的完整路径(.grx)

【詹老师】:

了解更多杭州ug培训>>>>杭州ug培训

了解更多杭州培训网>>>>杭州培训网

上一篇: 杭州ug培训班 下一篇: 杭州ug培训哪家好
相关新闻 更多 >
0.029108s