购买与咨询 NX 二次开发视频教程,请联系微信号:13890821008 QQ号:85585969
在UG NX加工模块下挂一个加工工艺辅助用户界面,然后和UG刀具库等连起来,实现工艺选择优化等信息和UG结合的更紧密些。内部UG运行的动态链接库运行有两种不同的入口,分别是:程序入口点:ufusr;程序入口点:ufsta。前者是一般可以直接执行的dll,后者是通过UG菜单、工具栏、UI Styler等用户界面调用的。关于程序入口点,涉及到“User Exit 的概念”
代码见下
/****------------------------------------------- *****/
// 作者: UG二次开发专业技术网站www.UGapi.com
/****------------------------------------------- *****/
//头文件-----------
#include "uf.h"
#include "uf_ui.h"
#include "stdio.h"
/*将UF函数出错信息显示在 information window 上--------------*/
#define UF_CALL(X) (report(__FILE__,__LINE__,#X,(X)))
static int report(char *file ,int line ,char *call,int irc)
{
if(irc)
{
char messg[133];
printf("%s,line %d: %s\n",file,line,call);
(UF_get_fail_message(irc,messg))?
printf(" return a %d\n",irc):
printf(" return error %d: %s\n",irc,messg);
}
return(irc);
}
/*具体用法UF_CALL (UF_CURVE_create_point()) */
//---------------------------------------------------------
/****--------------------------------------------- *****/
// 函数名: do_ugopen_api()
// 功能: 实际工作函数,用户编写的主程序,UG API调用演示
/****-------------------------------------------------- *****/
static void do_ugopen_api(void)
{
char * part_name="D:\\UGS180\\work\\gg.prt ";//输入指定文件的路径
tag_t part;//输出该文件中part的ID
UF_PART_load_status_t error_status;//输出出错状态
/*打开一个已经存在的*.prt文件*/
//UF_CALL(UF_PART_open (part_name, &part, &error_status ));
}
/****------------------------------------------ *****/
// 作者: UG二次开发专业技术网站www.UGapi.com
// 函数名: do_ugopen_api()
// 功能: 实际工作函数,负责调用外部用户界面所在dll
/****----------------------------------------*****/
void do_ugopen_api()
{
//::MessageBox(NULL,"开始调用!","提示信息",MB_OK | MB_ICONINFORMATION);
HINSTANCE hDLL;
typedef void(_stdcall *tShowFrm)();//定义函数指针类型
tShowFrm pShowFrm;
hDLL = LoadLibrary("PrjSelCut.dll");////装载DLL
if(hDLL != NULL)
{
pShowFrm = (tShowFrm)GetProcAddress(hDLL, "ShowSelCutFrm");////获取函数ShowSelCutFrm的函数指针
pShowFrm();////调用DLL中的函数ShowSelCutFrm
FreeLibrary(hDLL);////释放DLL模块
}
}
void ufusr(char *param, int *retcode, int paramLen)
{
if (!UF_CALL(UF_initialize()))//获取二次开发许可
{
do_ugopen_api();//实际工作函数
UF_CALL(UF_terminate());//释放二次开发许可
}
}
int ufusr_ask_unload(void)
{
return (UF_UNLOAD_IMMEDIATELY);//完成操作后立即从内存中卸载
}
/****---------------代码结束-----------------*****/