版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、22ug nx 5.0二次开发基础内容提要> ug/open api基础概念和语法知识> ug/open api常用对话框及其应用>提示消息的发布与获取open/api (用户函数)是一个程序集合,使得程序员能够访问和操作nx对象模型。除此之外, opcn/api还提供了工具用来编辑和连接与ug nx 5.0风格一致的程序。ug/opcn二次开发模块是 ug nx 5.0软件的二次开发工具集,可用于各种二次开发工作。利用该模块可对ug nx 5.0系统进 行用户化剪裁和开发,满足用户的开发需求。使用ug nx 5.0的二次开发时,用户需要具有一定的 c语言基础。ug/open
2、包括以下几个部分。(1 ) ug/open api开发工具:提供ug nx 5.0软件直接编程接口,支持c、c+、fortran和java 等主要高级语言。(2 )ug/open ulstyle开发工具:是一个可视化编辑器,用于创建类似于ug nx 5.0的交互界面。 利用该工具,用户可为ug/open应用程序开发独立于硬件平台的交互界面。(3 ) ug/open menuscript开发工具:对ug nx 5.0软件操作界面进行用户化开发,使得用户无 须编程即可对ug nx 5.()标准菜单进行添加、重组、剪裁或在ugnx5.()中集成自己开发的软件功 能。(4 ) ug/opcn grip
3、开发工具:是一个类似于apt的ug nx 5.0内部开发语言,用户可利用该 工具生成nc自动化或自动建模等特殊应用。22.1 ug/open api 语法基础由于ug / open api是ug nx 5.0中授常用的二次开发工具,因此国内外有大量的ug nx 5.0 用户投入了人最的精力对ug / open api的编程进行研究,而且已经掌握了人最的编程技巧,并开 发了许多实际的应用。木书在编写过程中,参考了他们的许多经验。22.1.1概述作为ug nx 5.0与外部应用程序z间的接口,ug / open api是一系列函数的集合。通过ug / open api的编程,用户儿乎能够实现所有的
4、ug nx 5.0功能。开发者可以通过用c+语言编程來调 用这些函数,从而实现用户的需求。(1)对ug part文件及相应模型进行操作,包括建立ug nx 5.0模型、查询模型对象、建立并 遍历装配体及创建工程图等。(2)在ugnx5.0中创建交互式程序界而。(3)创建并管理用户定义对彖等。应用函数吋应注意,所有的ug/open api应用必须及吋进行初始化和终止,以确保获取或禅放 ug/open api的执行许可权限。初始化两数是ufjnitialize,开始调用ug/open api的函数时应先调用uf_initialize来获取执行 许可权限。一般来说,变量声明完成后,第一个调用的ug/
5、open api函数就是ufjnitializeo终止函数是uf_tcirninate,不再需要调用ug/opcn api的函数时,必须先调用uf_teirninate来 释放执行许可。ug/open api程序能在两种不同的环境(依赖于程序的连接方式)下运行,即internal环境(也 叫“internal开发模式”)和external模式。其中internal环境下的程序只能在ug nx 5.()的界面环境 (session)下运行,在运行这些程序时它们被加载到ug nx 5.0的运行空间中(ug nx 5.0分配的内 存)。external模式开发的程序能在各种操作系统(windowns
6、 nt/2000/xp及unix)下运行,不在 ug nx 5.0环境中或作为ug nx 5.0的子进程运行。尽管没有图形显示,但ug/open api提供了函 数用于打印机或绘图仪输出,也可以输出成cgm文件或其他数据文件。卜而在visual c+中创建一个基于ug/opcn api appwizard的项目,來说明初始化函数和终止 函数的应用。【例22-1】ug/open api中初始化函数和终止函数的应用。操作步骤如下。件ugopen.awx及ugopen.hlp ,若有,进入步骤2 ;否则从ug安装目录$ug_base_dir/ugopen下将 这两个文件复制并粘贴到目录 micros
7、oft visual studiocommonmsdcv98tcmplatc 下。(02 |启动visual c+ ,选择file | new命令,弹出【new】对话框,如图22-1所示。ugnx5.0 一 册通u* w士 亠 1图22-1 new】对话框v18,在03 选择projects选项卡,在选项卡下面的列表框中选择ug/open appwizardproject name:文本框中输入项目名称example:单击丨。尺|按钮。在弹出的对话框中按图222所示设置选项。图222设置选项104单击匚更j按钮,在弹出的对话框中设置选项,如图223所示。图223设置选项205 单击丨bnbh
8、|按钮.系统弹出【new project information】窗口,如图224所示。窗口中 列岀了用户选择的所有信息。确认无误后单击口o 按钮,系统将在指定的目录下创建一个ug nx 5.0二次开发框架。图 22-4 new project information对话框06按快捷键g ,编译example工程,一般会出现编译成功的信息,如图22-5所示。ugnx5.0 一 册通图22-5编译成功的界面07 打开fileview选项卡,单击examplefiles前的 | + |。然后单击source files前 面的日,双击example.cpp,文件的内容如图24-6所示。下面给出&q
9、uot;example.h"和"example.cpp”两个文件的内容,在"example.cpp”文件中可以找 到函数:extern "c" dllexport void ufusr char *parm, int *returncodez int rlen )其函数体中包含着ug/open api中的初始化函数ufjnitialize和终止函数uf_terminate。在进 行应用开发时,只需要把相应的代码(代码中的黑体部分)添加到相应的位置,即可完成应用开发。图22-6 打开example.cpp文件example.h文体内容如下:* *
10、 example h* * description:* example header file * */ static void printerrormessage( int errorcode );example.cpp文件内容如下:/ / example cpp/ description:/contains unigraphics entry points for the application./ include files#include <ufh>#include <uf_exit h>#include <uf_ui h>#if ! defined
11、 ( _hp9000s800 ) && ! defined ( _sgi ) && ! defined ( _sun )# include <strstream>using std::ostrstream;using std:endl;using std:ends;#else# include <strstreamh>ttendif#include <iostreamh>#include "example.h'1/ activation methods/ explicit activation/ this e
12、ntry point is used to activate the application explicitly, asin/''file->execute ug/open->user functionextern "ch dllexport void ufusr( char *parm# int *returncode, int rlen ) /* initialize the api environment */int errorcode = uf_initialize();if ( 0 = errorcode )/* todo: add your
13、application code here */* terminate the api envi ronment */errorcode = uf_terminate(); "/* print out any error messages */printerrormessage( errorcode );/ utilities/ unload handler/ this function specifies when to unload your application from unigraphics /if your application registers a callbac
14、k (from a menuscript item ora/user defined object for example)z this function must return/"uf_unload_ug_terminate n extern "c11 int ufusr_ask_unload void ) ""return( uf_unload_ug_terminate ); _/ printerrormessage* * prints error messages to standard error and the unigraphics stat
15、us* line. */static void printerrormessage( int errorcode )if ( 0 != errorcode )/* retrieve the associated error message */ char message133;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;/
16、initialize the buffer with the required text error_message << endl<< nerror:m << endl<< message<< endl << endl << ends;/ write the message to standard errorcerr << error_message str(); 在创建几何模型、遍历模型或执行其他一些基本操作时,必须首先创建或打开一个 unigraphics part 文件。22.1.2 ug/
17、open api函数名称及数据类型作为unigraphics二次开发的一个重要模块,ug/opcn api在函数名称和数据类型方而都有口己 的一些独特风格,本章将分别子以介绍。ug/open api的函数名称一般采用标准名称约定,其格式为:uf_<area>_<name>名称中各部分的说明如下。(1) uf:表示 ug/open api 函数。(2) <area>:通常是模块功能和首字母的缩写,例如modl和disp是modeling模块和display 功能的缩写。(3) <name>:被下画线分开的动词和名词,例如uf_modl_create
18、_blockl是ug/open api modeling模块屮创建立方体的函数,uf_disp_set_highlight是高亮显示对象的函数。在数据类型方面,除了标准的c语言数据类型外,ug/open api还提供了一些h定义的数据类 型,如tag_t类型、结构类型、联合类型与指针类型等。下面介绍几种常用的类型。1. tag数据类型ug/open api使川最多的数据类型是tag,在ug/open api的uf_def.h屮对该类型的定义如f:typedef unsigned int tag_t, *tag_p_t;该类型把ug/opcn api与对象模型联系起来。当ug的模型被加载到ug环
19、境中后,tag_t相当 于对彖的唯一标识。大部分的ug/open api函数参变量列表中都有一个tag_t指针或tag_t类。它类 似于c语言中的指针,例如当要查询一个点対象的绝标时,送入查询函数中的tag_t应是点类型的儿 何对象,而不是线或面等其他几何对象的tag_to此外,tag_p_t是指向怡g_i数据类型的指针。以部件对象为例,下面的代码首先获取部件的tag_ t值,然后获取该句柄所引用部件对象的文 件名。tag_t tpart;tpart=uf_assem_ask_work_part();char sfile 256 + 1;uf_part_ask_part_name(tpart
20、f sfile);由于代码中加入了函数uf_assem_ask_wok_part(),因此调试程序时应加入头文件#include <uf_assem.h>oug/open api拥有大量用丁创建及修改unigraphics对彖的函数和过程。ug/open api的部分函 数不提供错误信息,在创建对彖时一般返冋对象的标识(tag)。当返冋的对彖标识为null_tag 吋,表示创建对彖吋出现了错误。2. 结构类型(structuretype)ug/open api采用c语言的语法定义了一些常用的结构类型,将相互联系的不同类型的数据封ugnx5.0 一 册通装在一起使用。这些结构类型用后
21、缀“_s”表示,下面给出一个使用结构类型的例子。typedef struct uf_assem_options_s int reason;const char *item_id;int subitem_index;int count;int item_attr;int indicator;uf_assem_options_sz *uf_assem_options_s_t;3. 联合类型(union type)有吋需要将不同数据类型的变量放在同一段内存单元中,这种使不同变量占用同一段内存的结构 类型称为“联合类型”。联合类型m结构类型的定义形式相似,但含义不同。联合类型变量所占的内存 长度等于其
22、内部最长数据成员的长度乘以变量个数,而结构类型变量所占的内存长度则是其各数据成 员所占内存长度z和。ug/openapi采用c语言的语法定义了一些常用的联合类型,使用后缀“_u” 表示,下面给出一个使用联合类型的例子。union uf_assem_options_u -char *assemchar;int integer;int *integers;double assem; double *assems; uf_ui_selection_p_t selection;; typedef union uf_assem_options_u uf_assem_options_t;4. 枚举类型(e
23、num type)枚举类型将变量的值一一列举出来,变量的值只限r列举出来的值的范围。ug/open api采用 c语言的语法定义了-些常用的枚举类型,使用后缀“_e”表示。下面给出一个使用枚举类型的例 子。enum uf_as sem_op t i ons_e "uf_assem_ok/uf_assem_cancel,uf_assem_not_loaded, uf_assem_suppressed,; "typedef enum uf_assem_options_e uf_assem_options_t;22.1.3 ug/open对象类型与操作所有的ugnx5.0対象类型
24、都通过它们唯一的标识來引用,这些ug nx 5.0対象分类如下。(1) 部件对象(part object)o(2) uf 对象(ufobjects),指 uf_object_types.h 中说明的对象。(3) 表达式 (expressions)o对于每一类对象,ug/open api中都冇明确的函数对它们进行操作,下面分别介绍。1. 部件对象部件对象是ug nx 5.0最基本的操作对象z,它包含了部件小人量的儿何与非儿何信息。每 一个加载到ug nx 5.0环境屮的part文件,都何一个关联的部件对象(part object)代表它,系统会 为每-个部件对象分配一个标记符(tag)o ug/
25、open api提供的访问和操作部件文件的函数包括部件 文件的创建、打开、关闭、保存和信息的查询等,这些函数主要封装在头文件uf_part.h中,包括:uf_attr_ask_part_attrs()访问part的属性ufobj_cyc1e_obj s_in_part()在part中査询对象ufpart_close()关闭partufpart_reopen()再打开partufpart_a s k_p a r t _n ame()获取part的文件名ufpart_s e t _d i s p1ay_part()设置显示部件ufpart_ask_part_history()获取部件的历史ufpa
26、rt_a s k_c u s t ome r_a r e a()査询用户定义的数据ufpart_a s k_d escription()查询part的描述信息ufpart_ask_status()査询part的状态信息ufpart_s e t _c u s t ome r_a r e a()设置用户定义的数据ufpart_set_description()设置part的描述信息ufpart set_status()设® part的状态信息ufpart_a s k_c ompression_flags()査询part的圧缩标记ufpart_s e t_c omp re s s i on
27、_flags()设置part的圧缩标记下血给岀一个例了来讲述pert文件的创建、打开、关闭和存盘等操作。【例22-2 part文件的创建、打开和关闭操作。操作步骤如下。01在例22-1中加入下面的头文件:#include huf_part h"#include huf_obj .h1'02把下面的代码添加到例22-1中黑体代码所在的位置,按快捷键 ,编译example工程, 出现编译成功的信息。uf_part_1oad_status_t error_status ; char part_name133 = "i: exampledebugtest.prt”; int
28、 units = 1 ; /单位釆用米制tag_t part;uf_part_new (parname, units, &part); / 仓u建testprt if ( part = null_tag ) uc1601 (n创建 part 错误” ,1);uf_part_c 1 ose_a 11 ( ) ;/退出之前关闭所有 parterrorcode = uf_terminate(); return;elseuc1601 (ntest 创建成功",1);uc1601 ( htest被设为显示part并且被打开",1);uf_part_set_display_pa
29、rt (part ); / .显示 test .prt uf_part_open (part_name, &part. &error_status);uf_free_string_array(error_status n_parts,error_status file_names); uf_free (error_status.statuses );(03)启动ug nx 5.()软件,选择【文件】|【打开】命令,弹出【执行用户函数】对话框如 图22-7所示。文k©ima)板> mao) fihfttd)宓qp vaw 需幼opat鼻,出行的用户研&序倉
30、立xnmwjhttnx只it按下° bw10)kt梅按«!不放.除了支待d 外观左i 弹岀尊单.图227【执行用户函数】对话框04 在查找范围:下拉列表框中选择文件夹“exampledebug”,选中文件“example.dll”,然后单 击匚口按钮,弹出的消息对话框如图228所示,提示用户test创建成功。(<%«o 文件<t)nsoo xmo)oua)jmid ffifflao va<» 秋hop3耳jglxl?图22-8运行“examplc.dll”文件后弹出的【消息】对话框05单击逼誣按钮,弹出【消息】对话框如图22-9所示,提
31、示用户test被设置为显示并 且被打开。0 文科© © «s«)ma)aaa> bkmkd saqd «<&)«>)«)士j2sj j創xl图22-9提示川户打开“test.part”文件的【消息】对话框06继续单击按钮,part文件estparf被打开,如图22-10所示。接下来可以创建模ugnx5.0 一 册通型,单击u按钮后打开文件夹“i:exampledebug”,即可发现文件,test.parf,o图22-10新建否件界血2. uf对象ug nx 5.0中的大部分公共对象都是头文件uf_o
32、bject_lypes.h和uf_obj.h中定义的对象。所有这 些对象都有明确的函数与它们对应,只有特定的对象了类和可显示的uf对象有另外的函数与它们 对应。uf对象的可用方法如下。(1) 指定、查询及删除单个对彖的名称,例如:uf_ob j_se t_name () uf_obj_a s k_name() uf obj delete name()指定对象名 查询对彖名删除对象名(2)查询遍历对象,例如:uf obj_cycle obj s_in_part()uf obj cycle all()uf obj_cycle_by_name()在part中遍历对象在当前工作part中遍历对象通过对
33、象名称查询对象注意)j! 因为ug nx 5.0中对象存储方式的独特,所以函数uf_obj_cycle_objs_in_part()比函数i! uf_obj_cycle_all(). uf_obj_cycle_by_name()和 uf_layer_cycle_byayer()更为有效。因此i建议使用 uf_obj_cycle_objs_in_part()而不是 uf_obj_cycle_al 1 ()> uf_obj_cycle_by_name() l 或 uf_layer_cycle_byayer()。3. 表达式表达式提供ugnx5.()中的参数化建模的机制,它能控制特征,特征也随
34、表达式的变化而改变。 一个表达式可在多个特征中使用,这样它的变化将能改变多个特征。表达式的一般形式是:name = valuename为表达式名称value为表达式的值。表达式可以是数字或条件等式。表达式名可以用于 表达式值屮,其首字符必须是字母,其他字符可以是数字、字母或下画线等。表达式名是大小写敏 感的。一个part文件中的表达式名应唯一。下面是一些表达式值的例了:nlength =1.5+2* sin (angle)h'position = if (width <= 2)(1.5 * width) else (2) 11-般说來表达式的使用函数都在头文件uf_modl.h中
35、定义。如果表达式串屮仅仅提供衣达式值, ug nx 5.()会自动为其命名。如表达式串定义为”diameter / 2”,ug nx 5.()会赋给它一个类似于”f()“ 的名字。当然我们建议按下列形式赋值:radius = diameter/2o下面列出了头文件uf_niodl_genei*alh 中定义的常用表达式操作函数:uf_modl_create_exp() uf_modl_create_exp_tag()u f_modl_d i s s e c t _exp_ string() uf_modl_ask_exp()uf_modl_eval_exp() uf modl edit exp
36、() uf_modl_update()uf_modl_rename_exp()uf modl ask exps of feature() uf_modl_ask_exps_of_part() uf_modl_ask_exp_tag_string()创建表达式得到创建的表达式的标签分解名字和值返冋名字、值和表达式的标签返回表达式名和表达式值输入表达式的名,返回表达式值用新的值替换表达式中原有的值用新的值替换表达式中原有的值,使用后应用函数來更新模型给已冇表达式赋新的名称返回制约某特征的所有表达式的标签返回某部件(part)的所有表达式的标签输入表达式标签,返回该表达式串卜面给岀一个例子來说明常用
37、表达式操作函数的使用方法。【例223】创建一个长方体并显示出表达式信息。操作步骤如下。01在例22-1中加入下面的头文件:#include nuf_modlh"02把下面的代码添加到例221中黑体代码所在的位置,按快捷键阿,编译example t程, 出现编译成功的信息。char *block_len3 = '"io% m20n , h30n ;double block_orig3 = 00,0.0z 0.0;tag_t blk_obj;int number_of_exps=0, i;uf_ui_open_listing_window();/创垂长方祐特征一uf_m
38、odl_create_b1ock1(uf_nullsignz block_origz block_len, &blk_obj); tag_t *exps;/看询长方体特征所包含的表达式uf_modl_ask_exps_of_feature(blk_obj,&number_of_exps ,&exps );char * string; char *name3;name 0 = 111h ; name 1 = 11 wh ;name2 = nhh;string = n0";uf_modl_ask_exps_of_feature(blk_obj z &num
39、ber_of_exps ,&exps ); for ( i = 0 ; i < number_of_exps; i + ) " uf_modl_ask_exp_tag_string (expsi,&string );uf_ui_write_listing_window(string);uf_ui_wri te_li st ing_window(nnh);uf_free(string); uf free(exps);03启动ug nx 5.0软件,选择【文件】【新建】命令创建新部件,弹出如图22-11所示对话框。图22-11【文件新建】对话框04在 【名称】文本框
40、中输入“part. prtm,单击i i按钮,弹出如图22-12所示界面。图2242新建零件界而(05|选择【文件】|【执行】|【nx打开】命令,弹出【执行用户函数】对话框,如图22-13所示。i " i ml) noct> mgi 第氏 imq» mj® »wd bhuit) 血op *«) «ho,ltflx|awrikhmwprt &序 ff«rtawx»jj2jzj id cy国匕夬4h衍用户从文料名qp lamm 对曲x)比如jwrw( ar) <?i 一匕:;1-2 7 才 >
41、 c> i|. -f?-ro" ".图22j3【执行用户函数】对话框06选择生成的动态库文件“example.dll”,单击 1按钮,弹出如图22-14所示的【信息】 窗口。(071在图22-14中,可以看到生成了一个长方体部件,并且弹出了显示用户部件尺寸信息的 【信息】对话框。ugnx5.0 一 册通图2214执行“example.dll”文件生成的【信息】对话框和部件22.2常用对话框及相关概念对话框界面包含用户界fri与unigraphics界而的接口协议集,通过用户界而与unigraphics界血 的接口协议集的应用,能够使内部ug/opcn api应用及mo
42、t讦应用程序实现在unigraphics用户界|侨 框架下的无缝集成。下面首先介绍儿个用户界面接口中专用的概念。(1) ug/open dialogs:通过ug/open api提供的函数生成的对话框。(2) ulstylcr dialogs:开发者使用uistylcr i具创建的对话框。(3) custom dialogs:开发者使用motif创建的xwindow环境卜的对话框。(4) presentation apis:上述三类对话框的通称。(5) callback:当交互事件(如单击鼠标和按键盘的冋车键等)发生时,unigraphics的响应是h 动执行由用户编写的c语言子过程,该子过程
43、就是callbacko(6) motif: xwindow平台上能够创建用户化界血商业化工具包,要求有x toolkit支持。(7) state change callback:当unigraphics用八界ml的状态改变时系统会自动调用的回调函数, 开发者可以在冋调函数屮插入自己的内容。(8) x toolkit callback:当用户选择对话框的选项(按钮或单选按钮)时系统会自动调用的回 调函数。(9) concurrent cooperative access with unigraphics:应用与 unigraphics 的集成模式,用八的应 用与unigraphics处于同步状态
44、。当开发者开发的i叫调函数运行交互的ug/open api应用时, unigraphics的功能被屏蔽。类似地,当unigraphics显示二级对话区(dialog area 2缩写为da2)时, 用户应用的功能被屏蔽。这种同步行为使应用与unigraphics无缝集成。user function定义了许多标准对话框,可以与用户进行交互输入及选择等操作。这些uf函数 的声明主要包含在头文件uf.ui.h屮。人量使用标准对话框可以减少开发的工作量,也有利于保持一 致的对话框风格。由于uf函数并没冇提供所冇常用对话框,在开发过程中可能盂要使用到mfc标 准对话框。选用标准对话框的原则是尽呈采用ug
45、 nx 5.()标准对话框,如果uf未提供则采用mfc 标准对话框,如果uf与mfc都未提供则使用ulstyler t.具创建用户h定义对话框。下面介绍一些 常用的标准对话框函数。22.2.1消息对话框本节介绍函数ucl601o在操作过程中,开发者常常需要通过消息对话框来告知用户一些消息, 必要情况下还需要与用户进行交互。-般比较常用的是模态消息对话框。模态消息对话框分为单按钮消息对话框和多按钮消息对话框两种形式。1. 单按钮消息对话框单按钮消息对话框常用于输出错误信息或提醒用户注意事项。操作时,川户单击唯一的叵誣按 钮即对退出对话框。对话框用函数uc1601创建,需要注意的是消息在信息窗口或
46、状态行显示的信息 串最多不得超过132个字符。【例22-4创建单按钮消息对话框。操作步骤如下。01把下面的代码添加到例22-1中黑体字代码所在的位置。char showmessage 130 + 1 =h;uc1601(showmessage,1);02按快捷键f7 ,编译example工程,出现编译成功的信息。(03|启动ug nx 5.0软件,选择【文件】|【执行】|【nx打开】命令,弹出【执行用 户函数】对话框,如图22-15所示。图22-15【执行用户两数】对话框04选择生成的动态库文件“example.dll”,单击'i按钮,弹出如图22-16所示的界面。ugnx5.0 一
47、册通艾代© m(x)as(p ma) 配w aa<x)mi(i)欣qp 口p 聲*砂 £t 文keukis左纫田中.©町以tw刃活枢中olgl仅.30 童口中 宦文鼻矽jt的诧辰的方位.亡視图方向i迅岡国阿tfr【ri45 work图22-16执行“example.dll”文件生成的单按钮消息对话框2. 多按钮消息对话框多按钮消息对话框提供了多个按钮(最多三个)供用户选择,程序可以根据用户的不同选择实 现不同的分支功能。该対话框山函数uf_message_dialog创建,开发者可以通过定义函数参数控制按 钮的数量和对话框的类型。多按钮消息对话框提供了 4种
48、对话框类型,即错误型、警告型、消息型 和询问型。同样,消息在信息窗口或状态行显示的信息串最多不得超过132个字符。【例22-5创建多按钮消息对话框。操作步骤如下。01把下面的代码添加到例22-1中黑体字代码所在的位置,按快捷键g ,编译example工 程,弹出编译成功的信息。int res=0;char titie =nshowmessage";char smessages 132 + 1="显示消息";char *p=smessages;uf_ui_message_dialog_type dialog_type=uf_ui_ message_ informat
49、ion; uf_ui_message_buttons_s button; button buttonl=true; button button2=true; button button3=true; button labell = hyes'; buttonlabel2vno"; bu11on 1abe13 = hcancelu;button responsel = l; button response2=2; button response3=3; uf_ui_message_dialog(title,dialog_type,&p#1,0,&button,&
50、amp;res); switch(res)case 1:ucl601(buttonlabell,1);break;case 2:ucl601(buttonlabel2,1);break;case 3:ucl601(button.label3,1); break;default:uc1601 (11 未知按钮"z 1); break;<02 |启动ug nx 5.()软件,选择【文件】|【执行】|【ux打开】命令,弹出【执行用 户函数】对话框,如图22-17所示。文件(1)mud 良flag xao)msa> wa«<t)swop 口性埶助妙沧鼻負仃的用户矗
51、黴&序立nx只需按下wtx *. ml聊出至草.文付名d)axmttd) 冋动近jwbw( <n)3jj*j«n«®a)|ljd.uczj 也d e3ift标按粗不放.图22-17【执行用户函数】对话框03选择生成的动态库文件“example.dll”,单击匚口按钮,弹出如图22-18所示的多按钮消 息对话框。图2218执行"example.dll"文件生成的多按钮消息对话框22.2.2文件及文件夹操作对话框文件及文件夹操作对话框包含4种常用的标准对话框,分别介绍如下。1. 创建新部件对话框通过调用uf_ui_create_par
52、t()显示创建新部件文件对话框,然后新建一个部件文件并设置为工作 部件。它实现的功能与ugnx5.0的new file命令功能相同,属于模态对话框。2. 打开已有部件对话框通过调用uf_ui_open_part ()打开一个部件并设置为工作部件。它实现的功能与ug nx 5.0的 open file命令功能相同,属于模态对话框。3. 文件选择对话框通过调用uf_ui_create_filebox(),其实现的功能与windows风格的open file功能相同。该对 话框可以用于选择各种类型的文件,而前两种対话框只能针对部件文件(后缀名为.ph)进行操作。 它属于模态对话框。4. 文件夹选择对
53、话框该对话框通过函数shbrowseforfolder()调用,用于选择文件夹并返冋该文件夹的全路径。它属 于非模态对话框。【例22-6创建文件夹选择对话框。操作步骤如下。01把下面的代码添加到例22-1中黑体字代码所在的位置,按快捷键g ,编译example工 程,出现编译成功的信息。char sfilepath255+1;lpmalloc pmalloc=null;lpitemidlist pidl=null;browseinfo ob;zeromemory(&ob,sizeof(browseinfo);ob hwndowne r=null;ob. lpsztitle=_t ( h
54、请选择文件夹:h );ob ulflags=bh:f_returnonlyfsd:rs;pidl=shbrowseforfolder(&ob);if(pidl!=null)shgetpathfromidlist(pidl.sfilepath);if (succeeded (shgetmalloc (&pmal:loc) ) &&pmalloc) pmalloc->free(pidl);pmalloc->release();(02 |启动ug nx 5.0软件,选择【文件】|【执行】|【nx打开】命令,弹出如图2217 所示的对话框。选择生成的动态库文
55、件“example.dll”,单击按钮,弹出如图22-19所示的文件 夹选择对话框。图2219执行"example.dll"文件生成的文件夹选择对话框在调试上面的程序时应加入下面的头文件:#include<tchar.h>#include <shlobj.h>22.2.3选择菜单列表对话框ug/open api的选择菜单対话框有两种,即单选菜单列表对话框和多选菜单列表对话框,分别 通过子过程ucl603和ucl605实现,下面将具体介绍。uc 1603用于显示一个选择菜单对话框,该菜单可以包含14个菜单选项,并可以通过变量参数设 定默认的选择项。若变
56、量参数为0,则不设定默认选项,同时【确定】按钮变灰。菜单选项的返回 值介于5和18之间,即使用者选择菜单项1,那么返回值是5,使用者选择菜单项14,那么返回值 是18。下面是返回值的说明。(1) 1:回退。(2) 2:取消。(3) 518:选中了的菜单项。(4) 19:不允许状态,不能启动对话框。uc 1605解决多项选择菜单的问题,与uc1603不同,该子过程没有默认的选择项,数组变量的每 一个元数的初值是0。下面介绍返回值及参数。(1) 1:回退。(2) 2:取消。(3) 3:接收。(4) 4:有多个选项被选择。(5) 8:不允许状态,不能启动对话框。【例22-7创建单选菜单列表对话框和多选菜单列表对话框。操作步骤如下。ugnx5.0 一 册通图22-20执行“examplc.dll”文件生成的单选菜单列表对话框01把下面的代码添加到例22-1中黑体字代码所在的位置,按快捷键f7编译example工程, 出现编译成功
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年公共关系专员职业资格考试《媒体关系管理》备考题库及答案解析
- 2025年广告传播师《广告媒体策划与购买》备考题库及答案解析
- 商铺租赁合同续签补充协议2025年条款
- 清洁服务人员劳动合同2025
- 配送服务人员工作协议2025
- 剧院2025年演出经纪合同协议
- 2025年绩效结果强制分布与校准考试试题及答案
- 外汇合同补充协议范本
- 培训机构整合合同范本
- 垃圾厂倒垃圾合同范本
- 医疗健康体检服务投标书标准范本
- 建筑公司安全生产责任制度模板
- 滴灌设备相关知识培训课件
- 2025-2026学年冀教版(2024)小学信息技术三年级上册(全册)教学设计(附目录P168)
- 城市燃气设施提升改造工程节能评估报告
- 餐饮服务连锁企业落实食品安全主体责任监督管理规定
- (2025)辅警招聘考试试题库及答案详解(各地真题)
- 房顶吊运防水卷材施工方案
- 支气管哮喘急性发作期护理
- 剪映教学课件
- 学堂在线 实绳结技术 章节测试答案
评论
0/150
提交评论