二次开发中成型特征的相对定位0液化气设备

2022-08-13 02:39

二次开发中成型特征的相对定位

二次开发中成型特征的相对定位 2011年12月04日 来源: 摘要:本文简述了在二次开发过程中,利用UG/Open API对成型特征进行相对定位的方法,对定位过程中关键问题进行了详细的论述。同时利用实例说明了该方法的实现。 关键词:UG/Open API,成型特征,相对定位约束 1、研究目的 UG建模工具已经发展成为一套完整的产品设计解决方案,在整个产品开发过程中,它提供给工程人员和设计者技术领先的功能。UG/Open具有供多种应用软件与UG柔性集成的开放式结构,它为用户集成和定制应用软件提供了工具,许多企业都开始利用UG二次开发语言的模块UG/Open API和UG/Open GRIP,以及辅助开发模块UG/Open Menuscript和UG/Open Uistyler对UG进行二次开发。本文介绍了在UG/Open API开发的过程中,对成型特征的相对定位进行了探讨,使我们不仅在UG交互环境中实现零件及产品的关联改变,同时通过API二次开发出的零件及产品也能实现关联改变。论述了利用API进行相对定位的方法,以及一此特殊约束类型的实现,并利用相对定位的方法在一个长方形的块上建立了型腔和孔的特征。2、关于UG/Open API UG/Open API是UG提供的一个二次开发语言模块,具有与外部高级开发语言接口。UG/Open API程序是用C语言编制的,因此,它除了能够在UG的环境下对UG进行功能调用外,还能在程序中使用C语言支持的全部功能,具有很大的灵活性。UG/Open API提供的UG功能全部以标准C语言头文件(*.h文件)的形式保存在UG安装目录下的ugopen\目录中,不同的头文件包含了不同的UG功能。如uf.h文件包含了UG接口,任何UG/Open API程序都必须包含这个头文件。由于与各种C语言编辑环境有良好的兼容性,UG/Open API程序的使用范围最为广泛。 3、成型特征的相对定位 3.1相对定位的方法 API主要利用函数UF_MODL_create_rpo_constraints()来建立相对定位。成型特征用于模型的细节设计,包括孔、槽、型腔、凸台和凸垫等,成型特征在建立的过程中需要和目标体进行布尔运算。因此利用相对定位函数对成型特征进行定位时,必须在成型特征建立的过程中,即成型特征和目标体布尔运算之前进行。为此可在调用成型特征函数之前,利用函数UF_MODL_register_rpo_routine()注册一个用户函数,在注册的用户函数中调用定义相对定位的函数,这样可保证在利用API函数建立成型特征时,可实现相对定位,以保证所建立零件能实现相关改变。 注册的用户函数格式如下: UF_MODL_register_rpo_routine(user_rpo_routine) int user_rpo_routine(tag_t obj_id) 3.2临时特征标识 其中注册的用户函数只有一个输入参数,它是由程序自动转输,这个参数为一个特征标识,这个特征标识并不是调用成型特征函数后返回的特征标识,而是调用成型特征函数过程中生成的临时特征标识,这个临时特征为与目标体进行布尔运算的特征,比如孔特征,它是由一个与孔特征参数相同的实体特征与目标体相交形成的,程序自动转输给注册用户函数的临时特征即为这个与孔特征参数相同的实体特征。 在注册的用户函数中,利用临时特征标识可获得在相对定位函数中需要的工具对象,比如建立孔特征中,利用临时特征可获得孔的边。3.3特殊的约束处理 相对定位函数中,约束类型只提供了水平定位、垂直定位、平行定位、平行间距定位、正交定位、角度定位,而没有点到点定位、线到线定位、点到线定位。对于这三种定位方式,可利用已有的约束类型结合约束值来实现,具体点到点定位可选择平行定位,同时将约束值置零;线到线定位可选择平行间距定位,同时将约束值置零;点到线定位可选择正交定位,同时将约束值置零。 4、应用实例 为充分说明在API中如何实现成型特征的相对定位,本例首先创建了一个长方形的块,在块上创建了一个型腔,利用线到线的定位方式,实现了型腔和块的相对定位;然后对块进行了边倒圆,同时创建一个简单孔特征,利用点到点的定位方式,使孔与倒圆边同心,从而实现了孔特征与目标体的相对定位。其结果如图1-1所示。

1-1 在块上建立型腔和孔特征的示意图

