基于UG的接口技术研究
其中,代码中的IDD—NEWDLG为所创建的Win.dows风格对话框的ID,CNewDlg为所创建的对话框类。与UIStyler对话框相比,使用MFC的对话框中布局更为容易,修改调试更为方便。通过MFC接口不但可以实现数据通信功能,还可以实现对数据库访问的功能。
2 接口实现过程
二次开发前首先要设置环境变量,设置环境变量的目的是使UG能找到开发的可执行程序的入口,并在启动UG的时候加载必要的信息。UG提供了两种设置环境变量的方法,一种是注册工程路径法,即将用户工程路径注册到文件customs—dIRs.dat(该文件位于${UGII—BASE—DIR}\UG\menus文件夹下)。
另一种比较简单并且适合一般开发用户的设置方法如下:右键点击我的电脑一属性一高级一环境变量,新建一个UG_USER—DIR环境变量,并将环境变量的值设置为建立Application和Startup两个目录所在的文件夹的路径,这两个文件夹分别用来存放dll和菜单文件%.men 。具体实现过程如下:
(1)在Visual C++6.0的应用程序创建向导中选择MFC AppWizard(dl1),并选择应用程序类型为Regular DLL using shared MFC DLL。
(2)设置UG应用开发环境。在Project—Setting---~Link中,Object/library modules文本框中加入UG库文件libufun.1ib和libugopenint.1ib。
(3)配置路径选项,选择Tools--~Options,选择Directoris选项卡,分别在Library Files和Include Files中添加UG根目录下UGOPEN文件夹所在的路径。
(4)编制程序,在应用程序中添加UG的人口函数ufsta(),即将前面的代码加入即可。
(5)建立MFC对话框并添加调用MFC函数。选择菜单命令Insert---~Resource,在Resource对话框中选择Dialog,就可以创建Windows风格对话框。
(6)在VC++中添加实现代码编译连接后生成动态连接库文件(:一c.dl1),打开UG,选择File—Ex—ecute UG/Open--*User Function,在Execute User Func—tion对话框中选择该DLL文件;或者通过MenuScript编辑的菜单和工具条调用。
3 实例分析
二维参数化程序设计可以采用程序自动生成工程图的方式实现,但在零件的三维设计中,由于三维模型的创建涉及到基准实体等特征,直接利用程序生成三维模型非常困难。实例采用三维模型与程序控制相结合的方式,先利用交互的方式生成零件的三维模型,再根据设计要求建立一组完全控制三维模型的关键设计参数,通过程序设计对设计参数进行编程,实现设计参数的检索、修改和根据新的参数值生成新的三维模型的功能。
图3所示为用户定制的MenuSeript菜单界面。布线系统菜单下“连接器库”和“自动布线” 按钮的回调函数均为已编译好的application文件夹下下的DLL文件,后面的3个点表示单击后会弹出一个对话框,而Ctrl+1或Ctrl+2表示此菜单的快捷键。如在UG的主菜单上点击“布线系统” 按钮再按下Ctrl+1快捷键就会运行相应的DLL程序。
实例实现了整机布线模型中线夹的参数化设计。
如图4所示为由MFC生成Windows风格的线夹模型对话框,输入相应尺寸,单击“生成”按钮,就可以生成线夹的三维参数化实体模型,“修改”按钮将按照用户输入的参数值更新并保存模型的参数。实例解决了UG二次开发应用程序向导不能调用MFC的接口问题,实现DLL程序与UG的集成,并通过参数化驱动的方式实现了线夹的三维参数化建模。
4 结束语
在研究UG二次开发接口技术的基础上,给出了二次开发接口实现方案。解决了利用MenuScript菜单和UIStyler的回调函数无法直接调用MFC函数的问题,实现了DLL程序与UG的集成。开发人员可以充分发挥VC++及MFC库类函数的强大的功能,借助VC++中面向对象的思想,开发功能强大的应用程序,例如可以利用Windows消息机制编写更复杂的界面,利用ADO访问数据库,还可以调用VC++中ActiveX控件、Intemet控件等。使用该方法进行二次开发具有速度快、方便简单、界面统一、良好的人机交互能力、功能强大和编程容易等特点。有效地提高UG软件的二次开发效率,使UG二次开发的应用领域更加广阔。
- openwebmailV1.60安装教学(11-12)
- Linux与Unix二大操作系统编程的安全(04-08)
- SSH 指南(04-23)
- 基于DSP的CANopen通讯协议的实现(01-18)
- 利用OpenCV加速嵌入式系统开发(06-19)
- Android平台的多分辨率屏显设计及其兼容性测试(02-06)