©UGSC.2007.Allrightsreserved.二次开发应用框架日期:2007年8月©UGSC.2007.Allrightsreserved.2主要内容二次开发工程项目的创建应用程序框架工程路径设置API运行模式程序的初始化及终止用户入口©UGSC.2007.Allrightsreserved.工程项目的创建©UGSC.2007.Allrightsreserved.4概述二次开发工程的创建常用有3种:UG/OpenAppWizardWin32应用程序向导MFC应用程序向导UG应用开发程序采用了动态链接库(DLL,DynamicLinkLibrary)技术,使用上述任何一种应用向导开发程序,最终生成的结果都是DLL文件,UG启动时会自动加载动态链接库文件供用户调用,从而实现了应用开发程序与UG平台的无缝集成。©UGSC.2007.Allrightsreserved.5利用UG/OpenAppWizard向导–设置向导1我们假设VisualC++.NET2003安装在C:\ProgramFiles\MicrosoftVisualStudio.NET2003\Vc7:第一步:从UG安装路径的目录下UGII_BASE_DIR\ugopen\vc7_files\vcprojects拷贝所有文件到C:\ProgramFiles\MicrosoftVisualStudio.NET2003\Vc7\vcprojects©UGSC.2007.Allrightsreserved.6利用UG/OpenAppWizard向导–设置向导2第二步:拷贝整个目录UGII_BASE_DIR\UGOPEN\vc7_files\VCWizards\Unigraphics_NX_Open到C:\ProgramFiles\MicrosoftVisualStudio.NET2003\Vc7\VCWizards©UGSC.2007.Allrightsreserved.7利用UG/OpenAppWizard向导1.4节已经详细介绍了使用UG/OpenAPPwizard创建一个简单的FirstProject程序。该向导是UG软件本身提供的应用向导,随着UG版本和开发环境的升级而升级。该向导操作简便,运行稳定,可以快速构建开发体系,但通常不支持MFC类库,因此常常应用于辅助工具的开发。©UGSC.2007.Allrightsreserved.8利用UG/OpenAppWizard向导©UGSC.2007.Allrightsreserved.9利用UG/OpenAppWizard向导©UGSC.2007.Allrightsreserved.10利用UG/OpenAppWizard向导©UGSC.2007.Allrightsreserved.11利用Win32应用程序向导-新建项目©UGSC.2007.Allrightsreserved.12利用Win32应用程序向导-设置项目属性(1)©UGSC.2007.Allrightsreserved.13利用Win32应用程序向导-设置项目属性(2)©UGSC.2007.Allrightsreserved.14利用Win32应用程序向导-设置项目属性(3)©UGSC.2007.Allrightsreserved.15利用Win32应用程序向导-设置项目属性(4)©UGSC.2007.Allrightsreserved.16利用Win32应用程序向导-设置项目属性(5)©UGSC.2007.Allrightsreserved.17利用Win32应用程序向导-设置项目属性(6)©UGSC.2007.Allrightsreserved.应用程序框架©UGSC.2007.Allrightsreserved.19应用程序框架UG/OpenAPI应用程序一般包括菜单、对话框、应用程序(DLL)和UG/OpenAPI库函数四部分,其中菜单和对话框是程序与用户交互的工具,从菜单可以启动应用程序、对话框等,在对话框激活控件时,将调用相应的回调函数,应用程序(回调函数)用基本的C/C++语言和的库函数编码。©UGSC.2007.Allrightsreserved.20应用程序框架菜单:菜单文件(.men)和工具条文件(.tbr),放在应用程序目录的startup子目录中。对话框:对话框文件(.dlg),放在程序目录的application子目录中。应用程序(回调函数):应用程序(.dll),放在程序目录的startup子目录中。UG/OpenAPI库函数:默认存放在“$UGII_BASE_DIR\ugopen”目录中。在创建应用程序时需要配置。©UGSC.2007.Allrightsreserved.21应用程序框架UG规定的目录有startup、application、udo和dfa。UG对它们存放的文件做了如下的规定:(1)Startup目录存放UG启动时需加载的动态链接库文件(*.dll)、菜单脚本文件(*.men)和用户工具栏脚本文件(*.tbr)。(2)Application目录存放具体的功能扩展程序文件,如UIstyler对话框文件(*.dlg)。(3)Udo目录用于存放与用户自定义对象相关的动态链接库文件。(4)Dfa目录存放KF程序文件(*.dfa)及对应的对话框文件。工具图标文件(*.bmp)©UGSC.2007.Allrightsreserved.工程路径设置©UGSC.2007.Allrightsreserved.23工程路径设置-配置文件法$UGII_BASE_DIR\UGII\ugii_env.datUGII_CUSTOM_DIRECTORY_FILE=$UGII_DEFAULT_MENU_DIR\custom_dirs.datUGII_UG_CUSTOM_DIRECTORY_FILE=$UGII_DEFAULT_MENU_DIR\ug_custom_dirs.dat在默认情况下,custom_dirs.dat和ug_custom_dirs.dat位于路径“$UGII_BASE_DIR\ugii\menus\”。custom_dirs.dat用于存放用户指定的目录,UG最初安装后该文件不包含任何目录,且该文件不会随着UG新版本的发布而更新。Ug_custom_dirs.dat用于存放UG指定的目录,该文件会随着UG新版本的发布而改变并被覆盖,建议不要编辑该文件。©UGSC.2007.Allrightsreserved.24工程路径设置-配置文件法当UG启动时,系统检查这两个文件中注册的工程路径并自动加载该路径下的所有资源,包括用户菜单、对话框和动态链接库等。配置文件custom_dirs.dat的基本语法如下:(1)文件中允许使用注释,注释符“#”。(2)每一行只能写一条工程路径,要确保路径的正确。(3)custom_dirs.dat允许添加多个文件路径,UG在启动时将按照先后顺序依次载入。©UGSC.2007.Allrightsreserved.25工程路径设置-环境变量法UG环境配置文件ugii_env.dat中存在3个用于注册工程路径的环境变量,如下表所示。去掉环境变量前的注释符“#,在等号后写入具体的工程路径,则在UG启动的同时会将这些环境变量所指定的工程路径中的资源按照优先级的顺序加载。环境变量名工程路径优先级UG_VENDOR_DIR存放UG指定应用开发产品的工程路径最高UG_SITE_DIR存放其余应用开发产品的工程路径其次UG_USER_DIR存放用户自己应用开发产品的工程路径最低©UGSC.2007.Allrightsreserved.API运行模式©UGSC.2007.Allrightsreserved.27API运行模式–内部模式内部模式(Internal开发模式)的程序只能在UG的界面环境下运行。在运行内部程序时,它们以.dll(动态链接库)的方式被调到UG的进程空间中。它必须启动UG才能运行。执行代码小,连接快;内部程序一旦被加载到内存中,只能通过UG/OpenAPI的卸载功能才能从UG运行功能中卸载它;运行结果在UG的界面图形环境中可见;入口函数是ufusr或ufsta;最大的优点是能处理UG的UI的对象接口,实现和UG界面的无缝集成内部程序有下列特点:©UGSC.2007.Allrightsreserved.28API运行模式–内部模式内部模式的应用程序执行方式直接激活方式该方式不用设置环境变量,程序编译连接后即可执行。在UG环境中选择菜单:File-Execute-NXOpen…,将出现一个文件打开对话框,选取相应应用程序(.dll)即可。用户菜单调用方式使用该方式必须设置环境变量UG_USER_DIR,将环境变量UG_USER_DIR指向应用程序主目录,将应用程序(.dll)放置到主目录的$UGII_USER_DIR\application或$UGII_USER_DIR\startup子目录下。©UGSC.2007.Allrightsreserved.29API运行模式–内部模式UIStyler回调函数方式由UIStyler创建的对话框回调函数中激活应用程序(.dll)通过用户出口根据用户出口不同,设置相应的环境变量,激活对应入口函数应用程序.dll。©UGSC.2007.Allrightsreserved.30API运行模式–内部模式内部程序的一般格式如下:#includeuf.h/*Prototypesexistinthisfile.*/voidufusr(){/*申明变量*/UF_initiialize();/*用户代码*/UF_terminate();}©UGSC.2007.Allrightsreserved.31API运行模式–外部模式外部模式下的程序可以在操作系统下运行,不必在UG环境中作为UG的子程序运行。外部程序是可执行程序,运行时只要有UGLicense的支持,就可以由操作系统直接执行,不需要启动UG。它的优点是不必启动UG,属于后台执行,这样可以节约运行时间,其缺点在于它不能和UG发生联系,因而不能利用UG的显示窗口动态反馈操作结果,同时也不能实现一些用户的交互操作和管理或控制出图,所以它一般用于part零件文件大量创建,而不适用于用户交互性的几何建模和修改、存取外部程序在操作系统平台的命令行直接执行即可。©UGSC.2007.Allrightsreserved.32API运行模式–外部模式外部程序的一般格式如下:#includeuf.h/*头文件*/intmain(intargc,char**argv){/*申明变量*/UF_initiialize();/*用户代码*/UF_terminate();}©UGSC.2007.Allrightsreserved.程序的初始化及终止©UGSC.2007.Allrightsreserved.34程序的初始化所有UG/OpenAPI程序的使用,必须及时进行初始化和终止,以确保获取或释放UG/openAPI的执行许可权限。在调用UG/OpenAPI的函数前,应先调用UF_initialize()来获得执行许可权限。一般来说,第一个调用的UG/openAPI函数就是UF_initialize()。当不再调用API函数的时候,必须调用UF_terminate()来释放执行许可权限。UF_initialize()函数的调用应该紧跟程序中的变量声明部分,而intUF_terminate()则应在程序最后才被调用,对于外部UF和内部UF都是如此,这说明外部UF的运行虽然脱离UG,但仍离不开API执行许可权限的支持。©UGSC.2007.Allrightsreserved.用户入口©UGSC.2007.Allrightsreserved.36用户入口UserExit是UG/OpenAPI中的一个重要概念。UG在运行过程中某些特定的地点存在着规定的入口,当进程执行到这些入口时,UG会