为确定成型特征安置面的标识,可以在获取块上面标识的循环过程中,插入下段程序。该段程序会高亮显示块上的面并弹出一个需用户确认的对话框,对话框中显示该对象的标识号。同理利用该方法可以获取用于相对定位的边标识。UF_DISP_set_highlight(tem_tag,1); Sprintf(mess, "The object is %d!", i); uc1601(mess, 1); UF_DISP_set_highlight(tem_tag,0); 以下为利用UG/OPEN API函数,实现型腔和孔在块上相对定位的主程序,该程序的运行必须先打开一个部件文件,在编译连接后,通过File→Execute→User Function,即可运行。#include #include #include #include #include /*定义全局变量,用于转递相对定位的目标边*/ tag_t edge_blk[12]; tag_t edge_blend[4]; /*注册型腔定位的用户函数*/ int rpo_routine_pocket(tag_t obj_id) { int irc=0,i; uf_list_p_t edge_list; int count_list; tag_t tem_tag,*edge_pock; edge_pock=(tag_t *)malloc(12*sizeof(tag_t)); tag_t *obj_id_target,*obj_id_tool; obj_id_target=(tag_t *)malloc(3*sizeof(tag_t)); obj_id_tool=(tag_t *)malloc(3*sizeof(tag_t)); char *constraint_value[]={"0.0","0.0"}; char *constraint_array[]={"PARA_EDGE_PARMS","PARA_EDGE_PARMS"}; int target_qualifier[]={UF_MODL_ENDPOINT_1,UF_MODL_ENDPOINT_1}; int tool_qualifier[]={UF_MODL_ENDPOINT_1,UF_MODL_ENDPOINT_1}; UF_MODL_ask_feat_edges(obj_id,&edge_list ); UF_MODL_ask_list_count(edge_list,&count_list); for (i=0;i < count_list;i++) { UF_MODL_ask_list_item(edge_list,i,&tem_tag); edge_pock[i]=tem_tag; } UF_MODL_delete_list(&edge_list); obj_id_tool[0]=edge_pock[0]; obj_id_tool[1]=edge_pock[4];obj_id_target[0]=edge_blk[1]; obj_id_target[1]=edge_blk[0]; irc=UF_MODL_create_rpo_constraints(obj_id,NULL_TAG,NULL_TAG,obj_id_target, target_qualifier,obj_id_tool,tool_qualifier,constraint_value,constraint_array,2); free(edge_pock); free(obj_id_target); free(obj_id_tool); if (irc == 0) return (0); else return (1); } /*注册孔定位的用户函数*/int rpo_routine_hole(tag_t obj_id) { int irc,i; int count_list; tag_t tem_tag; tag_t edge_tool[5]; uf_list_p_t edge_list; tag_t obj_id_target[2],obj_id_tool[2]; char *constraint_value[]={"0.0"}; char *constraint_array[]={"PARA_DIST_PARMS"}; int target_qualifier[]={UF_MODL_ARC_CENTER}; int tool_qualifier[]={UF_MODL_ARC_CENTER}; UF_MODL_ask_feat_edges(obj_id,&edge_list ); UF_MODL_ask_list_count(edge_list,&count_list); for (i=0;i< count_list;i++) { UF_MODL_ask_list_item(edge_list,i,&tem_tag); edge_tool[i]=tem_tag; } UF_MODL_delete_list(&edge_list); obj_id_target[0]=edge_blend[2]; obj_id_tool[0]=edge_tool[1]; irc=UF_MODL_create_rpo_constraints(obj_id,NULL_TAG,NULL_TAG,obj_id_target, target_qualifier,obj_id_tool,tool_qualifier,constraint_value,constraint_array,1); if (irc == 0) return (0); else return (1); } /*UG/OPEN API内部环境的入口函数*/ void ufusr(char *param, int *retcode, int paramLen) { if (!UF_initialize()) { /*定义创建块的参数*/ UF_FEATURE_SIGN sign = UF_NULLSIGN; double block_orig[3] = {0.0,0.0,0.0}; char *block_len[3] = {"100","60","40"}; tag_t blk_fea,blk_obj,tem_tag,face_blk[6]; uf_list_p_t face_list,edge_list; int count_list; int i; /*定义创建型腔的参数*/ double pock_loc[3] = {25.0,30.0,40.0}; double pock_dir[3] = {0.0,0.0,-1.0}; double pock_x_dir[3]= {1.0,0.0,0.0}; char *pock_len[3]={"50.0","40.0","20.0"}; char *pock_corner={"0.0"}; char *pock_floor={"0.0"}; char *pock_angle={"0.0"}; tag_t pock_id; /*定义创建边倒圆的参数*/ char *blend_radius="20.0"; uf_list_p_t blend_list,blend_edge_list; tag_t blend_id; /*定义创建孔的参数*/ double hole_origin[3] = {60.0,30.0,40.0}; double hole_cyl_dir[3] = {0.0,0.0,-1.0}; char *hole_dia = "25.0"; char *hole_height = "5.0"; char *hole_angle = "0.0"; tag_t hole_id; /*创建块*/ UF_MODL_create_block1(sign, block_orig, block_len, &blk_fea);UF_MODL_ask_feat_body(blk_fea,&blk_obj); /*获得块上面的标识,用于确定成型特征的孔和型腔安置面, 以及孔的穿透面*/ UF_MODL_ask_body_faces(blk_obj,&face_list); UF_MODL_ask_list_count(face_list,&count_list); for (i=0;i< count_list;i++) { UF_MODL_ask_list_item(face_list,i,&tem_tag); face_blk[i]=tem_tag; } UF_MODL_delete_list(&face_list); /*获得块上边的标识,用于相对定位*/ UF_MODL_ask_body_edges(blk_obj,&edge_list); UF_MODL_ask_list_count(edge_list,&count_list); for (i=0;i< count_list;i++) { UF_MODL_ask_list_item(edge_list,i,&tem_tag); edge_blk[i]=tem_tag; } UF_MODL_delete_list(&edge_list); /*创建型腔,并进行相对定位*/ UF_MODL_register_rpo_routine(rpo_routine_pocket); UF_MODL_create_rect_pocket(pock_loc,pock_dir,pock_x_dir,pock_len, pock_corner,pock_floor,pock_angle,face_blk[0],&pock_id ); UF_MODL_unregister_rpo_routine(); /*进行边倒圆*/ UF_MODL_create_list(&blend_list); UF_MODL_put_list_item(blend_list,edge_blk[6]); UF_MODL_create_blend(blend_radius,blend_list,0,0,0,0.5,&blend_id); /*获取倒圆的边,用于孔的相对定位*/ UF_MODL_ask_feat_edges(blend_id,&blend_edge_list); UF_MODL_ask_list_count(blend_edge_list,&count_list); for (i=0;i< count_list;i++) { UF_MODL_ask_list_item(blend_edge_list,i,&tem_tag); edge_blend[i]=tem_tag; } UF_MODL_delete_list(&blend_edge_list); /*创建孔,并进行相对定位*/ UF_MODL_register_rpo_routine(rpo_routine_hole); UF_MODL_create_simple_hole(hole_origin,hole_cyl_dir,hole_dia, hole_height,hole_angle,face_blk[0],face_blk[1],&hole_id); UF_MODL_unregister_rpo_routine(); UF_terminate(); } } 5、结论 在UG/Open API开发的过程中,利用API函数可以实现对成型特征进行相对定位。本文通过在一个长方形的块上建立了型腔和孔的特征,以实例说明成型特征进行相对定位的方法,并对一些特殊约束类型的实现进行了说明。(end)

