基于UG NX二次开发的自动装配技术研究

2017-01-17 08:01陶小刚
成组技术与生产现代化 2016年4期
关键词:刀柄二次开发事例

陶小刚,郝 博

(1.沈阳理工大学 机械工程学院,辽宁 沈阳 110159;2.辽宁机电职业技术学院,辽宁 丹东 118009)

基于UG NX二次开发的自动装配技术研究

陶小刚1,郝 博2

(1.沈阳理工大学 机械工程学院,辽宁 沈阳 110159;2.辽宁机电职业技术学院,辽宁 丹东 118009)

以Visual Studio 2010 C++为集成开发环境,以UG/Open API为开发接口,对UG的二次开发进行深入探究,并以UG NX的开发界面为支撑,对旋转刀柄架进行自动装配.通过该装配实例对UG自动装配的关键技术进行详细论述.实例验证表明,利用UG实现自动装配,可以避免虚拟手动装配造成的繁琐,缩短产品研发周期,降低成本,提高装配效率.

Visual Studio 2010;UG/Open API;二次开发;自动装配

Unigraphics(简称UG)是Siemens PLM Software公司最新推出面向制造业的CAD/CAE/CAM一体化高端软件.它集成的二维工程图创建、三维实体造型、参数化建模、装配建模、数控加工、模具设计、运动模拟仿真和动力学分析等技术,在航空、航天、汽车、船舶、模具、医疗等领域被广泛应用[1-3].

UG NX系统配置了UG/Open API开发接口,世界上大部分有开发功能的应用程序都可以和UG NX密切融合.本文拟结合Visual Studio 2010 ,对UG进行二次开发,并通过实例验证一键虚拟装配,创建快速、简洁的操作环境,实现从零件到装配体的自动装配过程.

1 UG NX二次开发工具及程序模式

1.1 UG NX二次开发工具

UG NX的二次开发工具主要有以下4种:①UG/Open Menuscript,用于菜单的修改、编辑、删除、创建和重置;②UG/Open UIStyler,是一种定制UG风格对话框的可视化编辑器;③UG/Open GRIP,是一种专门解释UG系统与外部连接的图形交互式编程语言;④UG/Open API,是UG与外部应用程序的接口.针对不同开发环境,各种UG NX二次开发工具各有特点.本文主要介绍 UG/Open API.

UG/Open API又称User Function,它包含开发模式、语法、表达式,支持C、C++、VB、.NET、Java等主要的高级语言[4].

1.2 UG NX二次开发的程序模式

根据程序所要求运行的环境,UG/Open API开发程序可分为外部和内部两种程序模式.

1.2.1 外部(External)程序模式

首先通过UG三维软件建立PAR格式文件,然后通过API函数在外部编写具有操作功能的程序,最后结合PRT文件和外部程序运行函数,实现UG NX开发的结果.

在外部程序模式下,UG/Open API只能在UG环境外运行,不能在UG的环境中作为UG的子程序运行.它作为操作系统的子程序,运行和调用相当灵活,但不能与UG图形进行交互,所以其应用范围相当狭窄.

1.2.2 内部(Inernal)程序模式

所谓内部程序模式,就是通过UG界面调用开发程序,实现特定功能.这种功能的实现大体上有两种形式:一种是全函数编写,生成可执行的动态链接;另一种是结合部分UG自动功能模块和开发函数,生成可执行的动态链接.比较而言,通过后者,可以更简洁有效、目标性更强地实现开发功能.

在内部程序模式下,UG/Open API只能在UG环境内运行.该模式下编译链接生成的DLL文件,程序代码小,运行速度快,运行的结果在UG界面窗口中可见.其入口函数主要是ufsta(启动时的User Exit)和ufusr(直接激活的User Exit),可以与用户进行交互,实现与UG的无缝集成[5].

UG内部程序模式的通用性比较强.结合这一优点,本文采用内部程序模式,通过VS2010中C++编译环境编译链接,生成动态链接库DLL文件,然后执行NX系统的NX Open程序来运行动态链接库文件,实现零件的自动装配.

2 UG系统装配模块的装配树

UG装配过程是以树形结构对机械中各组件和部件进行一定约束的虚拟装配.根据UG系统的装配模块设计准则,在执行装配的过程中,有且只有一个部件相对于原点绝对静止,即装配模块中只含有一个装配树根.显然,装配树根的选取对装配过程有至关重要的作用.图1所示为某小车的装配树简图.通过该简图,很容易得出装配树三要素,即部件事例、部件原型与部件实例[6].

