NX二次开发应用.docx
- 文档编号:30119961
- 上传时间:2023-08-05
- 格式:DOCX
- 页数:13
- 大小:733.43KB
NX二次开发应用.docx
《NX二次开发应用.docx》由会员分享,可在线阅读,更多相关《NX二次开发应用.docx(13页珍藏版)》请在冰豆网上搜索。
NX二次开发应用
NX二次开发应用
一、NXAPI简介
NX是一款功能强大的CAD/CAM/CAE软件,它不仅可以通过UI操作来控制各种功能,还提供了多种应用程序开发包(API)对NX内部对象进行访问。
在这些API基础上,用户可以开发各种自动程序,定制NX功能,甚至可以在现有NX功能之上二次开发新的CAD/CAM/CAE软件产品。
1.NXAPI具有如下特点:
(1)支持多种开发语言:
C,C++,Java,.Net,Python。
(2)支持多种操作系统平台:
Windows,Linux,Unix。
(3)超过90%的NX功能覆盖率。
2.NXAPI架构与统一对象模型
NX内部采用统一对象模型来描述NX内部任一对象及其操作。
NXUI操作和NXAPI都是构建于NX统一对象模型之上,以确保NXAPI与从UI操作访问的是统一的NX内部对象模型。
基于不同语言的NXAPI都是由同一个NX内部对象转化而来,无论用户采用哪一种语言的API其最终调用的是同一个内核函数,从而真正实现了平台无关性和开发语言无关性。
3.现有NXAPI
自1976年,UG(NX的前身)提供了第一个APIGRIP起,NX陆续了提供了UGOpen(1997年),KF(2000年),NXOpen(2004年)等多种API。
(1)GRIP(GraphicsInteractive):
一种类似LISP的简单交互式图形编程语言。
GRIP程序以其运行效率高、简单易学和不长驻内存的特点深受工程人员的喜爱,但其可实现NX的功能比较少,有一定的局限性。
一般适用企业简单的二次开发。
(2)UGOpen(也被称为UFUN):
一种基于C的NX二次开发API,包括3000多个C函数,其功能强大的特点适合企业或第三方软件公司进行系统、高级的开发。
由于它是直接在NX的内部代码的基础上建立的,所以可实现大部分NX的功能,但它需要有C语言和软件工程等技术的支持,相对比较难学。
(3)KF(KnowledgeFusion):
一种应用于知识熔接技术的由求解需求驱动的解释性面向对象的语言,是基于知识工程的智能化的NX二次开发API,其灵活、易学、可以知识驱动的特点适合企业或第三方软件公司进行专家系统的开发。
但是目前它的功能不是很全,所以往往和UGOpen和NXOpen结合起来进行开发。
(4)NXOpen:
一种完全基于面向对象的新一代NX二次开发API。
它支持多种开发语言与多种操作系统平台,覆盖了NX绝大部分功能。
可从Journal功能直接录制NX的操作生成代码,开发更为简单,适合工程人员进行简单快速的开发,也适合企业和第三方软件公司进行高级复制的功能定制。
4.NXAPI比较
用户在进行NX二次开发时需要了解各API的特点,结合项目开发的需求,选用适合的API进行开发。
以下在对不同NXAPI就易用性,主流性和可扩展性方面进行了较为客观的比较:
o易用性:
开发语言是否清楚,直观,并有较好的帮助文档与代码例程。
o主流性:
是否支持主流的开发语言与主流的IDE(集成开发环境)。
o可扩展性:
代码是否容易移植到新的NXAPI。
o发布的NX版本:
要开发的NX版本应该高于NXAPI的发布版本。
二、NX开发环境设置
1.基本环境变量
环境变量在NX的运行过程中有着重要的应用,一些环境变量在安装NX之后便已经设置。
其中最常用的基本环境变量包括:
UGII_BASE_DIRNX 安装的文件夹路径
UGII_ROOT_DIRNX 安装文件夹中UGII的位置
UGS_LICENSE_SERVER 28000@######
UGII_LANG ENGLISH
其它常用的环境变量在ugii_env_ug.dat文件中定制,该文件默认位于$UGII_ROOT_DIR目录下,不建议用户修改。
用户可以修改同目录下的ugii_env.dat文件,添加一些环境变量覆盖已有的环境变量以控制NX的运行方式,该文件可以通过环境变量UGII_ENV_FILE进行设定。
2.用户环境变量
NX用户通常应用环境变量指向一个根目录来配置开发的应用程序。
常用的环境变量包含以下两个:
UGII_USER_DIR:
用户二次开发程序根目录的完整路径。
该环境变量在NX安装之后处于未定义状态,定义之后,NXOpen就可以从这些目录得到二次功能扩充。
该环境变量主要应用于单个应用程序的开发过程中。
UGII_CUSTOM_DIRECTORY_FILE:
指向一个包含所有用户二次开发程序根目录完整路径。
该环境变量在NX安装后默认指向$UGII_ROOT_DIR\menus\custom_dirs.dat文件。
用户可以修改该文件,在文件中添加任意多个NX二次开发程序根目录路径,以便用户对二次开发程序进行系统的管理和配置。
二次开发应用程序的发布推荐使用该方法,尤其适用于企业级客户多系统开发的应用。
通过拷贝文件可以方便的实现多NX用户配置以及以后的NX版本升级维护。
3.应用程序运行目录
通过环境变量设置的用户二次开发程序根目录,即通常所说的应用程序运行目录。
NX在运行过程中将遍历这些根目录的子目录,加载其中定义的客制化菜单、工具条、对话框、二次开发应用程序以及UDO用户自定义库。
该根目录包含的子目录如下图所示:
每个子文件夹的功能如下表所示:
4.运行模式
(1)远程运行模式
远程运行模式允许用户在一个独立的NX环境进程中执行应用程序。
该NX环境可以是运行在本机上的也可以是连接到另一台机器上的进程。
由于远程运行模式的实现过程基于.NET或者Java架构所提供的服务,因此,该模式不支持C++版本的NXOpenAPI。
5.卸载方式
NXOpenAPI为用户提供了一个入口函数(GetUnloadOption),NX自动获得该入口返回参数来控制应用程序的卸载方式。
提供的卸载方式包括:
GetUnloadOption代码格式:
应用C++语言开发NXOpen时,其卸载方式入口函数定义为:
externintufusr_ask_unload(void)
{
//return(int)Session:
:
LibraryUnloadOptionExplicitly;//显示卸载方式
//return(int)Session:
:
LibraryUnloadOptionImmediately;//立即卸载方式
return(int)Session:
:
LibraryUnloadOptionAtTermination;//NX终止卸载方式
}
在某些情况下,如应用NXOpenC++向导生成工程时,其卸载方式也可能定义为:
externintufusr_ask_unload(void)
{
//return(UF_UNLOAD_SEL_DIALOG);//显示卸载方式
//return(UF_UNLOAD_IMMEDIATELY);//立即卸载方式
return(UF_UNLOAD_UG_TERMINATE);//NX终止卸载方式
}
注意:
应用程序注册了部件或者UDO相关回调函数,必须使用NX终止卸载方式。
6.用户入口
(1)用户入口概念
用户入口(UserExit)是NXOpenAPI的一个重要概念,是NX在某些特定的位置预定义了一些特定功能的入口。
NX运行到这些入口时,将自动检测用户是否已定义了指向内部程序位置的环境。
若没有定义,则以NX默认的方式运行;若已定义,则从该处自动加载并运行用户开发的程序。
不同的用户入口具有不同的UserExit名称,用户应用程序以不同的UserExit作为入口点,就能决定应用程序在NX运行的特定阶段被激活并运行。
(2)函数定义格式
每个用户入口都有唯一的入口名称,以便用户在应用程序中调用。
在通常情况下,用户入口函数的参数和返回值都相同,其函数定义格式如下:
voidentry_point(char*param,int*retcod,intparam_len);其中,param是输入参数,param_len为参数param的长度,由NX系统处理;retcod为输出参数。
(3)用户入口函数实现方法如下:
在NXOpen帮助文档中查找符合应用程序加载需求的用户入口,在应用程序中添加该用户入口函数定义。
编写程序实现代码并编译生成动态链接库(DLL)文件。
在NXOpen帮助文档中找到用户入口函数对应的环境变量名称,添加新的环境变量“环境变量名=DLL全路径”。
运行NX到该特定入口时将自动加载并运行用户程序。
(4)常用用户入口介绍
NX提供的用户入口有很多,详细的可以参考NX帮助文档。
常用的用户入口如下表所示:
7.创建工程开发环境
向导创建过程:
(1)ProjectWizard是NX为用户提供的向导自动生成开发工程的工具,其VC++向导文件保存在%UGII_BASE_DIR%\ugopen\vs_files\VC目录下。
2)复制%UGII_BASE_DIR%\ugopen\vs_files\VC\vcprojects下面所有的文件到到%MSVS9%\VC\vcprojects。
3)复制%UGII_BASE_DIR%\ugopen\vs_files\VC\VCWizards下面所有的文件到%MSVS9%\VC\VCWizards。
4)运行VS2008,在VC++工程模板中选择NX7OpenWizard向导创建工程。
5)进入向导欢迎界面。
6)进入工程设置界面设置工程类型。
7)进入工程设置界面设置工程类型。
手动创建过程:
(1)运行VS2008,创建一个空的VC++工程。
(2)运行VS2008,创建一个空的VC++工程。
(3)运行VS2008,创建一个空的VC++工程。
(4)为工程添加一个空的文件,添加交互运行模式代码。
8.UFLicense
所有的UF程序在运行时都需要NX/OpenAPILicense的支持,因此程序必须正确地初始化以获得一个NX/OpenAPILicense,在终止时也要归还曾占用的License以供下次调用UF函数时使用,初始化和终止化的操作使用以下的函数:
intUF_initialize();/*UF初始化*/
intUF_terminate();/*UF终止化*/
UF_initialize()函数的调用应该紧跟程序中的变量声明部分,而UF_terminate()则应在程序最后才被调用,对于外部模式和内部模式都是如此,这说明外部模式的运行虽然脱离NXGateway,但仍离不开APILicense的支持。
三、NX二次开发应用案例
1.NX配合Moldflow应用的二次开发
在Moldflow中对复杂水路的建模很耗时间和精力,一不小心可能造成后续冷却分析失败,如何才能提高效率呢?
我们在NX软件中进行了相应的二次开发,自动抽取中心线,自动创建BAFFLE,自动计算水路长度,自动打断等,方便为后续MOLDFLOW做准备,从而节约时间,提高效率。
自动抽取中心线,自动创建Baffle 自动计算水路长度
具体功能如下:
(1)抽取单个面中心线
(2)抽取多个体的中心线
(3)从相交位置打断交叉线
(4)删除线段,输入值为要删除线段的最大长度
(5)生成baffle所需线段
2.NX在伟创力二次开发的成功应用
是世界500强之一的跨国企业。
公司以加工生产电路板为主,产品涉及数字电视机顶盒、笔记本电脑、打印机、通讯产品、医疗器械等;公司主要客户来自欧美、日本等。
在NX设计方面,如何才能提高效率,伟创力目前存在的问题点:
(1)手工对设计好的模具组件进行命名
(2)手工编制BOM表
(3)手工修改每个零组件的自定义属性
(4)手工测量每个组件的最大外形尺寸
针对以上的问题,我司进行了二次开发,解决了他们目前存在的问题,大大地提高了模具设计的质量和效率,降低了设计过程中出错的几率。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- NX 二次开发 应用
![提示](https://static.bdocx.com/images/bang_tan.gif)