最近使用 NX 二次开发,需要用到集列表,也就是SetList这个控件,然而网上相关的资料和范例实在是太少,有幸找到《NX二次开发-BlockUI集列表的使用技巧》和《UG(NX)二次开发 BlockUI 集列表使用方法》,这两篇文章,对我的帮助很大,但是因为使用的 编程语言 不同(我使用的是c++),仍然遇到了很多困难,不过最终在我不断的摸索和尝试下,终于有个完整的使用流程,特此分享给需要的同学,避免跟我一样一下子不知道从何下手。
想快速获取结果的可以直接看代码,想看一下问题的解决过程的,且听我娓娓道来。
对于集列表,它不同于一般的控件,一般的控件直接添加即可,而集列表则需要添加种子块,那么种子块如何添加呢,下面我将详细说明这个步骤。
项目原因,我就使用nx8.0的32位版本来做说明,其他版本类似。
首先,打开任意项目,然后打开块UI样式编辑器,如下图所示:

新建或者打开任意界面,并且添加集列表:

此时提示“错误:缺少种子块”。
我们需要新建或者使用已有的任意 对话框 dlx文件,并且在下方红色方框位置填入文件名(dlx在同一目录的情况下),如果种子块在不同目录,则使用种子块dlx文件的全路径。
此时,错误提示消失,并且自动加入到主界面。

在集列表中可以设置是否自动展开以及列数等。

以上是界面相关,下面进入代码部分,这部分主要是我在前面两篇文章的的帮助下摸索和尝试出来的,特此分享关键代码,项目原因部分不重要的代码实现无法公开,可以自己考虑实现,或者查阅资料,调用UG自带的函数。
针对集列表,主要有两个回调函数,添加和删除按钮时的回调函数,我无法直接找到相关的c++范例,不过后来我发现,可以查看函数的声明和参数来确定回调函数的样式。
比如:对于集列表m_pListCurves,输入set可以智能提示有如下回调函数:

而我们需要的就是AddHandler和DelHandler,那么如何添加这两个回调函数呢,我们可以按F12,进去声明看一下:

然后在AddCallback的地方再按下F12,此时就可以看到如下的声明:

这代表着,这个回调函数是以int为返回值,以 NXOpen::BlockStyler::SetList *为参数类型的函数,同理,在下方可以看到Del的回调函数样式:
typedef NXOpen::Callback2<int, NXOpen::BlockStyler::SetList *, NXOpen::BlockStyler::UIBlock *> DeleteCallback;
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删