ug二次开发的自动装配技术_第1页
ug二次开发的自动装配技术_第2页
ug二次开发的自动装配技术_第3页
ug二次开发的自动装配技术_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

利用 UG/OPEN API 开发具体产品的应用系统时,常常遇到如何建立零件间装配约束关系的问题。如何实现零件间自动装配, 是开发应用系统的难点之一。 1 装配约束关系的简化 在实际应用中,装配约束的配合类型有贴合、对准、角度、平行、正交、对中等多种类型,用于装配约束的对象类型有 面、边、基准面、基准轴、点、线、曲线、坐标系等多种形式。为了便于数据描述,可将组件间的装配关系做了适当的简化, 如图 1、2 所示,该例中,将零件间的装配约束关系简化为两组件间三个基准面的贴合或对准的装配约束类系。其中,图 2 中 X,Y,Z 为对应部件中的基准面名。 图 1 简化前的装配约束关系 ? 图 2 简化后的装配约束关系 简化组件装配约束关系后,将主动组件的部件名、组件名与对象名,从动组件的部件名、组件名与对象名,以及装配约 束类型等信息保存在 ODBC 数据库中。在系统加载部件时,可根据数据库中的装配信息,实现组件的自动装配。 2自动装配的实现 3 w9 , x+ % N0 p1 H# r7 p6 P 5 M2 M# ( 9 U8 t“ O! q F$ U/ l9 e 2.1 主动组件的加载 8 y9 L: s: Y w 5 Z F4 Y4 Q/ m void UG_OPEN_add_part_to_assem(tag_t parent_tag,char *part_name,?char *inst_name,tag_t *inst_tag) y3 E“ L( 4 K! M i; t double csys_matrix6 = 1,0,0,0,1,0;) r“ j* i. M- f2 n int layer = -1; UF_PART_load_status_t load_status;6 V“ Y c k( N* Y- i z UF_ASSEM_add_part_to_assembly(parent_tag, part_name, NULL,inst_name, origin, csys_matrix, layer, inst_tag, 3 T; ?* o! / L# k+ l# : W* u+ X if ( load_status.statuses != NULL ) UF_free(load_status.statuses );+ % O6 9 b2 5 Z6 5 H c! B2 O8 f, T tag_t temp_tag;0 + X* m- 8 d1 v; G5 7 O char part_n133, refset_name31,instance_name31;? double origin 3 , csys_matrix 9 ,transform 4 4 ;?1 p! z* T% e2 0 i2 B temp_tag = UF_PART_ask_part_tag(part_name); if(temp_tag != NULL_TAG) UF_ASSEM_ask_occs_of_part (NULL_TAG, temp_tag, “ Z7 a( d) G8 Q$ t i = 0; while(part_occs != NULL_TAG)9 y1 T6 Q1 x3 + L“ H , m1 q 2 n“ g5 B UF_ASSEM_ask_component_data(part_occs, part_n, refset_name,? instance_name, origin, csys_matrix, transform); if(strcmp(strlwr(instance_name),strlwr(inst_name) =0 ) break; i+;8 - q/ t3 B* Y else- j7 j* _$ O* m- u# q2 k8 *occ_tag = NULL_TAG; UF_free(part_occs); else. G3 + T! W( Y8 b: ; f4 ! V *occ_tag = NULL_TAG;* K1 N3 m8 b9 l 2.3 约束对象标识的获取 获取用于建立装配约束关系的对象标识的步骤为:( 1)将对象所在部件设置为 工作 部件;( 2)利用 UF_OBJ_cycle_by_name 获取对象标识。同样需要注意的是,在同一部件中,对象名应唯一。 8 I. 9 S. y“ V: n8 e2 i 下段程序代码用于获取对象标识,其中 part_tag 为对象所在部件的部件标识, obj_name 为对象名, obj_tag 返回约束对 象的标识。 ) / ( G$ o0 M2 b* A void UG_OPEN_ask_obj_tag_by_name(tag_t part_tag, char *obj_name, tag_t *obj_tag) tag_t work_part, object_tag = NULL_TAG;? work_part = UF_ASSEM_ask_work_part();0 c; I/ F( y* O7 J E% Y if(part_tag != NULL_TAG) ( e4 B4 t; X7 _ M. W- h! S2 b* x7 UF_ASSEM_set_work_part(part_tag); UF_OBJ_cycle_by_name (obj_name, ?7 |5 N6 E. C) # e6 w if (object_tag != NULL_TAG) *obj_tag = object_tag; else *obj_tag = NULL_TAG; c% k0 y) d; D6 Q) b . G9 y. E. h* else - L5 _9 s8 M4 C1 c+ 7 N *obj_tag = NULL_TAG; B0 v6 |9 i, J # # n% o) 0 f1 + X0 y+ d3 P m) y UF_ASSEM_set_work_part(work_part); A2 d( v W; * w/ R/ m + - L* P6 y* u1 d. q“ e“ B- 2 4 装配约束关系的建立 5 L) g0 a“ f4 C 建立组件间的装配约束的步骤为: (1) 定义装配约束,即填充结构 UF_ASSEM_constraint_s;( 2)利用函数 UF_ASSEM_solve_mc 求解约束; (3) 利用函数 UF_ASSEM_apply_mc_data 将约束应用到装配体上; (4) 利用函数 UF_MODl_update 更新模型,以反映模型变化。 下段程序代码用于两组件间的装配约束关系的建立,其中, from_part_ins 为主动组件实例标识, from_obj_tag 为主动 组件中的对象标识, from_part_occ 为主动组件的事例标识, to_obj_tag 为从动组件的对象标识, to_part_occ 为从动组件的事 例标识, mate_type 为装配类型。 % S+ r- F% E F/ n, |) t1 z7 g void UG_OPEN_atuo_mate_by_datum(tag_t from_part_ins,tag_t *from_obj_tag, tag_t from_part_occ,tag_t *to_obj_tag,+ s# C; G- u+ |! a* n. t1 m tag_t to_part_occ,char *mate_type )! c: e( k“ s9 j0 % E 2 Z/ t% c$ - y, s5 O3 B“ E9 W UF_ASSEM_mating_condition_t? ftf;* P, U) u3 n4 A O: 3 d UF_ASSEM_mc_status_t? status; UF_ASSEM_mc_structure_state_t struct_status;! h$ x7 b l( m4 B: B6 _. Y UF_ASSEM_dof_t? dof;7 i, p M int ret,i; UF_ASSEM_init_mc (! X$ t8 s( l2 d) E1 n V ftf.mated_object = from_part_ins;, ; C7 j! p1 v# z1 q = NULL;. C/ I! G P# 7 i1 _ ftf.user_name = false;“ Y h“ F. j2 U i3; i+), . d2 ?. A6 6 c% k7 S7 : L1 f4 Q* m. A$ F% s7 S ftf.constraints.from_status = UF_ASSEM_ok; ftf.constraints.to_status = UF_ASSEM_ok;8 f T8 6 c- b) D* y* z“ F if(strcmp(strlwr(mate_type),“m“) = 0)“ H% q/ Y! e“ g- # l/ x ftf.constraints.mate_type = UF_ASSEM_v16_mate;3 X% / q# 0 r, L, X else ftf.constraints.mate_type = UF_ASSEM_v16_align ;+ c- q; K3 R( Q5 O8 g ftf.constraints.from_type = UF_ASSEM_datum_plane;, R* g5 I4 w) o1 ?- k ftf.constraints.to_type = UF_ASSEM_datum_plane;3 K/ z; ; n. Y O4 z* ftf.constraints.from = from_obj_tag; ftf.constraints.from_part_occ = from_part_occ; ftf.constraints.to = to_obj_tag;- B7 O3 d5 e B) z5 3 c q* W ftf.constraints.to_part_occ = to_part_occ; ftf.constraints.offset = NULL_TAG;8 o S7 u- B* d* z) U = NULL; ftf.constr

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论