NX二次开发如何准确获得工具dll所在主目录(附C++封装函数代码)-UG哪些事圈子-机械圈-UG联盟

NX二次开发如何准确获得工具dll所在主目录(附C++封装函数代码)

该帖子部分内容已隐藏
打赏
9.9
此内容为打赏,请打赏后查看

有三种方法,前两种有缺陷,推荐第三种。

第一种:

通过环境变量获得目录UGII_USER_DIR,缺点在于如果插件不是通过设置环境变量的方式安装,

而是通过在文件 ..\UGII\menus\custom_dirs.dat 中添加路径的方式安装插件,此方法获取主目录将失败。

第二种:

通过读取文件 custom_dirs.dat 找到目录路径,缺点在于如果同时安装了多个插件,并将每个插件目录都添加到了custom_dirs.dat 文件中,那么此方法获取主目录将有多个,而无法准确得知当前工具主目录。

第三种;

获取当前运行的.dll文件的绝对路径,再获得此路径的上一级目录,就是该工具的主目录。

推荐第三种,准确性高,不用考虑安装了多个插件的问题,也不用考虑安装了多个UG版本的问题。

C++代码:

string GetAppModule()
{
int idx;
char ch;
char buf[1024];
CString strTmp;
CString strBak;
AFX_MANAGE_STATE(AfxGetStaticModuleState());
memset(buf, 0, sizeof(char) * 1024);
GetModuleFileName(AfxGetInstanceHandle(), buf, 1024);
ch = ‘\\’;
strTmp = buf;
idx = strTmp.ReverseFind(ch);
strBak = strTmp.Left(idx);
idx = strBak.ReverseFind(ch);
strTmp = strBak.Left(idx);
 
return strTmp.GetBuffer();
}
请登录后发表评论