适用版本:NX 6.0 及以上版本
一、概述
UG NX二次开发的框架一般分为四大组成部分,工具条、对话框、应用程序和库函数,其中工具条和对话框属于UI部分,也就是人机交互界面;应用程序和库函数属于逻辑部分,对应一些鼠标点击事件,以及处理函数。其中的对话框的功能就是完成人机交互功能的核心部分,它实现参数输入等功能,在UG功能开发中的地位非常重要。UG NX的对话框有两种类型,一种是NX 6.0之前的老式UI,即UI Styler;还有一种是NX6.0以后的新版UI,即BLOCK UI Styler。
二、功能说明
我们在运行BlockUI对话框时,有时需要在Update回调里面当满足某种条件之后关闭对话框,NXOpen里没有相关的函数可以实现,这个时候,这时就只能想到NX的内部函数了,通过分析查找得到相关函数如下:
通过进一步的逐个函数分析,得到函数的具体用法,并封装成C#常用的扩展函数:
序号 | 函数名称 | 输入 | 输出 | 备注 |
1 | ask_framework | (IntPtr uicomp) | IntPtr | 通过对话框获取UI框架 |
2 | ask_command | (IntPtr framework) | IntPtr | 通过框架获取命令 |
3 | end_dialog | (IntPtr framework, IntPtr command, int area) | int | 关闭对话框 |
/// <summary>
/// 结束对话框
/// </summary>
/// <param name="blockDialog"></param>
public static void EndDialog(this BlockDialog blockDialog)
{
var topBlock = Lookup(blockDialog.TopBlock.Tag);
var framework = ask_framework(topBlock);
var command = ask_command(framework);
end_dialog(framework, command, 2);
}
当需要关闭对话框时,只需要使用“theDialog.EndDialog();”一行代码,即可实现点击下图所示按钮立即关闭对话框。
三、总结
这样封装成基础库可以重复调用,不容易出现BUG,也便于阅读和调试。