NX二次开发 UG内部函数 按下BlockUI重置

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);
}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
NX是一款强大的CAD软件,支持二次开发,可以通过其内部函数来实现灵活的功能扩展和定制化。在NX二次开发中,内部函数是指由NX提供的一系列函数库,供开发者使用。 首先,NX内部函数可以用于创建、修改和查询CAD模型的各个元素。例如,可以使用内部函数创建点、线、曲线、面、体等几何元素,以及边界、孔、倒角等特征。同时,可以使用内部函数进行CAD模型的变换、切割、融合、修建等操作,实现模型的全面编辑。 其次,NX内部函数还可以用于实现CAD模型的参数化设计和尺寸控制。通过内部函数,可以创建参数表达式,定义模型的各个特征和尺寸之间的关系,使得模型可以动态地根据参数的变化而自动更新。这样,设计人员可以方便地进行快速设计和优化。 除此之外,NX内部函数还可以用于进行CAD模型的分析和仿真。通过内部函数,可以计算模型的体积、质量、重心、惯性矩阵等物理属性,以及进行结构强度、热传导、流体力学等方面的仿真分析。这些功能可以有效帮助用户验证设计的可行性和优良性。 总而言之,NX二次开发内部函数提供了丰富而强大的功能,可以实现CAD模型的创建、编辑、参数化设计和仿真分析等。开发人员可以根据具体需求,灵活运用内部函数,快速开发定制化的CAD应用程序,提高工作效率和产品质量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梅雷

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值