(1)部件事例(Part Occurrence).类似图1中4个车轮Ins_1、Ins_2、Ins_3、Ins_4,两个车轮轴occ_5、occ_6和车底座occ_7,部件事例是客观存在的具体部件模型;同时,可以理解为,图中的虚线箭头表示同类型部件对其部件基本模型的一种引用关系.因此,当装配过程需多次引用时,只需建立部件原型所对应的事例库即可.在装配环境中,不同的部件事例表示部件被装配在装配体的不同位置.因此,为了区分各部分的部件事例,在编写可执行程序时,必须赋予部件事例确定、唯一的标识.

(2)部件原型(Part Prototype).类似于图1中轮pro_1、车轮轴pro_2和车底座pro_3,部件原型可以认为是同类型部件的基本部件模型,是同类型部件中最基本元素的集合。它记录了模型所需的所有数据,同样也是客观存在的具体部件模型.一个装配过程多次引用某一部件原型,则会产生不同的部件事例效应,但是这些效应最基本的来源还是部件原型.

(3)部件实例(Part Instance).部件实例是指在装配环境中,为实现装配各组件确定的相对位置,对装配组件施加的一种虚拟装配关系.它也表示两部件在装配过程中唯一的装配加载关系.类似图1中的实线箭头,要完成车轮与车轮轴的固定安装,需要在车轮轴的径向对车轮施加一定约束;要完成车轮轴与车底座的固定安装,同样需要在车轮轴的径向对车底座施加一定约束.这个过程就是部件实例.

图1 小车的装配树简图

3 自动装配的实现过程

运用3DCAD实现装配主要是通过手动添加零部件,通过特征约束实现零部件的手动装配.它虽然可提高虚拟装配水平,但是仍需要人为识别装配特征.本文通过UG二次开发技术对装配零部件特征进行函数标识,实现零部件的自动装配.

在UG二次开发中,自动装配过程包括主动组件的加载过程、组件事例标识的获取过程、约束对象标识的获取过程和装配约束关系的建立过程[7].

3.1 主动组件的加载过程

通过调用UF_ASSEM_add_part_to_assembly函数可实现组件的加载过程.在加载过程中,需要确定零部件的位置和方位,从而更精确地安装到工作部件上,实现装配零部件与工作部件的装配顺序加载关系.用于获取主动组件加载的代码如下:

/*主动组件的加载*/

double adOrigin[3] = {0,0,0};

/*部件在装配中的坐标原点重定位*/

double adCsysMatrix[6] = {1,0,0,1,0,0};

/*部件在装配中的坐标系重定位*/

tag_t tInsPartFrom;

UF_PART_load_status_t load_status;

UF_ASSEM_add_part_to_assembly(tPrtWorkpart,sPartName,sRefsetsName,

sInstanceName,adOrigin,adCsyMatrix,i

LayerNum,&tInsPartFrom,&load_status );

uc1601(“加载组件成功”,1);

/*终止开发环境*/

在程序编写过程中,识别和定义零部件需要添加的标识符如下:PrtWorkpart为工作部件标识;sPartName 为加载部件文件名;sInstanceName为加载部件的组件名;tInsPartFrom为返回加载部件的实例标识.

3.2 组件事例标识的获取过程

(1)主动组件事例标识获取:UF_ASSEM_ask_part_occ_of_inst函数直接获取.

(2)从动组件事例标识获取:①确定从动组件的部件标识;②获取从动组件的所有事例标识;③对事例标识对应的组件名与从动组件名进行匹配识别说明,确定从动组件的事例标识.

对于组件事例标识的获取过程,同一装配过程的部件名和组件名只能有一个相同.

3.3 约束对象标识的获取过程

用于建立装配约束关系的对象标识的获取步骤为:①使用UF_ASSEM_set_work_part函数,将对象所在的部件设置为工作部件;②利用UF_OBJ_cycle_by_name获取对象的标识.

这里,同一种部件只有唯一确定的对象名.

3.4 装配约束关系的建立过程

