计算机与现代化
2009年第10期
JIS UAN JI YU X IAN DA I H UA
总第170期
文章编号:1006-2475(2009)10-0101-03
收稿日期:2008-09-22
基金项目:航空科学基金资助(2006ZE56007)
作者简介:蒋玲玲(1984-),女,江苏徐州人,南昌航空大学航空与机械工程学院硕士研究生,研究方向:数控加工技术。
基于VC ++的UG 二次开发技术UG /Open M enuScri pt 的应用
蒋玲玲,王细洋
(南昌航空大学航空与机械工程学院,江西南昌330063)
摘要:首先介绍UG /O pen 的开发工具,并具体给出菜单制作技术的具体步骤。在此基础上,借助整体叶轮加工模块的开发,详细阐述在V C++6.0开发平上,利用U G /O pen AP I 函数实现UG 菜单的用户化定制,结合实例分析U G 菜单的制作过程,给出菜单制作的具体函数代码,对UG 菜单的制作具有很好的指导意义。此开发技术可以实现对UG 系统的功能集成,使之与UG 系统达到无缝集成。
关键词:V C ++;UG (U n i G raph i cs);二次开发;UG /O pen AP I ;UG /O pen M enuScr i pt 中图分类号:T P311  文献标识码:A    do:i 10.3969/.j i ssn .1006-2475.2009.10.029
Research on Secondary Develop m ent Technology of UG Based on
UG /OpenM enuScript Using VC ++
JI A NG L i n g -li n g ,WANG X-i yang
(School o fA eronautical&M echan i ca l Eng i neer i ng ,N anchang H angkong U n i ve rsity ,N anchang 330063,Ch i na)
Ab stract :F irst dev elopment too ls of UG /O pen are i ntroduced ,and concrete steps o fm enu m aking m ethods are g iven .O n t h i s ba -sis ,dependi ng on the develop m ent o f t he overall i m pe ller processi ng m odule ,t h is paper e l abo ra tes on the use of UG /O pen A PI f unction rea lizi ng cu
stom iza tion o fU G m enu w ith the develop m ent p l a tfor m o f the VC ++6.0.W i th ex a m ples of the deve lop m ent process of UG m enu ,the spec ific functi on of the code is proposed ,and it prov i des good gu i de to deve l op UG.T he techno l ogy can ach ieve t he f uncti ons of UG syste m i ntegrati on ,and m ake the UG syste m t o i nteg rate seam lessly .K ey w ords :VC ++;U G (U ni G raph ics);secondary develop m ent ;UG /O pen A P I ;UG /O pen M enuScr i pt
0 引 言
Un i G raph ics(简称UG )是当今工程应用中最普
遍使用的软件之一。由于其强大的设计、分析和产品数据管理的功能,国内外许多企业都将它作为首选软件[1-2]。UG 还提供了良好的应用开发工具,能通过高级语言接口使UG 的图形功能与高级语言计算功能紧密结合,以此开发专用的C AD /CAM 系统。
UG /Ope n 是一系列UG 开发工具的总称,是UG 软件为用户或第三方开发人员提供的最主要的开发工具。它主要由UG /Open API 、UG /Ope n GRI P 、UG /Ope n M enuScri p t 和UG /Open U I Styler 4个部分组成[3-4]
。本文主要以VC ++6.0为开发平台,采用M enuScript 技术实现整体叶轮加工模块的自定义菜单。
1 UG /Open M enuScri pt 开发工具简介
UG /Open M enuScript 是UG /Open 中用来定制菜
单的专用模块。它允许用户使用ASC II 文件方便灵活地来编辑UG 系统的菜单,或为用户创建的应用程
序定义自己的菜单[5]
。运用UG /Open M enuScr i p t 这一开发工具,可以很方便地编写用户菜单。通过此菜单调用用户自行开发的对话框或UG 本身的对话框,生成满足用户要求的交互式操作。但是UG /Open -M enuScri p t 可以完全改变UG 软件的主界面,须谨慎
使用以防出现界面混乱[6]
。菜单自定义可分为3种制作方法,即菜单的重排制作技术、菜单的综合制作
技术、菜单的用户化定制技术[7-8]
。本文结合实例阐述菜单的用户化定制过程。
102计算机与现代化2009年第10期
菜单制作技术的具体步骤如下:
(1)二次开发主目录的建立:在硬盘上建立一个目录存放开发的内容,本文中所有实例均在E盘下的VC文件下建立一个名为operation1的文件夹,用于存放二次开发的内容。
(2)二次开发子目录的建立:在operation1下建立两个子目录start u p和application,分别存放具体的开发内容。
(3)二次开发目录的注册:在S|UGÒB ASE D I R\ UGII\m enus目录下,到c usto m dirs.da,t用记事本打开,在最后一行输入E:\V C\operation1,存盘,退出。
2UG自定义菜单的制作
本文以在UG中开发整体叶轮加工模块的过程中应用到的菜单技术为例,详细阐述UG自定义菜单制作过程。
(1)打开一记事本,编写菜单脚本文件[9-10]。本文的菜单脚本文件如下:
V ERSION120
ED I T UG_GAT E WAY_MA I N_M ENUBAR
BEFORE UG_HELP
CASCADE_BUTTON LO C ATOR S_DESI GN
LABEL叶轮加工
END_OF_BEFORE
M E NU LOCATORS_DESI GN
CASCADE_BUTTON SUB_LOCATOR S_DESIGN
LABEL流道加工
END_OF_M E NU
M E NU S U B_LO C A TOR S_DESI GN
B U TTON L I UDAO_KA ICAO
LABEL流道开槽
A CT I ON S IDD_D I A LOG_O PERAT I ON1
B U TTON L I UDAO_KUO
C AOlemon tree 王若琳
LABEL流道扩槽
A CT I ON S IDD_D I A LOG_O PERAT I ON2
END_OF_M E NU
M E NU LOCATORS_DESI GN
CASCADE_BUTTON SUB_LOCATOR S_DESIGN1
LABEL叶片加工
END_OF_M E NU
M E NU S U B_LO C A TOR S_DESI GN1
B U TTON YEP I AN_
C U JIAGONG
LABEL叶片粗加工
A CT I ON S IDD_D I A LOG_O PERAT I ON3
B U TTON YEP I AN_JI NG JI AGONG
LABEL叶片精加工
A CT I ON S IDD_D I A LOG_O PERAT I ON4
END_OF_M E NU
M E NU LO C ATOR S_DESI GN
B U TTON LUNGU_JI AGONG
LA BEL轮毂精加工
A CT I ON S IDD_D I A LOG_O PERAT I ON5
B U TTON Q I NG JIAO_JI AGONG
LA BEL清角加工
A CT I ON S IDD_D I A LOG_O PERAT I ON6
END_OF_M E NU
保存为.m en格式,并放在start u p文件夹里,此文件夹与下面要建立的VC工程operation1放在同一个目录下。
(2)菜单响应UG/Open API程序。
打开VC++6.0,新建一个工程,选择M FC App-W izar d(dll)[11-12],命名为operation1,在operation1.h 定义菜单响应函数UF_M B_cb_status_t App lication ()[13],代码如下:
U F_M B_cb_stat us_t Appli cation1(
U F_M B_w i dget_t w i dge t,
U F_M B_data_t cli ent_data,
U F_M B_acti va ted_button_p_t button);
Sta ti c UF_M B_ac ti on_t acti on_tab l e[]={
{"I DD_D I ALOG_OPERAT I ON1",A ppli cati on,NULL},
{NU LL,NU LL,NU LL}
};//注意UF_M B_ac ti on_t action_table[]里的参数个数为菜单脚本文件里的ACT ION S个数。
本文仅以叶轮加工模块的流道开槽的菜单制作为例,其他的类似。
在operation1.cpp里添加UF_M B_cb_status_t Applicati o n()的实现代码:
U F_M B_cb_stat us_t Appli cation1(
U F_M B_w i dget_t w i dge t,
U F_M B_data_t cli ent_data,
U F_M B_acti va ted_button_p_t button)
{
COperati onD l g*li udaoka i caodl g=new COperati onD l g;
li udaoka icaodlg->C rea te(IDD_D IALOG_OPERAT I ON1);
li udaoka icaodlg->Sho wW i ndow(S W_S HOW);
U F_te r m ina te();
ret u rn(U F_M B_CB_CONT I NUE);
}
注意要在operationq.h和opera iton1.cpp里添加头文件uf_m b.h。
(3)在UG里注册该菜单。
打开UG的安装目录,U II y MENUS y CUSTOM_ DI RS.DAT,用记事本打开C USTOM_DI RS.DAT,在最后一行写出上述VC工程的目录,注意去掉/#0。
2009年第10期蒋玲玲等:基于VC ++的UG 二次开发技术UG /O pen M enuScr i pt 的应用103
最后,编译程序,运行程序,通过ufusa()入口函数[14]
中使用UF _M B _add_styler_acti o ns()注册对话
框所包含的回调函数,至此点击对话框的响应控件即
可激活对应的回调函数。U fusa()入口函数的实现代码如下:
ex tern vo i d ufsta (char *para m,i nt*retcode ,i nt rlen)
{
if ((UF _i nitialize())!=0)re t urn ;A fx M essag eBox ("1");
A FX _MANAGE_STATE(A fxG et S tatic M odu l eState();int error_code=0;
if((error_code=UF_M B_add_acti ons(acti on_table))!=0){
char fa il_m essage[133]="";
U F_get_fa il_m essage(erro r_code ,fa il_m essage);A f xM essageBox(fa il_m essage ,1);}
U F_te r m i na te();re t urn ;}
本文的UG 叶轮加工模块的用户化菜单制作到
此结束,运行结果如图1所示。
图1 叶轮加工模块的用户化菜单在此菜单的制作过程中需要注意以下两个问题:(1)要把VC++的工程进行如下设置:Pro ject y
Setting y Link ,把Outpu t file na m e 设置在startup 文件夹里,本文的文件输出路径为:E :\VC \operation1\s-t artup \operati o n1.d ll 。(2)要在operation1.cpp 里添加入口函数退出的头文件#i n clude /u f_ex i.t h 0,否则出现进入UG 后,出现如图2的错误。
图2 菜单入口函数加载错误
3 结束语
本文结合叶轮加工模块的自定义菜单创建实例,阐述了UG 用户化菜单定制的过程,有效地实现叶轮
加工模块的调用。一方面可以自由灵活的对UG 系统功能进行调用而不破坏原有的系统,另一方面可以方便地实现对UG 系统的功能集成和二次开发,使之与UG 系统达到无缝集成,是一种方便有效的菜单制作技术。
参考文献:
[1] 徐春林,张宏兵,谢正义.UGNX 4.0中文版基础与应用
教程[M ].北京:电子工业出版社,2007:2.
[2] UG S 公司.UG /O pen A P I R eference [R ].UGS 公司,
1998:5-6.
[3] 吴占阳,侯忠滨,谌祖辉.UG 二次开发技术研究[J].现
代机械,2005(5):48-50.
[4] 范元勋,庄亚红,王华坤.UG 二次开发工具的使用[J].
电气技术与自动化,2002(6):70-72.
[5] 王磊,李浙昆,谭毅,等.UG /Open AP I 对UG 二次开发
技术研究[J].机电产品开发与创新,2006(19):105-106.
[6] 侯永涛,丁向阳.UG /O pen 二次开发与实例精解[M ].
北京:化学工业出版社,2007:1.
[7] 杨宗亮,吴兆华.UG 二次开发技术及其开发技巧[J].
制造业信息化,2007(4):112-114.
[8] 阳意慧,张建月,阮锋,等.UG 二次开发与加工自动化
[J].模具技术,2006(5):51-52.
[9] 黄翔,李迎光.UG 应用开发教程与实例精解[M ].北
京:清华大学出版社,2005:51-52.
[10]侯永涛,丁向阳.U G /O pen 二次开发与实例精解[M ].北
京:化学工业出版社,2007:24-28.
[11]王育坚.V i sua l C ++面向对象编程教程[M ].北京:清华
大学出版社,2003:102-104.
[12]董正卫,田立中,付宜利.UG /O pen A P I 编程基础[M ].
北京:清华大学出版社,2002.
[13]王明强,王宁生,赵良才,等.UG 二次开发中建库接口技
术研究[J].现代制造工程,2004(1):42-43.