5.7 编程实例

至此,关于NX二次开发涉及的三部分知识(菜单与功能区设计、对话框设计、代码设计)您已经基本了解。为了更好地帮助开发者整合这些知识点,接下来使用Block UI与NXOpen C结合的方式开发一个简单的应用程序。基本的需求如下:

● 设计如图5-10所示的“Base Body Test”对话框。

● 在对话框Type下拉列表中有两种类型——Block与Sphere,当显示为“Block”时,Dimensions组中的“Diameter”对应的UI Block不显示。

● 当Type下拉列表中显示为“Sphere”时,Dimensions组中的“Length(XC)”“Width(YC)”“Height(ZC)”对应的三个UI Block不显示。

● 用户在NX的图形窗口指定了Point后,单击对话框中的OK或者Apply按钮,在指定的Point位置,根据对话框上的信息,创建Block或者Sphere Feature。

(1)制作菜单与功能区(相关知识请参阅第2章)。针对本实例,菜单与功能区的制作已完成(请参阅2.4节)。

(2)设计对话框(相关知识请参阅第3章)。针对本实例,对话框设计已完成(请参阅3.4节,并且通过Block UI Styler模块自动生成的三个文件都保存在NX二次开发根目录下的application目录中)。

图5-10 Base Body Test对话框

(3)启动Visual Studio,利用NXOpen C++Wizard创建一个名为ch5_5的项目(本例代码保存在“D:\nxopen_demo\code\ch5_5”),删除原有ch5_5.cpp文件,再将Block UI Styler模块自动生成的ch5_5.hpp与ch5_5.cpp拷贝到这个项目中,并将它们添加到Visual Studio Project中,如图5-11所示。

图5-11 添加文件到Visual Studio Project中

(4)处理代码以确保对话框打开时,UI Block显示正确。在ch5_5.hpp中添加下列代码:

在ch5_5.cpp中,添加代码如下:

以上代码的逻辑是对话框的type下拉列表有两个选项,获取当前选中选项的索引值(从0开始计数),如果是第0项,就通过BlockID设置“Length(XC)”“Width(YC)”“Height(ZC)”对应的三个UI Block显示。如果是第1项,就显示“Diameter”对应的UI Block,其他未设置的,默认一直可见。

(5)由于期望对话框打开后显示正确,因此SetUIVisibility()这个函数,要添加到initialize_cb()或者dialogShown_cb()回调中。在dialogShown_cb()中添加代码如下:

(6)当对话框打开后,用户也可以自由切换type中的选项,此时也应该保证对话框显示正确。由于这个操作是期望对话框发生变化的,因此,代码要添加到update_cb()这个回调中,添加的代码格式如下:

(7)由于创建Block与Sphere,使用了NXOpen C API,因此,需要在ch5_5.hpp中,添加下列头文件:

(8)在ch5_5.cpp的ufusr()中添加初始化与终止API(初学者很容易忽略这一步,如果忽略它,代码编译链接成功,但在NX执行应用程序时有异常),格式如下:

(9)转换字符串,将double类型转换为string类型。在ch5_5.hpp中添加代码如下:

在ch5.cpp中,添加代码如下:

(10)接下来,需要处理单击对话框上的“OK”或“Apply”按钮时,创建Feature的逻辑。在这个过程中,主要涉及使用Block UI时,如何获取UI Block对应的值。这是C++基础知识的应用,开发者可以打开对应的头文件或者官方API帮助文档,查看相关类下的函数,也可以参考“%UGII_BASE_DIR%\UGOPEN\SampleNXOpenApplications\C++\BlockStyler”目录下的样例。

在ch5_5.cpp的apply_cb()中添加下列代码:

(11)编译链接生成*.dll文件,并将该文件拷贝到NX二次开发根目录下的application目录中。

在编写代码时,开发者经常需要在编写一定数量的代码后,编译链接生成*.dll文件,再进行代码调试,这样就会出现总是要拷贝*.dll文件到application目录中的问题。

如果您觉得拷贝操作过于烦琐,且设置的NX二次开发的目录结构与本书第2章所介绍内容一致,就可以在Visual Studio主界面中,单击“Project”→“Properties”按钮,设置“Output File”如图5-12所示。设置后,每次编译链接生成的*.dll文件会自动存放到NX二次开发根目录下的application目录中。

图5-12 设置Output File到application目录

(12)在NX中新建或打开一部件文件,单击Ribbon工具条上的“NXOpen Demo”→“Base Body”按钮,启动Base Body工具,在NX图形窗口指定一个点,更改对话框上的数值,单击Apply按钮就可以创建Feature,结果如图5-13所示。

图5-13 运行应用程序显示结果