装配中各部件之间要实现绝对静止或者相对运动的配合,就必须建立装配约束关系.装配约束是指实现两部件在空间中唯一确定的位置关系需要对部件位置和方位的控制.在装配时,各个配合关系的约束之间不能存在约束干涉,否则会产生装配偏移或安装缺失,即在UG装配界面表现为红色约束干涉.

NX提供的装配配对约束关系包括贴合(Mate)、对齐(Align)、角度(Angle)、中心(Center)、距离(Distance)、平行(Parallel)、垂直(Perpendicular)和相切(Tangent)等.

(1)定义装配约束条件:填写结构UF_ASSEM_constraint_s中的内容.

(2)求解约束:使用函数UF_ASSEM_solve_mc求解配合关系,并返回相应参数.其语法格式如下:

/*约束求解数据*/

UF_ASSEM_mating_condition_p_t mc_data;/* 输入参数,定义配合关系结构*/

UF_ASSEM_mc_status_t* status; /* 输出参数,表示求解结果*/

UF_ASSEM_dof_p_t dof;/*输出参数,表示如果求解成功,那么该参数代表部件自由度的数量*/

double transform[4][4];/*输出参数,表示完成装配约束时部件的变换矩阵*/

......

/*装配环境下*/

......

UF_CALL(UF_ASSEM_solve_mc( &mc_data,&status,&dof,&transform )).

(3)将约束应用于装配体:使用函数为UF_ASSEM_apple_mc_data.

(4)更新模型:使用函数UF_MODL_updata,反映更新后模型的变化.

装配配合关系和配合约束所涉及的其他函数及功能如表1所示.

表1 装配配合关系和配合约束所涉及的其他函数及功能

4 旋转刀柄架自动装配实例

旋转刀柄架由旋转板、刀柄定位板、销钉、刀柄杆、垫圈和压紧螺钉等部件组成.采用UG二次开发中参数化建模获取方法创建这些部件后,一键自动装配成旋转刀柄架.

4.1 项目文件夹创建和系统环境变量设置

4.1.1 项目文件夹创建

在D盘文件夹Assembly下分别创建application和startup两个子文件夹.其中,一个子文件夹用于存放对话框文件和编译链接后生成的动态链接库文件,以及工具条和对话框的位图图标;另一个子文件夹用于存放菜单和工具条文件.

4.1.2 系统环境变量设置

设置1:“UGII_VENDOR_DIR = D:Assembly”;UG NX系统在启动后自动执行菜单文件和工具条文件.

设置2:“UGII_BITMAP_PATH = D:Assemblyapplication”;UG NX系统能够找到相应的位图文件.

4.2 菜单和工具条设计

利用记事本编写菜单和工具条代码,创建菜单名caidan.men,创建工具条名gongjutiao.tbr;利用UG/Open MenuScript语言建立用户菜单和工具条.

4.2.1 菜单文件caidan.men的具体代码

VERSION 120 /*菜单脚本号120*/

EDIT UG_GATEWAY_MAIN_MENUBAR /*编辑UG主菜单*/

BEFORE UG_HELP /*在HELP菜单前设置新菜单*/

CASCADE_BUTTON CUSTOM_MYMENU /*层顶菜单项定义第一级菜单ID*/

LABEL 装配实例 /*菜单项名称*/

END_OF_BEFORE /*结束第一级菜单编辑*/

MENU CUSTOM_MYMENU /*编辑第二级菜单*/

BUTTON MAKE_XZDBJ /*定义第二级菜单ID*/

LABEL 创建旋转刀柄架 /*菜单项名称*/

BITMAP makexzdbj.bmp /*第二级菜单位图地址*/

ACTIONS makexzdbj.dlg /*指定菜单响应行为*/

END_OF_MENU /*编辑菜单完成*/

4.2.2 工具条文件gongjutiao.tbr的具体代码

TITLE 装配实例 /*工具条的标题*/

VERSION 170 /*工具条脚本号170*/

BUTTON MAKE_QG /*定义的工具条ID*/

LABEL 创建旋转刀柄架 /*工具条名称*/

BITMAP makexzdbj.bmp /*工具条位图地址*/

新建文件完成后,将文件保存到startup文件夹中,启动UG ,新建一个部件.此时,界面中出现一个新“装配实例”的菜单项并伴有下拉菜单项“创建旋转刀柄架”,同时UG界面出现“创建旋转刀柄架”的工具条(图2).

图2 菜单和工具条创建

4.3 对话框创建过程

