1、 新建一个插件开发目录,如 UGStyler。在该文件夹下新建两个文件夹,分别命名为startup
和 application。 
2、 找 到 UG 安 装目录 下 UGII 文 件 夹里 的 ugii_env.dat 文 件 , 其中有 条 语句 :
#UGII_USER_DIR=${HOME}将前面的#号删除,并将${HOME}替换为UGStyler的路径。
如 UGII_USER_DIR= E:\UG\UGStyler。 
 
 
 
 
 
//定义第一级菜单,它是下拉菜单 
//定义该菜单标题 
//结束第一级菜单编辑 
//编辑第二级菜单,是 MENU_ID_1 的下拉菜单 
//定义第二级菜单,它不是下拉菜单,而是按钮 
//定义菜单标题 
 
 
 
 
 
//定义按钮菜单的响应动作,即运行UIStyler对话框(test_UG.dlg) 
//结束第二级菜单的编辑 
3、 菜单栏开发:新建一个.men 文件,如 test.men,文件语法如下: 
VERSION 120 
EDIT UG_GATEWAY_MAIN_MENUBAR //编辑 UG 主菜单 
BEFORE UG_HELP                                   // 在帮助菜单的前面 
CASCADE_BUTTON MENU_ID_1    
 
LABEL PDM   
 
 
 
END_OF_BEFORE 
 
 
MENU  MENU_ID_1   
BUTTON UG_PDM 
 
 
LABEL  提取信息  
 
 
ACTIONS test_UG.dlg   
END_OF_MENU   
 
注:UIStyler 对话框的开发将稍后介绍。 
4、 工具栏开发:新建一个.tbr 文件,如 test.tbr,文件语法如下: 
TITLE PDM 应用   
VERSION 170 
DOCK TOP 
 
     BUTTON     UG_PDM                
     LABEL      提取 UG 信息 
     BITMAP    ug_pdm.bmp 
5、 UIStyler 对话框的开发 
选择起始——用户界面样式编辑器,如下图所示 
//定义工具标题 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
//在上部工具栏显示 
//按钮,对应.men 文件中的按钮名 
//定义按钮标题 
//对应显示图片 
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn
可定义对话框的相关属性,包括标题以及选用按钮等。并可为对话框添加整型、字符型输入
框等控件。 
点击“回叫”,即可为按钮添加响应事件,如下图所示,输入回叫函数名即可自动生成回叫
函数: 
 
 
点击保存,会在保存目录下找到三个文件:*****.dlg, *****_template.c, *****.h 
6、 生成启动时载入的共享库 
在 VC++里新建一个空的 Win32 Dynamic-Link Libray 项目。 
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn
 
UF_STYLER_item_value_type_t data;                            //  用以查询控件属性 
char fname[256 + 1]; 
char saveDir[256 + 1]; 
char* key; 
char message[UF_UI_MAX_STRING_LEN + 1]; 
return ( UF_UI_CB_CONTINUE_DIALOG ); 
将*****_template.c 文件以及*****.h 文件加入项目中。可在回调函数中添加事件。如下: 
int CHANGE_ok_cb ( int dialog_id, 
                       void * client_data, 
                       UF_STYLER_item_value_type_p_t callback_data) 
{ 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
tag_t disPart = UF_PART_ask_display_part();   
UF_PART_ask_part_name(disPart, fname); 
 
/* Make sure User Function is available. */     
if ( UF_initialize() != 0)   
 
 
/* ---- Enter your callback code here ----- */ 
data.item_attr = UF_STYLER_VALUE;             //定位查询属性类型,即为查询控件的值 
data.item_id = CHANGE_STR_0;                       // 定位查询属性 ID,即为字符串输入栏 
 
UF_STYLER_ask_value(dialog_id, &data);       // 获得控件值 
key = data.value.string; 
 
if(GetInfor(key,saveDir)) 
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn
 
 
 
 
 
//显示提示消息 
sprintf(message,"UG 信息提取有误"); 
sprintf(message,"txt 文件已保存至:\n\n%s",saveDir); 
 
else 
 
uc1601(message,1); 
 
 
 
 
 
 
       /* Callback acknowledged, terminate dialog                         */ 
       /* It is STRONGLY recommended that you exit your             */ 
       /* callback with UF_UI_CB_EXIT_DIALOG in a ok callback.*/ 
       /* return ( UF_UI_CB_EXIT_DIALOG );                                     */ 
 
       return ( UF_UI_CB_EXIT_DIALOG );                                                 
 
} 
l  找到程序中“#ifdef MENUBAR_COMMENTED_OUT”及其配对的“endif”并删除。 
l  找到程序中“#ifdef DISPLAY_FROM_USER_EXIT”及其配对的“endif”并删除。注意不要
UF_terminate (); 
删除这两项里面的程序。 
l  在将刚才“#ifdef DISPLAY_FROM_USER_EXIT”下的语句中的“”改为 ufusr。 
在该项目中,也可调用功能扩展程序文件(如:extern.dll)调用方式同其他。 
编译项目生成*****.dll 文件。 
7、 将.men 文件、.tbr 文件、*****.dll 文件(其中有 ufsta()函数作为入口)、extern.dll(功能
扩展程序文件)放在 startup 文件夹下。 
将*****.dlg 文件,图片文件(如 pdm.bmp)放在 application 文件夹下。 
插件开发完毕。打开 UG,便会有新加的菜单和工具。 
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn