您所在的位置:模具网 > 模具学院 > CAD/CAM/CAE > Ug

基于UG的自动化虚拟装配系统的研究与开发

发布:2007-10-14 7:05:27  来源:现代模具  编辑:海滨
关键字:
UG/OPEN API;虚拟装配;UG 二次开发;Visual C++6.0
摘 要:
对UG软件的二次开发工具UG/OPEN API和其虚拟装配的原理进行了深入研究。以Microsoft Visual C++6.0为集成环境,UG/OPEN API为开发接口程序,UG为CAD平台,开发具有自动装配功能的虚拟装配系统。还阐述了该系统的关键技术,并给出了落料模的自动装配实例。

Unigraphics是当今世界上紧密集成的、面向制造业的CAID/CAD/CAE/CAM高端主流软件,它广泛应用于航空航天、汽车、家电等领域。然而它是一款通用软件,对其进行适当的二次开发,使其在不同专业领域内发挥更大的效用,对减少产品开发时间,降低开发人员出错率,降低设计成本是非常有帮助的。当今,对于大型装配体进行手工装配是一件相当繁杂的事情。在某个系列的装配体中,大多数装配体的结构和其选取的零件结构都具有相似性,因此手工装配的方法必然会使设计人员将很多精力花费在重复装配上,从而降低了开发效率。利用UG提供的二次开发工具UG/OPEN API以程序来提取相似系列装配体零件的特征后,对其进行无人工干预的自动装配,会大大节省开发人员花在重复劳动上的精力,提高生产率。

1 UG/OPEN API相关技术

UG/OPEN是一系列UG开发工具的总称,是UG软件为用户或第三方开发人员提供的最主要的开发工具。UG/OPEN API(又称User Function)是一个允许程序访问并改变UG对象模型的程序集。UG/Open API封装了近2000个UG操作函数,可以方便地对UG的图形终端、文件管理系统和数据库进行操作,绝大多数的UG操作都可以用UG/OPEN API函数实现。UG/OPEN API能在两种不同的环境下运行。

1.1 内部(Internal)环境

Internal环境下的程序只能在UG的界面(Session)环境下运行,在运行时,它们被加载到UG的运行空间中(UG分配的内存)。该模式执行代码小,连接快;一旦被加载到内存,只能通过UG/OPEN API的卸载功能才能从UG的运行环境中卸载它;运行界面在图形窗口中可见;入口函数是ufusr或ufsta。Internal程序的一般格式如下:

void ufsta( char *param, int *returnCode, int rlen )

{ int errorCode = UF_initialize();

if ( 0 == errorCode )

    {/* TODO: Add your application code here */

/* Terminate the API environment */

        errorCode = UF_terminate();

    }

    /* Print out any error messages */

    PrintErrorMessage( errorCode );

}

1.2外部(External)环境

External模式开发的程序能在操作系统(Windows NT/2000/XP及UNIX)下运行,不在UG环境中作为UG的子进程运行。通常,External模式用于那些不需要图形界面的后台运行应用程序,如打印机或绘图仪输出。在调用访问UG格式数据的函数前必须要打开UG部件文件。External程序的一般格式为

#include

int main(int argc,char **argv)

{variable declarations

UF_initialize();

Body()

UF_terminate();

}

1.3 Internal环境下的执行方式

本系统运行于Internal环境模式下,其执行程序的方式为,在UG界面中选择菜单文件→NX Open或者使用快捷方式“Ctrl+U”键,系统将弹出一个对话框,选择应用程序即可。

2 UG虚拟装配原理

与产品的实际装配不同,UG的装配是一种虚拟装配。它并不将该模型的所有数据完整地复制过来,而只是建立装配模型与被引用部件之间的引用关系,即用指针在装配模型与被引用的每个零部件之间建立引用关系。虚拟装配技术减少数据冗余,使装配模型具有相关性。

UG装配以树型结构组织装配部件,一小车装配树,如图1所示。在装配树中,有三个重要的部件对象,它们分别是部件原型、部件事件、部件实例。

2.1 部件原型

部件原型(part prototype)是真实存在的部件模型,它记录了模型所需要的所有数据。如图1中车轮pro_1、车轴pro_2等。

2.2 部件事件

部件事件(part occurrence)是装配环境下对实际存在的部件模型的一种引用。如果需要一次或者多次装配一个部件,并不复制该部件原型,而是建立该部件原型对应的事件。当一个部件文件被多次装入时,将产生不同的部件事件。部件原型与部件事件之间是一对多的映射关系。部件事件随部件原型的改变而改变,而修改部件事件不会影响原型。图1中occ_1至occ_4都是对pro_1的引用,其原型都是pro_1。

2.3 部件实例

部件实例(instance)是用来记录子节点与其父节点之间的关联关系,从而形成各节点间的层次关系。在装配体中,部件与其子部件之间的装配关系是利用部件实例来描述的。如图1中(Axle)occ_5是occ_1和occ_2的父节点,子节点occ_1和occ_2通过实例Ins_1和Ins_2加入到其父节点(Axle)occ_5中。由于occ_1和occ_3原型相同,而其父节点不同,并且父节点的原型都为(Axle)pro_2,满足这三个条件的话,其实例也相同,故occ_1加入到父节点occ_5与occ_3加入到父节点occ_6的实例是相同的,以此类推。

3 自动化虚拟装配关键技术

UG中一个完整的装配过程分为部件装入和创建部件间配合关系这两部分。一般使用函数UF_ASSEM_add_part_to_assembly来实现部件的装入,当部件装入装配体以后,可以对它进行一系列编辑操作,如重定位、更名、移除等。

装配中各部件的配合关系是通过装配约束关系来实现的。装配部件有主动件和被动件之分。主动件(from)是指在约束求解过程中变换姿态到满足装配约束位置上的部件,被动件(to)是指在装配空间中位置固定的部件。配合关系的约束之间不能存在几何关系上的矛盾,配合关系也不能形成循环定义,否则求解将出错。配合关系的创建一般有四部分:

(1) 定义约束,即填充结构UF_ASSEM_constraints_s。

结构体UF_ASSEM_constraints_s有众多成员:from_status、to_status分别表示主动件和被动件的载入状态;mate_type表示配合类型,可以是相对、平行、同心等等;from_type、to_type分别表示主动件和被动件的特征类型;from、o表示主动件和被动件的原型标志,如果要使两个圆柱实体同心,那么原型标志为这两个圆柱实体的圆柱面。from_part_occ、to_part_occ表示主动件和被动件的事例标志等等。

(2) 利用函数UF_ASSEM_Solve_mc求解约束。

UF_ASSEM_Solve_mc求解约束后,有一输出参数status,用其表示求解结果。它的取值有3种,分别为UF_ASSEM_mc_solved-求解成功, UF_ASSEM_mc_not_solved-求解失败, UF_ASSEM_mc_no_mating_specified-输入约束不正确。利用输出函数将输出参数输出可以检查程序的求解状态。

(3) 利用函数UF_ASSEM_apply_mc_data应用约束于装配体上。

在求解成功后,必须使用函数UF_ASSEM_apply_mc_data来将约束应用于装配体,从而实现主动件的重定位。

(4) 利用函数UF_MODL_update更新模型,反映模型的变化。

4 运行实例

本文以某落料模的装配为例,用户通过执行User Function实现自动虚拟装配功能。系统首先加载部件到装配体,如图2右侧所示。加载部件函数UF_ASSEM_add_part_to_assembly有一个输出量是部件标志即Part_tag,应用函数UF_OBJ_cycle_objs_in_part将得到部件的对象标志,这是后续需要用到的变量类型。将得到的对象标志使用函数UF_MODL_ask_body_faces将实体的各个表面的标志取出,选取需要的表面做为创建约束时填充结构UF_ASSEM_constraints_s的原型标志。在约束关系创建好之后,系统使用函数UF_ASSEM_apply_mc_data进行自动求解,求解结果如图2左侧消息框所示,表示求解成功。

求解成功后,系统将使用函数UF_ASSEM_apply_mc_data来将约束应用于装配体,从而实现部件重定位,并利用函数UF_MODL_update更新模型,如图3所示。

此为整个落料模中装配环节中一部分,即导柱和导套的装配。整个落料模的自动虚拟装配,是在这个基础上重复以上过程,将部件逐个导入后,再进行配合关系的创建,部件的重定位,以及模型的更新。最终的装配,如图4所示。

5 结论

本文分析了自动虚拟装配技术在同型大型装配体中应用的可能性,阐述了UG二次开发技术,将虚拟装配原理中装配数的结构清晰地表达出来,并将自动虚拟装配技术应用到实际装配中,给出了运行实例。本系统运行速度快,界面形象直观。实践证明,在大型装配体装配中,它有效地避免了设计人员繁杂的重复劳动,缩短了设计周期,使装配时间大大减少,从而有效地减少了大型装配体的开发时间,提高了生产率。

参考文献

[1] American EDS PLM solution,Unigraphics NX3.0 Help.

[2] 董正卫,田立中,付宜利.UG/OPEN API编程基础[M].北京:清华大学出版社.2002.

[3] 黄翔,李迎光.UG应用开发教程与实例精解[M] .北京:清华大学出版社.2005.

[4] 李志刚.中国模具设计大典[M] .北京:机械工业出版社.2003.

[5] 丁松聚.冷冲模设计[M] .北京:机械工业出版社.1994.


相关文章

赞助商推广链接
Copyright © 2010-2012 Molds.Cn All rights reserved.