![UG软件二次开发课程第五课_第1页](http://file3.renrendoc.com/fileroot_temp3/2022-1/8/58357fd8-4c5d-47aa-bf77-da2b139b1e1d/58357fd8-4c5d-47aa-bf77-da2b139b1e1d1.gif)
![UG软件二次开发课程第五课_第2页](http://file3.renrendoc.com/fileroot_temp3/2022-1/8/58357fd8-4c5d-47aa-bf77-da2b139b1e1d/58357fd8-4c5d-47aa-bf77-da2b139b1e1d2.gif)
![UG软件二次开发课程第五课_第3页](http://file3.renrendoc.com/fileroot_temp3/2022-1/8/58357fd8-4c5d-47aa-bf77-da2b139b1e1d/58357fd8-4c5d-47aa-bf77-da2b139b1e1d3.gif)
![UG软件二次开发课程第五课_第4页](http://file3.renrendoc.com/fileroot_temp3/2022-1/8/58357fd8-4c5d-47aa-bf77-da2b139b1e1d/58357fd8-4c5d-47aa-bf77-da2b139b1e1d4.gif)
![UG软件二次开发课程第五课_第5页](http://file3.renrendoc.com/fileroot_temp3/2022-1/8/58357fd8-4c5d-47aa-bf77-da2b139b1e1d/58357fd8-4c5d-47aa-bf77-da2b139b1e1d5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1MenuScript菜单定制菜单定制 MenuScript是是UG/Open二次开发软件包中的二次开发软件包中的一部分,它是一套用于定义一部分,它是一套用于定义UGUG菜单的脚本语言。菜单的脚本语言。UGUG自身的菜单也是用自身的菜单也是用MenuScript写成的,用户写成的,用户使用使用MenuScript可以可以修改修改UGUG的菜单结构的菜单结构,添加添加或或删除删除和和定制菜单定制菜单,以及,以及改变菜单的显示文本改变菜单的显示文本或或响应响应行为行为等。等。 2ufsta n可利用可利用UI StylerUI Styler所定制的界面来实现面向对象、所定制的界面来实现面向对象、交
2、互式的操作过程交互式的操作过程n没有明显的执行过程没有明显的执行过程n整个程序除整个程序除回调函数回调函数的注册过程外,都是纯粹事的注册过程外,都是纯粹事件驱动的件驱动的n每一个界面上的控件都可对应一个回调函数,当用户每一个界面上的控件都可对应一个回调函数,当用户与相应的与相应的UIUI对象发生交互时,此对应的回调函数就被对象发生交互时,此对应的回调函数就被执行。执行。 3UF的系统设置的系统设置 n方法一方法一 打开打开UG目录下的目录下的 Ugiiugii_env.dat文件,在文件中找到文件,在文件中找到# #UG_VENDOR_DIR=$UGALLIANCE_DIRvendor# #U
3、GII_SITE_DIR= $UGALLIANCE_DIRsite 4UF的系统设置的系统设置 方法一方法一 将它们前面的注释符号将它们前面的注释符号“# #”删除。它们删除。它们指明了供用户放置二次开发文件的目录指明了供用户放置二次开发文件的目录 。 当删掉当删掉“# #”号后,号后,UG/OpenUG/Open才能从这些才能从这些目录下得到二次开发的功能扩充。目录下得到二次开发的功能扩充。5UF的系统设置的系统设置 方法一方法一n这两个目录这两个目录 D:UGSNX 4.0UGALLIANCEsite D:UGSNX 4.0UGALLIANCEvendor功能和结构是完全相同的,都有功能和
4、结构是完全相同的,都有startup startup 和和application application 这两个目录这两个目录。6UF的系统设置的系统设置 方法一方法一nstartup目录目录存放存放UG启动时需载入的文件,如启动时需载入的文件,如*.men 菜单脚本文件菜单脚本文件*.dll ufsta()()的动态链接库文件的动态链接库文件7UF的系统设置的系统设置 方法一方法一napplication目录目录则存放具体功能扩展的程序文件,如则存放具体功能扩展的程序文件,如*.dlg 对话框资源文件等对话框资源文件等 8UGUG设的这两个目录设的这两个目录 site和和 vendor,是为
5、是为了供给不同等级的开发者使用了供给不同等级的开发者使用: : vendor下放置下放置UG指定开发商的二次开发产品指定开发商的二次开发产品site下则存放其余开发者的产品下则存放其余开发者的产品 vendor目录下同类内容的文件要目录下同类内容的文件要比比site目录下的优先载入。目录下的优先载入。 9 在在ugii_env.dat文件中还有一条语句,是用文件中还有一条语句,是用来设置存放用户自己二次开发内容的目录:来设置存放用户自己二次开发内容的目录: UGII_USER_DIR=$HOME 同样将其前面的同样将其前面的“# #”号删除,并且在其后面添号删除,并且在其后面添上用户的目录上用
6、户的目录例例:UGII_USER_DIR=f:user在此目录下必须有在此目录下必须有startup和和application目录,目录,它的优先级更低。它的优先级更低。 10UF的系统设置的系统设置 方法二方法二 n在在Windows 环境下,在环境下,在我的电脑我的电脑属性属性高级高级环境变量环境变量系统变量对话框系统变量对话框中中 ,设置用户变量设置用户变量UGII_USER_DIR为用户为用户二次开发内容的目录。二次开发内容的目录。例:用户目录为例:用户目录为f:blkf:blk,在在blkblk下设下设置有置有startupstartup和和applicationapplicatio
7、n目录目录 。1112编程框架编程框架 1.1. 定制菜单定制菜单 打开打开notepad,编写菜单脚本程序编写菜单脚本程序(Menu Script),),保存为保存为*.men。 用来定制用来定制UGUG主菜单,以使用户可以主菜单,以使用户可以调用所作的调用所作的UIUI界面,实现交互式操作。界面,实现交互式操作。 13菜单脚本文件菜单脚本文件菜单脚本文件菜单脚本文件* *.men.men必须存放到必须存放到startupstartup目录中目录中 14VERSIONVERSION120 120 / /* *兼容兼容UGv12UGv12的菜单脚本的菜单脚本* */ /EDIT UG_GATE
8、WAY_MAIN_MENUBAREDIT UG_GATEWAY_MAIN_MENUBAR/ /* *编辑编辑UGUG主菜单主菜单* */ /HIDE UG_HELP HIDE UG_HELP / /* *隐藏隐藏HelpHelp菜单菜单* */ /BEFORE UG_HELP BEFORE UG_HELP / /* *表示第一级菜单位于表示第一级菜单位于HelpHelp菜单之前菜单之前* */ /CASCADE_BUTTONCASCADE_BUTTON MENU_ID_1MENU_ID_1 / /* *定义第一级菜单的定义第一级菜单的IDID,它是下拉菜单它是下拉菜单* */ /LABEL T
9、ESTLABEL TEST / /* *定义菜单的标题定义菜单的标题* */ /END_OF_BEFORE END_OF_BEFORE / /* *结束第一级菜单的编辑结束第一级菜单的编辑* */ /MENU MENU MENU_ID_1MENU_ID_1 / /* *编辑第二级菜单,是编辑第二级菜单,是MENU_ID_1MENU_ID_1的下拉菜单的下拉菜单* */ /CASCADE_BUTTON CASCADE_BUTTON MENU_ID_1_1MENU_ID_1_1 / /* *定义第二级菜单的定义第二级菜单的IDID,它是下拉菜单它是下拉菜单* */ /LABEL APITEST L
10、ABEL APITEST / /* *定义菜单标题定义菜单标题* */ /SEPARATOR SEPARATOR / /* *菜单中的分隔线菜单中的分隔线* */ /BUTTON BUTTON MENU_ID_1_2MENU_ID_1_2 / /* *定义第二级菜单的定义第二级菜单的IDID,它不是下拉菜单它不是下拉菜单* */ /LABEL WINDOWS CALCULATORTEST LABEL WINDOWS CALCULATORTEST / /* *定义菜单标题定义菜单标题* */ /ACTIONS ACTIONS “CALCCALC” / /* *运行运行windowswindows
11、的计算器的计算器* */ /END_OF_MENU END_OF_MENU / /* *结束第二级菜单的编辑结束第二级菜单的编辑* */ /MENU MENU MENU_ID_1_1MENU_ID_1_1 / /* *编辑第三级菜单,是编辑第三级菜单,是MENU_ID_1_1MENU_ID_1_1的下拉菜单的下拉菜单* */ /BUTTON BUTTON MENU_ID_1_1_1MENU_ID_1_1_1 / /* *定义第三级菜单的定义第三级菜单的IDID,它不是下拉菜单它不是下拉菜单* */ /LABEL RUNAPIPROGRAMLABEL RUNAPIPROGRAM/ /* *定义菜
12、单标题定义菜单标题* */ /ACTIONS api_test.dlg ACTIONS api_test.dlg / /* *运行运行UIStylerUIStyler所编写的界面所编写的界面api_test.dlgapi_test.dlg* */ /END_OF_MENU END_OF_MENU / /* *结束第三级菜单的编辑结束第三级菜单的编辑* */ /15用户定制的主界面用户定制的主界面 n例例1生成的用户界面生成的用户界面16VERSION 120VERSION 120EDIT UG_GATEWAY_MAIN_MENUBAREDIT UG_GATEWAY_MAIN_MENUBARBE
13、FORE UG_HELPBEFORE UG_HELP/ /* *表示第一级菜单位于表示第一级菜单位于HelpHelp菜单之前菜单之前* */ / CASCADE_BUTTON CASCADE_BUTTON UISTYLER_DLG_CASCADE_BTNUISTYLER_DLG_CASCADE_BTN / /* *定义第一级菜单的定义第一级菜单的IDID,它是下拉菜单它是下拉菜单* */ / LABEL JiemianLABEL Jiemian END_OF_BEFORE END_OF_BEFORE MENU MENU UISTYLER_DLG_CASCADE_BTNUISTYLER_DLG_
14、CASCADE_BTNBUTTON SETBUTTON SETLABEL LABEL SetmenuSetmenuACTIONS set.dlgACTIONS set.dlg BUTTON APPLYBUTTON APPLY LABEL LABEL ApplyApplyACTIONS apply.dlgACTIONS apply.dlg END_OF_MENU END_OF_MENU17用户定制的主界面用户定制的主界面n例例2生成的用户界面生成的用户界面18编程框架编程框架2.2. 定制定制界面界面 启动启动UGUG,点击点击ApplicationUser Interface Styler,出
15、现一个可视界面的出现一个可视界面的开发工具,在界面上可以任意添加开发工具,在界面上可以任意添加UIUI对对象,在保存以后会生成三个文件:象,在保存以后会生成三个文件: *_template.c、*.h、*.dlg,分别是界面分别是界面的的C C程序模板和界面的资源文件。程序模板和界面的资源文件。 19UIStyler用户界面制作工具用户界面制作工具 nUG/OpenUG/Open二次开发包中包含了用于开发用二次开发包中包含了用于开发用户界面的工具户界面的工具UI StylerUI Styler,它位于它位于Application User Interface Styler它提供了全部它提供了全
16、部UGUG的标准可视控件,能制的标准可视控件,能制作作UGUG风格的交互界面。风格的交互界面。 20UIStyler用户界面制作工具用户界面制作工具n用户在用户在User Interface Styler中可以自由中可以自由添加各种控件,控制各种控件在对话框添加各种控件,控制各种控件在对话框中的排列顺序。中的排列顺序。21UIStyler用户界面制作工具用户界面制作工具n编辑完对话框后编辑完对话框后保存保存时,会自动产生三个时,会自动产生三个文件文件 * *. .dlgdlg对话框资源文件对话框资源文件 * *_ _template.ctemplate.c和和* *. .h hUFUF的的C
17、C源码模板文源码模板文件件。22UIStyler用户界面制作工具用户界面制作工具n用户用户只须将只须将* *_ _template.ctemplate.c和和* *. .h h添加入工添加入工程,再向程,再向C C源码模板中的各源码模板中的各回调函数回调函数框架框架内添加实现自己功能的代码,即可编译、内添加实现自己功能的代码,即可编译、链接成动态链接库链接成动态链接库* *. .dlldll。 23对话框控件对话框控件资源编辑器资源编辑器对话框对话框对象浏览器对象浏览器24UIStyler使用注意使用注意 1.1. 对于每个对话框的对于每个对话框的Prefix NamePrefix Name最
18、好最好有表达其实际意义的名字,以免在程有表达其实际意义的名字,以免在程序中混淆;序中混淆;2.2. 对于每个控件的对于每个控件的IdentifierIdentifier最好也有最好也有表达其实际意义的名字;表达其实际意义的名字;252627UIStyler使用注意使用注意 3.3. 对于每个对话框的对于每个对话框的Launch Dialog FromLaunch Dialog From,应根据不同的入口方式设置不同内容。应根据不同的入口方式设置不同内容。AllAll用户可以在程序中设置入口方式;用户可以在程序中设置入口方式;CallbackCallback表示此对话框是从其它对话框的回表示此对
19、话框是从其它对话框的回 调函数中进入,即由别的对话框的控件启动它;调函数中进入,即由别的对话框的控件启动它;MenuMenu表示此对话框是从表示此对话框是从UGUG菜单中调出;菜单中调出;UserUser ExitExit表示由其它的入口进入。表示由其它的入口进入。 2829UIStyler使用注意使用注意 4.4. 对于控件的对于控件的CallbacksCallbacks回调函数设置回调函数设置中,中,Creates DialogCreates Dialog检查框表示此回检查框表示此回调函数是否可以调出下一个对话框。调函数是否可以调出下一个对话框。 5.5. AttachmentsAttac
20、hments是用来设置控件在对话是用来设置控件在对话框中的位置。框中的位置。 303132对话框编辑示例对话框编辑示例 33用户界面制作方法用户界面制作方法34用户定制菜单的制作用户定制菜单的制作 n使用第二个菜单脚本文件使用第二个菜单脚本文件 在此例中,用户定制的菜单在此例中,用户定制的菜单Jiemian包含两项内容,即包含两项内容,即Setmenu和和Apply,它它们都会弹出对话框,其中们都会弹出对话框,其中Apply的对话框的对话框Apply_app还会产生子对话框还会产生子对话框app。 3536用户界面制作方法用户界面制作方法n单击单击UGUG的的ApplicationUser I
21、nterface ApplicationUser Interface StylerStyler,则出现制作用户界面的则出现制作用户界面的UG界面界面n或或 起始起始所有应用模块所有应用模块用户界面样式用户界面样式编辑器编辑器3738用户界面制作方法用户界面制作方法n如果是建立新的对话框,则可以直接使用如果是建立新的对话框,则可以直接使用UG提供的可视控件来生成需要的对话框。提供的可视控件来生成需要的对话框。单击需要的控件,则在左边的对话框模型中单击需要的控件,则在左边的对话框模型中生成相应的按钮或其它所要求的形式,同时在生成相应的按钮或其它所要求的形式,同时在界面的右边对话框参数控制区中的对象
22、浏览区界面的右边对话框参数控制区中的对象浏览区中中Dialog-CHANGE下立即为所产生的对象自动下立即为所产生的对象自动起一个名字起一个名字 。39用户界面制作方法用户界面制作方法n如果选中如果选中Dialog-CHANGE,即可在即可在Attributes的的Dialog Title框中为用户的框中为用户的对话框起名字,例如对话框起名字,例如APPLY,则则Dialog-CHANGE变为变为Dialog- APPLY 4041用户界面制作方法用户界面制作方法n在在Prefix Name框中也输入相同的名称框中也输入相同的名称 主要为了在生成的主要为了在生成的* *_ _template.
23、ctemplate.c程程序中不会由于没有起名而所有的变量前序中不会由于没有起名而所有的变量前缀都是缀都是CHANGE,容易由于为不同的对容易由于为不同的对话框中的变量起相同名称而造成在程序话框中的变量起相同名称而造成在程序调试中产生变量重复定义。调试中产生变量重复定义。 42用户界面制作方法用户界面制作方法n在在Callbacks项目中确定是否有子对话框产生,项目中确定是否有子对话框产生,若有,则哪些操作可控制产生子对话框。若有,则哪些操作可控制产生子对话框。n在生成控件的时候,在在生成控件的时候,在Callbacks项目中可控项目中可控制是否可通过操作此控件而产生子对话框,在制是否可通过操
24、作此控件而产生子对话框,在Creates Dialog前打钩,则产生子对话框,前打钩,则产生子对话框,见后面图,此时需要在见后面图,此时需要在Activat栏中输入相应栏中输入相应的控制参数,例如的控制参数,例如ACTION_1_APP_cb。43图中表示图中表示Apply和和OK的操作都可产生子对话框。的操作都可产生子对话框。则在则在apply_template.c_template.c程序中会产生相应的函数框程序中会产生相应的函数框架架APPLY_ok_cbAPPLY_ok_cb和和APPLY_apply_cbAPPLY_apply_cb。44用户界面制作方法用户界面制作方法n对话框的各控
25、件生成完毕时,必须在对话框的各控件生成完毕时,必须在File菜单中存储该对话框,并选定存储菜单中存储该对话框,并选定存储路径(路径(必须在前面生成的必须在前面生成的Application文文件夹中存储件夹中存储),此时有信息提示生成了),此时有信息提示生成了三个文件。三个文件。 45用户界面制作方法用户界面制作方法n为菜单为菜单Jiemian中包含的两项内容(即中包含的两项内容(即Setmenu和和Apply)分别建立工程分别建立工程例如例如apply和和Set,在加入在加入*_ _template.ctemplate.c和和* *.h.h程序时把相应的程序放入同一工程程序时把相应的程序放入同
26、一工程(包括对话框及子对话框产生的程序)。(包括对话框及子对话框产生的程序)。 46界面程序调试界面程序调试n在生成的在生成的set_template.c_template.c程序中需要做如程序中需要做如下修改:下修改:1.1. 建立工程建立工程SETSET,把把set_template.cset_template.c和和set.hset.h文件加入工程,把程序中文件加入工程,把程序中 #include 改成改成 #include “set.h”。472、把下面代码中的、把下面代码中的#ifdef和和#endif语句删除,则语句删除,则 SET 的弹的弹 出菜单会出现。出菜单会出现。#ifde
27、f MENUBAR_COMMENTED_OUTextern void ufsta (char *param, int *retcode, int rlen) int error_code; if ( (UF_initialize() != 0) return; if ( (error_code = UF_MB_add_styler_actions ( actions ) ) != 0 ) char fail_message133; UF_get_fail_message(error_code, fail_message); printf ( %sn, fail_message ); UF_te
28、rminate(); return; #endif /*MENUBAR_COMMENTED_OUT*/n3、编译,联编,把编译,联编,把set.dll拷贝到拷贝到startup目录中。目录中。48界面程序调试界面程序调试49界面程序调试界面程序调试n在生成的在生成的apply_template.c_template.c程序中需要做程序中需要做如下修改:如下修改:1.1. 建立工程建立工程APPLYAPPLY,加入加入apply_template.c和和apply.h文件,把程序中文件,把程序中 #include 改成改成 #include “apply.h”。2.2. 把要生成子对话框的操作变
29、量前的把要生成子对话框的操作变量前的0改成改成150界面程序调试界面程序调试Static UF_STYLER_callback_info_t APPLY_cbsAPPLY_CB_COUNT = UF_STYLER_DIALOG_INDEX, UF_STYLER_OK_CB , 1, APPLY_ok_cb, UF_STYLER_DIALOG_INDEX, UF_STYLER_APPLY_CB, 1, APPLY_apply_cb, UF_STYLER_NULL_OBJECT, UF_STYLER_NO_CB, 0, 0 ;513. 把下面代码中的把下面代码中的#ifdef和和#endif语句删
30、除,则语句删除,则APPLY的弹的弹 出菜单会出现。出菜单会出现。#ifdef MENUBAR_COMMENTED_OUTextern void ufsta (char *param, int *retcode, int rlen) int error_code; if ( (UF_initialize() != 0) return; if ( (error_code = UF_MB_add_styler_actions ( actions ) ) != 0 ) char fail_message133; UF_get_fail_message(error_code, fail_message
31、); printf ( %sn, fail_message ); UF_terminate(); return; #endif /*MENUBAR_COMMENTED_OUT*/524.4.把把app_template.c_template.c和和app.h.h文件加入文件加入APPLYAPPLY中,中,给下面的函数起名,只需把给下面的函数起名,只需把红色红色部分用用户名部分用用户名称替换,例如称替换,例如extern int app ( int *response ),并把并把#ifdef和和#endif语句删除,语句删除,把把#include 改成改成#include “app.h”: #
32、ifdef DISPLAY_FROM_CALLBACKextern int (int *response )代码由代码由UG自动生成自动生成#endif /* DISPLAY_FROM_CALLBACK */ 53界面程序调试界面程序调试5.5. 在在apply_template.c中申明函数中申明函数app,在控在控制弹出制弹出app对话框的操作函数中添加函数对话框的操作函数中添加函数app,加在加在/ /* * - -Enter your callback code here - -* */ /后。并后。并在在applyapply_template.c_template.c中中增增加加#
33、#include malloc.hinclude malloc.h。 在此例中产生在此例中产生appapp对话框的操作函数为对话框的操作函数为int APPLY_int APPLY_okok_cb_cb和和int APPLY_int APPLY_applyapply_cb_cb 54int APPLY_ok_cb ( int dialog_id, void * client_data, UF_STYLER_item_value_type_p_t callback_data) int *res=malloc(2); /*为函数为函数app中的参数分配空间中的参数分配空间*/* Make sure
34、 User Function is available. */ if ( UF_initialize() != 0) return ( UF_UI_CB_CONTINUE_DIALOG ); /* - Enter your callback code here - */ app(res); UF_terminate (); return (UF_UI_CB_EXIT_DIALOG); 55界面程序调试界面程序调试6. 编译,联编,把编译,联编,把apply.dll拷贝到拷贝到startup目目录中。录中。56界面程序调试界面程序调试8.8. 启动启动UGUG,则出现用户定制界面,并可弹则出现用户定制界面,并可弹出定制的对话框。出
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小数除以整数同步作业题带答案
- 三年级数学万以内加减混合两步运算题质量作业试题带答案
- 2025年家居装饰设计合同
- 2025年商业用地使用权策划与管理合同
- 2025年度宁夏回族自治区劳务派遣用工合同范本
- 医疗机构合作合同样本大全
- 商品采购合同书
- 医院食堂承包合同样本
- 聚丙烯长期供需合同:2025-2025
- 离婚协议转化为合同:子女权益保护模板
- 中国氢内燃机行业发展环境、市场运行格局及前景研究报告-智研咨询(2024版)
- 《自然保护区划分》课件
- 2025年普通卷钉项目可行性研究报告
- 2024年湖南高速铁路职业技术学院高职单招数学历年参考题库含答案解析
- 上海铁路局招聘笔试冲刺题2025
- 2025年建筑施工春节节后复工复产工作专项方案
- 学校食堂餐厅管理者食堂安全考试题附答案
- 《商用车预见性巡航系统技术规范》
- 国旗班指挥刀训练动作要领
- 春季安全开学第一课
- 植物芳香油的提取 植物有效成分的提取教学课件
评论
0/150
提交评论