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