NX二次开发 UG内部函数调UG宏
string g_nxlib_path = "D:\Program Files\Siemens\NX 10.0.0.24\UGII";//请指定正确的UGII路径
//调NX宏
bool CALL_MACRO(const string macro)
{
string str = Trim(macro);
if ((int)str.length() < 7 || (int)str.length() > 256)
return false;
if (!IsPathExist(str))
return false;
if (0 == UF_is_initialized())
UF_initialize();
if (0 == (int)g_nxlib_path.length())
return false;
string libugdll = CharMakeLower(g_nxlib_path + "\\libugui.dll");
if (!IsPathExist(libugdll))
return false;
typedef void(*call_macro_p_t)(char* macro);
call_macro_p_t CallCallMacro = NULL;
wchar_t* wp0 = StringToWchar(libugdll);
HMODULE ssss = LoadLibrary(wp0);
data_free(wp0);
#ifdef _WIN64
CallCallMacro = (call_macro_p_t)GetProcAddress(ssss, "?MACRO_playback_from_usertool@@YAXPEBD@Z");
#else
CallCallMacro = (call_macro_p_t)GetProcAddress(ssss, "?MACRO_playback_from_usertool@@YAXPBD@Z");
#endif
if (CallCallMacro != NULL)
{
char ch[257] = "";
sprintf_s(ch, "%s", StringToUFString(str).c_str());
CallCallMacro(ch);
FreeLibrary(ssss);
return true;
}
FreeLibrary(ssss);
return false;
}