|
马上注册登录,享用更多网站功能!
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
在看了前人例子的基础上,把VC.net实现UG二次开发的环境配置过程完整地写了出来,并作了个简单的例子,希望能对大家有用,节省些时间。如果有不正确的地方欢迎大家指点
Win2000中文版平台:UG NX2英文版 + VC.net英文版
1.建立目录application,startup
在D盘根目录下建立UG目录D:\UG,在里面分别建立application和startup子目录
D:\UG\application用于放置*.dll,*.ilk文件(用VS.net生成对话框资源)
或者*.dll, *.dlg(用UG styler生成的对话框资源)
D:\UG\startup 用于放置*.men文件,实现菜单配置
2.环境变量的设置
我的电脑->属性->环境变量
添加变量UGII_YG_DIR,变量值为D:\UG
添加变量UGII_VENDOR_DIR,变量值为%UGII_YG_DIR%
3.启动VC.net
New->Project->MFC->MFC DLL
输入Project名称MyProject,点击OK,其余取默认值即可。
4.在MyProject.cpp中添加下列函数:
int DisplayDialog(CWnd* pParent);//显示非模态对话框
extern "C" DllExport void ufusr(char *param, int *retcode, int rlen);//UG 程序入口
extern "C" void ufusr_cleanup(void);
extern "C" int ufusr_ask_unload(void);
具体代码见MyProject.cpp
5.增加对话框资源
增加ID为IDD_DIALOG对话框,并添加ID分别为IDC_ALLERT和IDC_INPUT的BUTTON
为对话框增加以CDialog为基类的类 CMyDlg
6.在MyProject.cpp中添加#include"MyDlg.h"
在MyProject.h中添加UG的头文件
#include <uf.h> //Add UG head files
#include <uf_defs.h>
#include <uf_exit.h>
#include <uf_ui.h>
#include <uf_modl.h>
VC.net中Include地址设置:
Tools->Option->Projects->VC++ Directories->Show Directories for->
选择Include Files->添加相应的地址,我的地址是:
C:\Program Files\EDS\Unigraphics NX 2.0\UGOPEN
7.添加库文件
在Solution Explorer中,右键点击MyProject->Add->Add Existing Item...
选择到UGOPEN目录,我的目录为C:\Program Files\EDS\Unigraphics NX 2.0\UGOPEN
文件类型选择All Files(*.*),文件名称键入*.lib,点击Open
可以全部选择出现的5个lib文件,多选了没坏事;不过我一般只选择
libopenintpp.lib,libufun.lib和libugopenint.lib三个
8.如果生成基于对话框的类名称不是CMyDlg或者对话框ID不是IDD_DIALOG
修改MyProject.cpp中函数DisplayDialog(CWnd* pParent)两行相应的代码:
CMyDlg* dlg=new CMyDlg();
BOOL ret=dlg->Create(IDD_DIALOG);
9.编译,将Debug目录下MyProject.dll,MyProject.ilk文件 copy至D:\UG\application;
在D:\UG\startup目录下建立style.men文件,具体内容见附件。
避免每次Copy MyProject.dll,MyProject.ilk文件小技巧:
右键点击Solution Explorer中MyProject->Property->linker->General
->Output File->你的application目录,例如我的为
D:/UG/application/MyProject.dll, 特别注意这里是"/"。
10.运行UG
可以看见,在Help菜单前出现了YG下拉菜单,点击MyProject到目前为止已经迈出了成功的一大步。
11.添加对话框中Alert和Input Button的事件响应,均为鼠标单击产生事件响应
在MyDlg.cpp中添加函数
void CMyDlg::OnClickedAllert();
void CMyDlg::OnBnClickedInput();
具体代码见附件。
编译,运行UG可以看到点击Alert和Input按钮已经有了事件响应。
12.大功告成,至于以后代码如何添加还需自己在此基础上多多思考。 |
|