启动UG,新建部件模型,点击【开始】,进入UG/Open UIStyler界面,利用各种对话框控件制作“创建旋转刀柄架”对话框.该对话框定义5个回调函数,即【取消】按钮回调函数cancel_cb_pressed、【确定】按钮回调函数ok_cb_pressed、【返回】按钮回调函数back_cb、【浏览】按钮回调函数action_browse_act_cb和【创建】按钮回调函数action_create_act_cb.创建完成后,保存文件,语言选择为“C”,将自动生成的makexzdbj.dlg、makexzdbj.h和makexzdbj_template.c文件(其中makexzdbj.dlg为资源文件)保存到application文件夹中.对话框的创建过程如图3所示.

4.4 自动装配图的生成

装配过程中首先获取UG NX的许可,生成每个部件,依次加载到主动组件上.在加载过程中,需要对装配约束进行判断求解,求解成功后进行主动组件的加载操作,创建所需的装配图.旋转刀柄架安装系统流程如图4所示.

通过编写程序代码,浏览创建生成文件,生成旋转刀柄架自动装配图(图5).

图3 对话框的创建过程

图4 旋转刀柄架安装系统流程

图5 旋转刀柄架自动装配图

5 结束语

利用Visual Studio 2010 C++开发环境对UG NX进行二次开发,通过装配实例直观、准确地反映各部件形状及其装配关系,验证了该自动装配技术的可行性.装配组件通过建立参数化设计模型来创建,方便了各部件的系统储存,缩小了内存占用空间.通过自动装配技术的研究,传统手动虚拟装配会被替代,自动装配技术将在机械行业广泛应用.

[1] 刘红军,李 帅,周 鸣.基于UG的PCB电路板自动装配技术的开发[J].制造业自动化,2011,33(19):24-26.

[2] 王晓英,李 森.基于UG NX的模具三维建模与装配技术[J].制造技术与机床,2007(3):78-81.

[3] 刘路路,郝 博.基于三维模型的参数化设计技术[J].成组技术与生产现代化,2011,28(3):20-23.

[4] 李书平,侯振林.基于UG二次开发的齿轮参数化精确建模方法研究[J].机械设计与制造,2011,49(9):190-192.

[5] 黄 勇.UG/Open API、MFC和COM开发实例精解[M].北京:国防工业出版社,2009:2-3.

[6] 芮岳峰,井维峰.基于UG自动化虚拟装配系统的研究与开发[J].机械制造与自动化,2007,36(5):18-20.

[7] 周临震,李青祝,秦 珂.基于UG NX系统的二次开发[M].南京:江苏大学出版社,2012:184-187.

Research on Automatic Assembly Technology Based on UG NX Secondary Development

TAO Xiao-gang1,HAO Bo2

(1.School of Mechanical Engineering, Shenyang Ligong University,Shengyang 110159,China;2.Liaoning Jidian Polytechnic,Dandong 118009,China)

Take Visual Studio 2010 C++as integrated development environment and UG / open API as the development interface program, this paper explored the secondary development of UG, and automated the assembly of the rotation of the shank frame by the support of the UG NX development interface. Furthermore, this paper also discussed the key techniques in the automatic assembly of UG through the assembly case carried out above. By the verification of the case, it proved that using UG automatic assembly, the tedious manual work of virtual assembly can be avoided, the product development cycle can be shortened, the cost can be reduced and thus the efficiency of assembly can be improved.

Visual Studio 2010; UG/open API; secondary development; automatic assembly

2016-08-30

国家自然科学基金资助项目(61672360)

陶小刚(1993-),男,安徽芜湖人,硕士研究生,研究方向为数字化、网络化设计与制造技术.

1006-3269(2016)04-0024-06

TP391.7

A

10.3969/j.issn.1006-3269.2016.04.006

猜你喜欢
刀柄二次开发事例
传神写照,意味深长——写人要关注具体事例和细节
作文想好,“事例”不能少
浅谈基于Revit平台的二次开发
浅谈Mastercam后处理器的二次开发
维根斯:德国KEMMLER系列刀柄、配件
西门子Easy Screen对倒棱机床界面二次开发
基于IGBT的刀柄热装装置的设计与实现
中国十大宪法事例(2017)
ANSYS Workbench二次开发在汽车稳定杆CAE分析中的应用
Capto C5刀柄关键尺寸的确定