《(ug open api)ug二次开发资料之ugii二次开发的自动装配》

下载本书

添加书签

(ug open api)ug二次开发资料之ugii二次开发的自动装配- 第1部分


按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
2009…11…14 11:55主动组件的加载 
使用UF_ASSEM_add_part_to_assembly函数即可将部件加载到装配体。下段程序用于加载部件的,其中,parent_tag为父部件的部件标识;part_name为加载部件的部件名;inst_name为加载部件的组件名;inst_tag返回加载部件的实例标识。 

void   UG_OPEN_add_part_to_assem(tag_t parent_tag;char *part_name; char *inst_name;tag_t *inst_tag) 


   double origin'3' = {0,0,0};
   double csys_matrix'6' = {1,0,0,0,1,0};
   int layer = …1;
   UF_PART_load_status_t load_status;
   UF_ASSEM_add_part_to_assembly(parent_tag; part_name; NULL;inst_name; origin; csys_matrix; layer; inst_tag; &load_status);
   if ( load_status。file_names != NULL )
UF_free_string_array( load_status。n_parts; load_status。file_names );
   if ( load_status。statuses != NULL )
UF_free(load_status。statuses );




主动组件的事例标识可以通过UF_ASSEM_ask_part_occ_of_inst函数直接获取。从动组件事例标识的获取较为繁琐,其步骤为:(1) 确定从动组件的部件标识;(2)获取从动组件的所有事例标识;(3)匹配事例标识对应的组件名与从动组件组件名,确定从动组件的事例标识。需要注意的是,在同一装配中,部件名相同的其组件名不能相同,组件名相同的其部件名不能相同。 

下段程序代码用于获取从动组件事例标识,其中,part_name 为部件文件文件名,inst_name为部件文件组件名,occ_tag返回部件文件事例标识。 

void UG_OPEN_ask_part_occ_by_name(char *part_name; char *inst_name;tag_t *occ_tag )
{ 

   tag_t *part_occs;
   tag_t temp_tag;
   int i; 
   char part_n'133', refset_name'31',instance_name'31'; 
   double origin' 3 ',csys_matrix' 9 ',transform' 4 '' 4 '; 
   temp_tag = UF_PART_ask_part_tag(part_name);
   if(temp_tag != NULL_TAG)
   {
UF_ASSEM_ask_occs_of_part (NULL_TAG; temp_tag; &part_occs );
i = 0;
while(part_occs != NULL_TAG)

   UF_ASSEM_ask_ponent_data(part_occs; part_n; refset_name; 
         instance_name; origin; csys_matrix; transform);
   if(strcmp(strlwr(instance_name);strlwr(inst_name)) 0 ) break;
   i++;

if(part_occs != NULL_TAG) 
   *occ_tag = part_occs;
else
   *occ_tag = NULL_TAG;
UF_free(part_occs);
   }
   else
*occ_tag = NULL_TAG;




获取用于建立装配约束关系的对象标识的步骤为:(1)将对象所在部件设置为工作部件;(2)利用UF_OBJ_cycle_by_name 获取对象标识。同样需要注意的是,在同一部件中,对象名应唯一。 

下段程序代码用于获取对象标识,其中part_tag为对象所在部件的部件标识,obj_name为对象名,obj_tag返回约束对象的标识。 

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();
if(part_tag != NULL_TAG)
{ 
    UF_ASSEM_set_work_part(part_tag);
    UF_OBJ_cycle_by_name (obj_name; &object_tag); 
    if (object_tag != NULL_TAG)
   *obj_tag = object_tag;
    else
   *obj_tag = NULL_TAG;

else

    *obj_tag = NULL_TAG; 

UF_ASSEM_set_work_part(work_part);


装配约束关系的建立
建立组件间的装配约束的步骤为:(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为装配类型。 

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;
                tag_t to_part_occ;char **mate_type )

UF_ASSEM_mating_condition_t ftf;
UF_ASSEM_mc_status_t status;
UF_ASSEM_mc_structure_state_t struct_status;
UF_ASSEM_dof_t dof;
double transform'4''4';
int ret;i;
UF_ASSEM_init_mc (&ftf);
ftf。mated_object = from_part_ins;
ftf。name = NULL;
ftf。user_name = false;
for(i=0; i
小提示:按 回车 [Enter] 键 返回书目,按 ← 键 返回上一页, 按 → 键 进入下一页。 赞一下 添加书签加入书架