□ 高 啸 □ 田锡天
西北工业大学 CAPP与制造工程软件研究所 西安 710072
UG(Unigraphics NX)是 Siemens PLM Software公司推出的当今世界上最先进的CAD/CAM/CAE高端软件平台之一,广泛应用于航空、航天、机械、汽车、船舶、模具和家用电器领域,不仅具有强大的实体造型、曲面造型、参数化造型、装配和工程图创建等功能,还提供了功能强大的二次开发工具UG/Open。用户或第三方可以使用该开发工具,开发出基于UG系统的应用程序,实现UG系统与人的无缝集成,从而满足用户的特殊需求[1][2]。
当今,对液压支架各个部件进行三维建模后的手工装配是非常繁杂的过程,不仅工作量大,且细微的疏忽会导致装配干涉的出现。操作者在使用三维软件进行装配操作的过程中,各个零部件的装配关系是确定的,且不同型号、不同规格的液压支架的装配位置与装配方法基本一致,可以将这部分知识继承整理,使计算机能够利用这部分知识进行自动装配。本文利用UG的二次开发工具UG/Open API对液压支架的三维模型进行自动装配,装配后能有效及时地发现错误,修改相关方案,达到预期效果,从而大大减少了模型装配时间,提高了工作效率。
液压支架主要由9部分组件装配而成,包括底座、前后连杆(各两根)、掩护梁、顶梁、立柱组(两根)以及平衡千斤顶。图1为液压支架的装配关系。
图1 液压支架装配关系
UG的装配是以树型结构来组织装配中的组件和零件,根据UG的定义,每一个装配体有且只有一棵装配树,即只能存在一个树根。显然装配树根对于遍历装配树中的零件是非常重要的,通常是遍历的起点。在图1中装配树的根是底座,底座上面连接着5个组件,即立柱组、左前连杆、右前连杆、左后连杆、右后连杆,本文称之为部件事例Occurrence,它是在装配环境下对实际存在的部件模型的一种引用,同时部件事例也可以理解为指向部件原型的指针。从图1中可以看出,底座与它上面连接的5个组件是通过装配约束连接的,本文称之为部件实例Instance,它是装配节点每个事件的标识,且是唯一的。在装配中,组件和其子组件之间的关系是利用Instance来描述的。另外每一个事例都有一个原型Prototype,它是真实存在的部件模型,记录了模型所需的所有数据。
本实例采用UG/Open API作为开发工具,它是UG软件中的一个重要模块,是UG的二次开发工具之一。作为UG与外部应用程序之间的接口,UG/Open API是一系列函数的集合,通过UG/Open API的编程,用户几乎能实现所有的UG功能,开发者可以通过C语言编程来调用这些函数,从而达到实现用户化的需要。
UG/Open API程序能在Internal和 External两种环境下运行。
Internal环境(也称Internal开发模式)下的程序只能在UG的界面环境下运行。在运行这些程序时,它们被加载到UG运行空间中(UG分配的内存)。
External环境(也称External开发模式)开发的程序能在操作系统下运行,不在UG环境中作为UG的子进程运行。通常External模式用于那些不需要图形界面的后台运行应用程序,如打印机或绘图仪输出[3]。
本文采用Internal模式,通过VC++6.0对其进行编译、连接,形成动态链接库文件(assem.dll)。从UG主菜单:文件→执行→NX Open来运行动态链接库文件,实现自动装配。
自动装配过程需要4步:组件的加载,组件事例标识的获取,约束对象标识的获取,装配约束关系的建立。
2.2.1 组件的加载
使用UF_ASSEM_add_part_to_assembly函数可将部件加载到装配体。本文使用这个函数将液压支架除底座外的8个主要部件(底座作为固定件手动载入)载入到装配体中。该函数的使用方法如下:
重复调用该程序段,载入效果如图2。
图2 组件的加载
2.2.2 组件事例标识的获取
主动组件的事例标识可以通过UF_ASSEM_ask_part_occ_of_inst函数直接获取。从动组件事例标识需要通过以下3步获取:①确定从动组件的部件标识;②获取从动组件的所有事例标识;③匹配事例标识对应的组件名与从动组件组件名,确定从动组件的事例标识。需要注意的是,在同一装配中,部件名、组件名不能相同。
2.2.3 约束对象标识的获取
约束对象标识的获取分为以下2步:①使用函数UF_ASSEM_set_work_part将对象所在部件设置为工作部件;②利用UF_OBJ_cycle_by_name获取对象标识。需要注意的是,在同一部件中,对象名不能相同。
2.2.4 装配约束关系的建立
装配约束是通过定义两个组件之间的约束条件来确定组件在装配体中的位置,建立组件间的装配约束需要以下4个步骤:①定义装配条件,即填充结构UF_ASSEM_constraint_s;②利用函数 UF_ASSEM_solve_mc求解配合关系,并返回相关信息,其参数描述见表1,语法格式如下:
表1 函数UF_ASSEM_solve_mc的参数描述
ExternintUF_ASSEM_solve_mc UF_ASSEM_mating_condition_p_tmc_data,UF_ASSEM_mc_status_t*status,UF_ASSEM_dof_p_t dof,double transform[4][4]);③利用函数UF_ASSEM_apply_mc_data将装配约束应用到装配体上;④使用函数UF_MODl_update更新模型,以反映模型变化,完成零件的空间重定位,图3为装配总图。
图3 装配总图
本文利用UG NX6.0进行二次开发,引入了UG/Open API函数,实现了液压支架组件的自动装配,各主要组件还可以通过参数化的方法改变产品尺寸的大小,有利于产品的系列化。该技术直观、方便、操作简单。在现实中可以大大提高工作效率,减少工作时间并且降低了错误率。
[1] 刘红军,李帅,周鸣.基于PCB电路板自动装配技术的开发[J].制造业自动化,2011,10(上):23-26.
[2] 芮岳峰,井维峰.基于UG自动化虚拟装配系统的研究与开发[J].机械制造与自动化,2007,36(5):18-20.
[3] 李福海,刘毅.二次开发UG实现飞机操纵系统零件参数化设计与虚拟装配自动化[J].机械科学与技术,2003,22(增刊):242-244.