一 册 通 UG NX 5.0
值介于5和18之间,即使用者选择菜单项1,那么返回值是5,使用者选择菜单项14,那么返回值是18。下面是返回值的说明。 (1)1:回退。 (2)2:取消。
(3)5~18:选中了的菜单项。
(4)19:不允许状态,不能启动对话框。
uc1605解决多项选择菜单的问题,与uc1603不同,该子过程没有默认的选择项,数组变量的每一个元数的初值是0。下面介绍返回值及参数。 (1)1:回退。 (2)2:取消。 (3)3:接收。
(4)4:有多个选项被选择。
(5)8:不允许状态,不能启动对话框。
【例22-7】 创建单选菜单列表对话框和多选菜单列表对话框。
操作步骤如下。
把下面的代码添加到例22-1中黑体字代码所在的位置,按快捷键F7,编译Example工程,
出现编译成功的信息。
char SingleMenuStr[]=\单选菜单列表对话框\
int OkDefault=1;
char MenuOptions[][38]={\选项1\选项2\选项3\int NumOfOption=3;
uc1603(SingleMenuStr,OkDefault,MenuOptions,NumOfOption);
启动UG NX 5.0,选择【文件】|【执行】|【NX打开…】命令,弹出如图22-17所示
对话框。选择生成的动态库文件“Example.dll”,单击 单列表对话框。
按钮,出现如图22-20所示的单选菜
图22-20 执行“Example.dll”文件生成的单选菜单列表对话框
492
把下面的代码添加到例22-1中黑体字代码所在的位置,执行与上面相同的操作,即可得
到如图22-21所示的多选菜单列表对话框。
char SingleMenuStr[]=\多选菜单列表对话框\int *ItemMenu;
char MenuOptions[][38]={\选项1\选项2\选项3\int NumOfOption=3;
uc1605(SingleMenuStr,0,MenuOptions,NumOfOption,ItemMenu);
图22-21 执行“Example.dll”文件生成的多选菜单列表对话框
22.2.4 对象选择对话框
UG/Open API提供了专门的接口“UF_UI”模块,让开发人员开发的应用能够从Unigraphics图形界面选取几何对象。常用的对象选择对话框有两种:单对象选择对话框与按类选择对话框。UF_UI模块中的函数主要实现两种功能:一种是通过有过滤功能的函数,把开发者定义的可选对象选出来;一种是弹出对话框,让用户在可选对象中选择一个或多个对象。这些函数都在头文件uf_ui.h中定义。下面介绍这两个常用的对话框。注意,调用这两种对话框之前UG环境中必须有工作部件存在。
1.按类选择对话框
按类选择对话框通过函数UF_UI_select_with_class_dialog创建,并且能够一次选择同类的多个对象。如果返回值是UF_UI_OK,则被选择的对象保持高亮状态,当然也有可能没有选中任何对象。若返回值是UF_UI_BACK或UF_UI_CANCEL,所有被选的对象都不会高亮显示。默认的可选对象是所有的可选标准类型,开发人员还可以通过函数UF_UI_set_sel_procs来指定特殊的过滤过程及选择回调。函数UF_UI_add_to_sel_list用于事先指定已选对象。 【例22-8】 创建按类选择对话框。
操作步骤如下。
把下面的代码添加到例22-1的extern \
int rlen )函数中:
第22章 UG NX 5.0二次开发基础 493
一 册 通 UG NX 5.0
//定义初始化进程函数
#define UF_CALL(X) (Report( __FILE__, __LINE__, #X, (X))) int Report( char *file, int line, char *call, int irc) { return (irc); }
static int init_proc(UF_UI_selection_p_t select,void* user_data) { int num_type=2; UF_UI_mask_t mask_triples[]={UF_line_type,0,0,UF_solid_type,0, UF_UI_SEL _FEATURE_ ANY_EDGE};
if((UF_CALL(UF_UI_set_sel_mask(select,UF_UI_SEL_MASK_CLEAR_AND_ENABLE_SPECIFIC,num_type,mask_triples)))==0)
{ return (UF_UI_SEL_SUCCESS); } else { return (UF_UI_SEL_FAILURE); } }
把下面的代码添加到例22-1中黑体字代码所在的位置,按快捷键F7,编译Example工
程,出现编译成功的信息。
//按类选择对话框
char TypeDialogBox[]=\按类选择对话框\char DialogBoxTitle[]=\按类选择对话框\int Scope=UF_UI_SEL_SCOPE_NO_CHANGE; int Response; int Count;
tag_t* atObject;
UF_CALL(UF_UI_select_with_class_dialog(TypeDialogBox,DialogBoxTitle,Scope,init_proc,NULL,&Response,&Count,&atObject));
启动UG NX 5.0,选择【文件】|【新建】命令,创建新部件,弹出如图22-11所示对话
框,在
文本框中输入“part”,单击
按钮,出现如图22-12所示的界面。
。单击
出现如图22-22所示的
选择【文件】|【执行】|【NX打开…】命令,弹出如图22-17所示对话框。选择生成
的动态库文件“Example.dll”,单击 按类选择对话框。
在上面的函数中首先定义了一个初始化进程函数init_proc,在该函数体中使用函数UF_UI_set_sel_mask设置被选对象的类型(可以是多种类型),然后将初始化进程函数名作为对象选择对话框函数的第4个参数。
2.单对象选择对话框
单对象选择对话框通过函数UF_UI_select_with_single_dialog创建,并可通过鼠标选择或用键盘输入对象名来选择对象,被选中的对象高亮显示。下面给出单个对象选择对话框的实例代码,在此之前,需要将上例的程序初始化进程函数init_proc加入进来,编译成功后的显示结果如图22-5所示。
按钮,弹出按钮
494
图22-22 执行“Example.dll”文件生成的按类选择对话框
【例22-9】 创建单个对象选择对话框。
操作步骤如下。
把下面的代码添加到例22-1中黑体字代码所在的位置,按快捷键F7,编译Example工
程,出现编译成功的信息。
char TypeDialogBox[]=\单个对象选择对话框\char DialogBoxTitle[]=\单个对象选择对话框\int Scope=UF_UI_SEL_SCOPE_NO_CHANGE; int Response; tag_t tObject; tag_t tView;
double tCursor[3];
UF_CALL(UF_UI_select_with_single_dialog(TypeDialogBox,DialogBoxTitle,Scope,init_proc,NULL,&Response,&tObject,tCursor,&tView));
启动UG NX 5.0,选择【文件】|【新建】命令,创建新部件,弹出如图22-11所示的对
话框。在【名称】文本框中输入“part”,单击【确定】按钮,出现如图22-12所示的界面。
选择【文件】|【执行】|【NX打开…】命令,弹出如图22-17所示对话框。选择生成
的动态库文件“Example.dll”,单击 按钮,生成如图22-23所示的单个对象选择对话框。
第22章 UG NX 5.022.3 消息的发布与获取
在UG NX 5.0的操作进程中常常需要向用户发布一些信息,如错误警告、数据结果、提示信息和状态报告等,或者获取一些信息,如字符串和数字等。开发人员可以通过消息对话框、UG NX 5.0信息窗口、提示行和状态行等发布消息,通过用户输入获取消息并等候应答。
二次开发基础 495
一 册 通 UG NX 5.0
图22-23 执行“Example.dll”文件生成的单个对象选择对话框
22.3.1 信息窗口
UG NX 5.0信息窗口支持在UG NX 5.0环境中显示一个文本框的操作,用户可以在文本框中输入文本,也可以将文本保存到文本文件中。UG NX 5.0信息窗口主要用于向用户提供一些具体的操作或查询信息,如显示分析结果,报告工作进程和提供警告信息等,有关UG NX 5.0信息窗口的函数在头文件uf_ui.h中定义。UG NX 5.0信息窗口对应的UF函数和操作功能如下:
UF_UI_open_listing_window() //打开信息窗口
UF_UI_is_listing_window_open() //检查信息窗口是否打开 UF_UI_write_listing_window() //往信息窗口中输入文本 UF_UI_save_listing_window() //把信息窗口的信息存入文件中 UF_UI_close_listing_window() //关闭信息窗口 UF_UI_exit_listing_window() //退出信息窗口
【例22-10】 创建UG NX 5.0信息窗口操作。
操作步骤如下。
把下面的代码添加到例22-1中黑体字代码所在的位置,按快捷键F7,编译Example工程,出现编译成功的信息。
UF_UI_open_listing_window();
UF_UI_write_listing_window(?1(\
UF_UI_close_listing_window(); uc1601(\logical OpenWin;
UF_UI_is_listing_window_open(&OpenWin); if(!OpenWin) { UF_UI_open_listing_window(); }
496