NX二次开发 UG内部函数 按下BlockUI重置
string g_nxlib_path = "D:\Program Files\Siemens\NX 10.0.0.24\UGII";//请指定正确的UGII路径
//按下BlockUI重置(NX9.0或以上版本)
void dlx_perform_reset(NXOpen::BlockStyler::UIBlock* block)
{
if (_NX_VERSION < _UGNX9000000)
return;//9.0以下版本不能用
if (0 == UF_is_initialized())
UF_initialize();
if (0 == (int)g_nxlib_path.length())
return;
string libugdll[3];
libugdll[0] = CharMakeLower(g_nxlib_path + "\\libugui.dll");
libugdll[1] = CharMakeLower(g_nxlib_path + "\\libjam.dll");
libugdll[2] = CharMakeLower(g_nxlib_path + "\\libuifw.dll");
if (!IsPathExist(libugdll[0]))
return;
if (!IsPathExist(libugdll[1]))
return;
if (!IsPathExist(libugdll[2]))
return;
typedef void* (*UIFW_ask_uifw_p_t)(void);
typedef void* (*JAM_lookup_tag_p_t)(tag_t);
typedef void (*dlx_perform_reset_f_p_t)(void*, void*);
UIFW_ask_uifw_p_t Call_UIFW_ask_uifw = NULL;
JAM_lookup_tag_p_t Call_JAM_lookup_tag = NULL;
dlx_perform_reset_f_p_t CallDlxPerformReset = NULL;
wchar_t* wp0 = StringToWchar(libugdll[0]);
HMODULE ssss0 = LoadLibrary(wp0);
data_free(wp0);
wchar_t* wp1 = StringToWchar(libugdll[1]);
HMODULE ssss1 = LoadLibrary(wp1);
data_free(wp1);
wchar_t* wp2 = StringToWchar(libugdll[2]);
HMODULE ssss2 = LoadLibrary(wp2);
data_free(wp2);
#ifdef _WIN64
Call_UIFW_ask_uifw = (UIFW_ask_uifw_p_t)GetProcAddress(ssss0, "?UIFW_ask_uifw@@YAPEAVUIFW@UGS@@XZ");
Call_JAM_lookup_tag = (JAM_lookup_tag_p_t)GetProcAddress(ssss1, "JAM_lookup_tag");
CallDlxPerformReset = (dlx_perform_reset_f_p_t)GetProcAddress(ssss2, "?start_adopted_dialog@UIFW@UGS@@UEAAXPEAVUICOMP@2@@Z");
#else
Call_UIFW_ask_uifw = (UIFW_ask_uifw_p_t)GetProcAddress(ssss0, "?UIFW_ask_uifw@@YAPAVUIFW@UGS@@XZ");
Call_JAM_lookup_tag = (JAM_lookup_tag_p_t)GetProcAddress(ssss1, "JAM_lookup_tag");
CallDlxPerformReset = (dlx_perform_reset_f_p_t)GetProcAddress(ssss2, "?start_adopted_dialog@UIFW@UGS@@UAEXPAVUICOMP@2@@Z");
#endif
if (Call_UIFW_ask_uifw != NULL && Call_JAM_lookup_tag != NULL && CallDlxPerformReset != NULL)
{
CallDlxPerformReset(Call_UIFW_ask_uifw(), Call_JAM_lookup_tag(block->Tag()));
}
FreeLibrary(ssss0);
FreeLibrary(ssss1);
FreeLibrary(ssss2);
}