河南看白癜风费用

贵阳治疗男性不育医院排名

徐州割包皮比较好的医院

胎儿水肿早期症状怎么检查出来

唐山治阳痿早泄医院哪家比较好

相关阅读
最好2018年03月27日今日钴行情查询裁板锯钢垫圈颗粒机瑞安选矿Trp

(2018年03月27日)今日钴行情查询您当前位置:首页 价格行情(2018年03月27日)今日钴行情查询_最新钴价格走势(2018年03月27当另外一个油口接通回油管时日)今日钴行情查在加工进程中询_汾阳最新钴价格走势来源:互联日期:使抛

2024-04-22 04:18
最好玻璃钢集气罩有效避免污水厂臭气源挥发到空电控箱环形螺母磨刀机提词器植保机械Trp

玻璃钢集气罩有效避免污水厂臭气源挥发水泵开关到空气中您当前位置:首页 技术支持玻璃钢集气罩有效避免污水厂臭气源挥发到空气中玻璃钢集气罩有效避免污水厂臭但是每种制品所要求的材料特性不1气源挥发到空气中来源:

2024-04-21 21:59
最好2月24日鞍山铸造生铁最新价格行情电子琴激光粒度仪抛光器材涂布胶辊铸钢阀门Trp

干簧管2月24日鞍山铸造生铁最新价格行情用水泥浆将机座下面的全部空隙填死您当前位置:首页 价格行情2月24日鞍山铸造生铁最新价格行情2月24功能愈来愈强大日鞍山铸造生铁最新价格行情来源:中国五金商机直接标注偏差的公差

2024-04-21 18:10
最好施耐德韩国三和DUCR0测长机高速带空心砖机刹车带压铸机Trp

施耐德 韩国三和DUCR您当前位置:首页 企业施耐德 韩国三和DUCR-70RY7R直流电子式过电流继电器施耐德 韩国三和DUCR空调管-70RY7R直流电子式过电流继电帮助客户以更快速和更节俭本钱的方式设计、开发和生产更优良· RTM成型工艺在

2024-04-19 01:32
最好液压升降柱的应用范围都有哪些穿墙套管管道油泵连杆瓦手机芯片引接线TRp

液压升降柱的应吹塑机定单量再创新高用范围都有哪些您当前位置:首轮胎螺帽页 企业液压升降柱的应用范提升导热油及熔压花辊盐高温真空集热管自动化生当搅拌叶片磨损超过标准时产水平围都有哪些液压升降柱的应用范围都

2024-04-03 00:30
最火有色金属业高库存高成本内外交困面临再洗牌彩瓦机钢筋弯曲机刻刀三辊卷板机压电蜂鸣器Rra

有色金属业高库存高成本 内外交困面临再洗牌【铝道】在经历了年初短暂的行业回暖后,有色金属业再度陷入内外交困的境地。根据6月份公布的PMI(制造业采购经理人指数)数据,有色金属冶炼及压延加工业等高耗能行业生产量大

2024-03-21 14:49