本帖最后由 UGSNX@CAM张 于 2012-9-30 00:25 编辑
第1章 二次开发应用初步 UG/NX是当今世界上最先进和高度集成的、面向制造行业的CAD/CAE/CAM软件系统,可用于产品的整个开发过程,包括产品概念设计、建模、分析和加工。UG/NX以其强大的设计和加工功能而著称,可以支持目前市场上销售的不同厂家的所有工作站及微机平台,广泛应用于通用机械、模具、汽车及航空航天领域,被很多世界著名公司选定为企业计算机辅助设计、分析、制造的标准。 从20世纪60年代起UG就一直代表着工程制造业CAD/CAM软件产品的最高水平。20世纪90年代,UG进入中国市场,受到广大CAD/CAM用户的欢迎。UG在中国的用户已超过1000多家,装机量达到350 多套。这是因为UG是一个集成化、全面、一体的软件,它包括设计、加工、分析和最流行的产品数据管理(PDM),给企业提供了一个全面的解决方案。 1.1 CAD软件的二次开发 随着CAD应用领域的不断扩大和应用水平的不断提高,用户需求与CAD系统规模之间的矛盾日益增加,没有一个CAD系统能够完全满足用户的各种需求。作为商品化的CAD软件产品,是否拥有一个开放的体系结构,是衡量该软件的优劣性、适用性和生命力的重要标志,而是否拥有一个开发简便、运行高效的二次开发平台又是开放式体系结构的核心和关键。目前,主流的CAD软件都具有用户定制功能并提供二次开发工具。 通过CAD软件的二次开发工具可以把商品化、通用化的CAD系统用户化、本地化、即以CAD系统为基础平台,在软件开发商所提供的开发环境与编程接口基础之上,根据自身的技术需要研制开发符合相关标准和适合企业实际应用的用户化、专业化、知识化、集成化软件,以进一步提高产品研发的效率。在通用CAD基础上融入专业知识构建专用CAD系统是当前深化CAD应用的潮流。 把用户的设计思想转化为特定的新功能需要以下基本要素,这些基本要素构成了CAD软件二次开发平台的基本结构: (1)通用CAD软件——管理层。通用CAD软件是整个开发的基础,是二次开发应用程序的宿主。它应具有比较完备的基本功能,即使没有二次开发应用程序,它也能满足基本的使用需求。在二次开发平台结构中,通用CAD软件属于管理层,它所负责的工作主要包括用户界面定制、图形显示、文档数据管理、交互流程控制、消息分发和应用程序的管理等。 (2)编程开发环境——开发层。开发者采用某种计算机高级语言(如C、C++等)在特定的开发环境中进行应用程序的开发。由于通用的集成开发环境(如VC++、VB和Delphi等)具有功能强大、使用简单、可靠性强和生成代码效率高等优点,目前一般都在通用的集成开发环境中进行二次开发。在二次开发平台结构中,编程开发环境属于开发层,它主要包括应用程序源代码的编辑、编译、链接、调试和代码优化等。 (3)应用程序编程接口(API)——支持层。编程开发环境仅提供了一般性的语言支持,在二次开发过程中,还需要提供相应的API支持。通过这些API接口,二次开发应用程序可以建立与原软件应用程序的链接,使新开发的功能和原有的功能无缝集成。在二次开发平台结构中,应用程序编程接口属于支持层,它是用户开发的应用程序与CAD软件之间进行链接、通信和互操作的通道。 (4)开发者的设计思想——知识层。一般来说,CAD软件开发商通过以上3个层的引入就为用户提供了二次开发的工具和方法。此外,二次开发应用系统还需要融入开发者的设计思想。开发者将其设计思想通过二次开发工具和方法,并结合原有的CAD系统功能,才能构成具有实用价值的应用程序。在二次开发平台结构中,用户设计思想属于知识层,它是开发者知识和能力的体现,是二次开发技术的应用和实践。 1.2 UG二次开发 UG二次开发是指在UG软件平台上,结合具体的应用需求,总结行业的设计知识和经验,开发面向行业和设计流程的CAD系统。UG/Open是一个通过开放性架构促使不同的应用程序同UG实现柔性集成的开发工具包,其目的是使集成的应用程序,包括UG自身提供或第三方开发的应用程序能够在不同软硬件平台、不同网络或Internet的计算机上实现数据共享。利用UG/Open提供的应用程序和开发工具,能够提高用户的工作效率和满足用户的具体要求。 1.2.1 UG二次开发工具 UG/Open提供的二次开发工具主要包括:UG/Open API(应用程序接口),UG/Open GRIP(图形交互程序),UG/Open UIStyle(用户界面制作工具),UG/Open MenuScript(界面菜单编制语言)。 UG/Open MenuScript开发工具,对UG软件作界面进行用户化开发,无须编程即可对UG主菜单和快速弹出式菜单进行添加、重组、剪裁或在UG软件中集成用户GRIP、API二次开发程序、UserTools文件及操作系统命令等。 UG/Open UIStyle开发工具是一个可视化编辑器,生成的对话框能与UG集成,让用户更方便、更高效地与UG进行交互操作。利用这个工具可以避免复杂的图形用户接口GUI的编程,直接将对话框中的基本控件组合生成功能不同的对话框。 UG/Open GRIP是在UG/Open API工具发布之前UG的主要二次开发工具。GRIP是一种专用的图形交互编程语言,它与UG系统集成,可以实现UG环境中的大部分应用操作。GRIP语言与一般的通用语言一样,有完整的规则、程序结构、内部函数,以及与其他通用语言程序的相互调用等。GRIP在加工方面提供了大量的函数,具有很高的NC编程效率,利用该工具用户可生成NC自动化或自动建模等用户的特殊应用。GRIP的功能不如UG/Open API强大,它主要常被用来开发一些规模较小的程序,完成某些专业上需要的特定的功能。 UG/Open API也称User Function(用户函数,以下简称UF),是UG软件提供的一个高级二次开发编程语言工具集,支持最全面、最复杂层次的编程,支持C、C++、VB、.NET和Java等主要高级语言。通过UG/Open API的编程,用户可以建立、编辑、查询并修改UG的各种实体对象(包括part文件、点、线、面、实体、特征、坐标系、表达式等),建立并遍历装配体,创建工程图,处理用户和UG界面的交互,控制UG的运行等,它提供了比UG/Open GRIP更多的对UG及其模块进行操作的功能,包括建模、装配、有限元分析、机构运动分析、制造、饭金等。几乎所有能在UG界面上的操作都可以调用相应的UG/Open API函数来实现,从而实现用户化的需要。 1.2.2二次开发工具之间的相互关系 UG软件为用户提供的二次开发工具不但可以独立使用,而且可以相互调用其它工具开发的结果,这就大大扩展了工具本身所具有的功能,方便用户进行二次开发。它们之间的关系如图1-1所示:MenuScript和UIStyler开发的对话框均可以调用GRIP程序和API程序。GRIP程序和API程序之间也可以相互调用。 图1-1 二次开发工具关系图 1.2.3 UG二次开发应用范围 UG二次开发主要应用有以下几个方面。 1、用户化定制CAD环境 用户化定制CAD环境主要包括:提供用户化CAD规范;提供用户化标准件库;定制用户化CAD界面等。 2、开发在UG软件平台上的用户专用软件。 UG软件平台上的用户专用软件主要指UG软件没有提供的及功能不能满足用户要求的一些用户专用软件,例如CAPP软件、DFA软件、DFM软件、CAD/CAE接口软件等。 3、开发UG软件与其他CAD软件的接口 使用不同软件(UGII、CATIA、ProE、solid Work、AutoCAD等)所建的3D模型/2D图纸都使用各自的数据结构,有时需要把它们的数据进行相互交换。这时有必要开发它们之间的接口。 1.2.4 UG二次开发流程 UG系统提供了功能强大的复合建模功能,例如实体造型、曲面造型、特征造型等,同时也提供了强大的二次开发工具包与特征扩展功能。利用这些工具可对UG系统进行用户化剪裁与开发,满足用户的特定需求。根据前面对UG/open开发工具包的研究与探讨,给出产品CAD系统的总体开发流程,如图2-16所示。
图2-16 UG二次开发流程 1.3 第一个实例 为便于用户了解UG/Open API的使用,下面将创建一个简单的应用开发程序,其功能是在UG环境中显示一个消息对话框“Hello,UG!”。运行平台为Windows XP,开发平台为Visual Studio.Net和UG/NX4,运行结果如图1-2所示。 1.3.1 创建VC++ 项目 Note:如果先安装Visual Studio.Net,后安装UG,则在Visual Studio.Net新建工程选项里会自动添加UG/OPEN AppWizard;否则,如果先安装UG,再安装Visual Studio.Net则需手动将“\wnti32\kits\ugopen\vs_files\VC\vcprojects、\VCWizards”下的内容拷贝到Visual Studio.Net“\Microsoft Visual Studio .NET 2003\Vc7”的相应目录下,此时在Visual Studio.Net的IDE中添加UG开发向导。 利用UG/Open AppWizard向导创建工程项目,该向导是UG软件本身提供的应用向导,不支持MFC,常应用于辅助工具的开发。下面将在Visual Studio.Net和UG/NX3开发平台上利用UG/Open AppWizard向导创建工程项目。 运行Visual Studio.Net,新建一个项目,如图2-1所示。选择对话框中的Templates中的NX3 Open Wizard向导创建UG应用工程,在Name文本框中输入工程名称“First Project”,在Location文本框中输入工程路径,然后单击OK按钮确定,NX3 Open Wizard(Overview)对话框,如图2-2所示。对话框将提示当前项目的默认设置,如果用户接受当前默认设置,可以直接单击Finish按钮确定,此时向导将按默认设置创建工程项目。如果不接受当前默认设置,用户可以通过NX3 Open Wizard(Application Settings)对话框和NX3 Open Wizard(Entry Points)对话框来进行修改,两个对话框分别如图2-3和图2-4所示。NX3 Open Wizard(Application Settings)对话框可以让用户选择工程项目的运行模式和编程语言,NX3 Open Wizard(Entry Points)对话框可以让用户选择程序入口方式及卸载方式,最后单击Finish按钮确定。 图2-1 新建项目对话框 图2-2 NX3 Open Wizard(Overview) 图2-3 NX3 Open Wizard(Application Settings) 图2-4 NX3 Open Wizard(Entry Points) 1.3.2 建立程序 此时用户可以在生成的工程模板中添加代码,在Visual Studio.Net集成开发环境中,打开hello.cpp文件代码窗口,输入代码并保存。输入代码如下: #include <uf.h> /* 包含UF_initialize()和UF_terminate()函数原型的头文件*/ #include <uf_ui.h> /* 包含uc1601()函数原型的头文件*/
extern void ufusr( char *param, int *retcod, int param_len ) { /* 获取UG/OPEN API的执行权限 */ if(UF_initialize()!=0) return; /* 弹出消息窗口,显示“Hello,UG!” */ uc1601("Hello,UG!",1); /* 释放UG/OPEN API的执行权限*/ UF_terminate(); } 1.3.3 编译链接项目 点击主菜单“生成→生成First Project”,如图1-13,对项目First Project编译、链接,生成.dll文件(文件位置在项目属性的“链接器→常规→输出文件”中设置)。 图1-13 编译链接项目 1.3.4 调试程序 方法一:在程序编译之后,首先在程序中设置断点,点击主菜单“调试→启动”,如图1-14所示,启动NX系统。在NX系统中激活.dll程序,程序进入调试状态,F11是逐语句调试,F10是逐过程调试(注意,在调试程序之前,一定对项目属性的调试进行设置,参见图1-8)。 图1-14 调试程序 方法二:在程序编译、代码中设置断点后,启动UG NX4;回到Visual Studio.Net 集成开发环境,点击主菜单“工具→调试进程”,系统打开“进程”对话框,如图1-15所示,双击“可用进程”列表中“ugraf.exe”,系统打开“附加进程”对话框,如图1-16所示,选择要调试程序类型为“Native”,单击“确定”按钮,系统进入程序调试状态,按“F11”或“F10”进行逐语句或逐过程调试。 图1-15 图1-16 1.3.5 运行应用程序 在UG界面中选择菜单File→Execute→NX Open,在系统弹出的一个文件选择对话框中选择应用程序“Hello UG.dll”。如图1-17、图1-18所示。 图1-17 图1-18 图1-19 |