UIStyler界面制作—使用说明
注意!
[文件名不能中文][前缀名不能中文][版本号随便写但前缀名很重要]
[回调函数:由字母、数字和杠组成不能重复 自己记得住就行了]
[每次修改后点【应用】;不点【应用】修改无效]
如果你用 UI做界面 当API 调用 grip 【grip中带界面或提示框..】UI控件就不能输入中文
1.创建ui对话框 程序名M_A
① {进入ui界面编辑器} <=> 运行NX ->【应用】->【用户界面编辑器】
② 修改对话框【属性】
[对话框标题] 玩玩
[线索] 梅雷提示!请选择按钮。
[前缀名] M
[版本] 0
[按钮型式选项] 确定和取消
点【应用】
③ 修改对话框【回调】
[取消] apply_qx
[构造] apply_gz
[毁坏] apply_hh
[确定] apply_ok
点【应用】
④ 创建按钮【点按钮】
修改按钮【属性】
[标记] 点点看
点【应用】
修改对话框【回调】 [记住回调函数 action_0_act_cb]
【创建对话框】打钩 [解决在API中可以调用带对话框的GRIP程序]
点【应用】
⑥ 保存文件
在 F盘新建文件夹M_A [F:\M_A] 文件夹名和文件名可以不一样这里为了好记
回到NX 【文件】->【保存】-> 文件名[M_A] -> 保存到[F:\M_A] -> ok
看看 F:\M_A 文件夹 是否生成3个文件 M_A.dlg、M_A.h 和 M_A_template.c
界面创建完成了 接下来是实现功能的时候了
将UG二次开发用的模板文件ugopen.awx和ugopen.hlp复制到
VC安装目录\MSDev98\Template目录中 【只用操作一次,以后在创建uf程序时可不操作】
2.创建uf程序
①运行C++6.0 ->【文件】->【新建】->
选择 Unigraphics NX AppWizard V1
[工程名称] M_A {工程名称最好和ui创建的文件名一样}
[位置] F:\M_A\
->【确定】-> 【完成】->【确定】
② 将 M_A_template.c文件 重命名为 M_A.cpp
将 M_A.h 和 M_A.cpp 文件 复制或剪切到 F:\M_A\M_A文件夹 覆盖原文
③ 将M_A.dlg 文件复制到 application文件夹中 如 C:\Meilei_nx\Main\application
{ 如果你没做过外挂 就要看看 UG自定义用户工具
你 的电脑上可能没有 C:\Meilei_nx\Main\application 文件夹现在创建它
然后 用记事本打开 UG安装目录\UGII\menus\custom_dirs.dat 文件
在 最后一行 的空白行 输入 C:\Meilei_nx\Main }
----------------------------
④ 修改头文件
#include <M_A.h> 改成 #include "M_A.h"
⑤ 在左上角看见 M_A classes 了吗 双击它 ->Globals ->
双击 ufsta (char *param, int *retcode, int rlen)
#ifdef MENUBAR_COMMENTED_OUT
extern 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_message[133];
UF_get_fail_message(error_code, fail_message);
printf ( "%s\n", fail_message );
}
UF_terminate();
return;
}
#endif /*MENUBAR_COMMENTED_OUT*/
改成
extern void ufsta (char *param, int *retcode, int rlen)
{
int error_code,resonse;
if ( (UF_initialize()) != 0)
return;
/* 在调用UIStyler对话框之前操作 如加入密码*/
/* 在调用UIStyler对话框 */
if ( error_code = UF_STYLER_create_dialog ("M_A.dlg",
M_cbs,M_CB_COUNT,NULL,&resonse) != 0 )//M 与UIStyler前缀名 有关注意大小写
{
char fail_message[133];
UF_get_fail_message(error_code, fail_message);
printf ( "%s\n", fail_message );
}
/* 在调用UIStyler对话框之后操作 */
UF_terminate();
return;
}
extern "C" int ufusr_ask_unload( void )
{
/* 设置UF程序运行以后立刻从内存中卸除,即当重新修改、编译成新的DLL文件时,UG无须关闭重启动,就可调用此新的*.DLL文件 */
return (UF_UNLOAD_IMMEDIATELY);
}
⑥ 双击回调函数 M_action_0_act_cb (..略..)
/* ---- Enter your callback code here ----- */
uc1601("你好!",1); // 注意 uc不能大写 C++ 函数不像VB和GRIP,它有大小写之分
// 表示 在UG 弹出对话框 显示 你好!
UF_terminate ();
⑦ 测试程序
点 Build [快捷键F7]
下面提示 M_A.dll - 0 error(s), 0 warning(s) 表示代码 错误0 警告 0
出现的不是两0 说明你的代码有误
⑧ 编译生成 *.dll
点 BuildExecute [快捷键 Ctrl+F5]
⑨ 查看 F:\M_A\M_A\Debug 文件夹 里 是否生成 M_A.dll文件
在NX 按 Ctrl+U 可调用此文件
你也可以把它做成按钮加在自己的工具条里
=====================================================================================
/* UF_terminate (); 终止对NX/Open API 函数的调用 但不能终止对话框 */
/* 关闭对话框 用 return (UF_UI_CB_CONTINUE_DIALOG); */
/* 应用程序结束时,立即退出程序 用 return (UF_UNLOAD_IMMEDIATELY); */
/* 经过选择对话框退出程序 用 return (UF_UNLOAD_SEL_DLALOG); */
/* 让UG终止运行 用 return (UF_UNLOAD_UG_TERMINATE); */
/*
return ( UF_UI_CB_EXIT_DIALOG );
//回调承认,终止对话框,强烈退出程序
// 在确定 按钮里 不写就是,不终止对话框,不退出程序
*/
/*
#include <string>
std::string xx_xx="退出程序";
if (pick_xx==xx_xx)
{
// 结束程序 在按钮回调函数里用 return ( UF_UI_CB_EXIT_DIALOG );
// 结束程序 在ufsta (char *param, int *retcode, int rlen) 里用return;
return ( UF_UI_CB_EXIT_DIALOG ); // 结束程序
}
*/
_____________________________________________________________________________ _
中磊UG二次开发教程 梅雷著 qq1821117007
学UG就上UG网 http://www.9sug.com/ |