欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOCX文档下载  

    UG二次开发模板.docx

    • 资源ID:3167437       资源大小:49.67KB        全文页数:40页
    • 资源格式: DOCX        下载积分:6.99金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要6.99金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    UG二次开发模板.docx

    UG二次开发模板UG二次开发模板 目 录 第一章 技巧规则·········································································································· (2) 第二章 函数模板·········································································································· (4) 第三章 功能模板········································································································ (11) 第四章 udop ·················································································································· (24) 注:连接:Ctrl+单击鼠标左键 1 第一章 技巧规则 1,内存原则: 用malloc或new申请内存之后,应该立即检查指针值是否为NULL。 防止使用指针值为NULL的内存。 不要忘记为数组和动态内存赋初值。防止将未被初始化的内存作为右 值使用。 避免数组或指针的下标越界,特别要当心发生“多1”或者“少1” 操作。 动态内存的申请与释放必须配对,防止内存泄漏。 用free或delete释放了内存之后,立即将指针设置为NULL,防止产 生“野指针”。 2, 数组要么在静态存储区被创建,要么在栈上被创建。数组名对应着一块内存,其地址与容量在生命期内保持不变,只有数组的内容可以改变。 指针可以随时指向任意类型的内存块,它的特征是“可变”,所以我们常用指针来操作动态内存。指针远比数组灵活,但也更危险。 注意当数组作为函数的参数进行传递时,该数组自动退化为同类型的指针。 new/delete的功能完全覆盖了malloc/free,为什么C+不把malloc/free淘 汰出局呢? 这是因为C+程序经常要调用C函数,而C程序只能用malloc/free管理动态内存。 2,分配空间 double (*point)3; point = new doublecount3; deletepoint;/正确的用法 /*delete point;/错误的用法delete point0*/ 3, UF_MODL_update;/使用UF_MODL_edit时用来刷新 4 UF_UI_ONT_refresh ;/刷新导航器 头文件#include <uf_ui_ont.h> UF_DISP_refresh;/去除临时文件 #include < uf_disp.h> 5 调试工具 1)uc1601 /显示消息对话框 2 头文件:#include <uf_ui.h> 用法1: char inf100; sprintf(inf, "%f",); uc1601(inf,1); 用法2: uc1601("",1); 2)UF_UI_write_listing_window /显示文本框 头文件:#include <uf_ui.h> char inf100; UF_UI_open_listing_window; sprintf(inf, "%", ); UF_UI_write_listing_window(inf); 6,隐藏中间过程 #include < uf_disp.h> UF_DISP_set_display(UF_DISP_SUPPRESS_DISPLAY);/打开隐藏 UF_DISP_set_display(UF_DISP_UNSUPPRESS_DISPLAY); /关闭隐藏 3 第二章 函数模板 1, uc1600 /获取字符串 头文件:#include <uf_ui.h> int res = 0; int len = 0; char string100="" res = uc1600( "",string , &len );/string:Input / Output if ( res = 5 | ( res= 3 && len > 0 ) ) else 2, uc1603 / 头文件:#include <uf_ui.h> 用法1: char title 100 = "菜单" char items 3 38 = "选项1","选项2","选项3" choice = uc1603(title, 0, items, 3); if (choice = 1 | choice = 2) UF_terminate; else if (choice = ) 用法2: 4 char items 3 38 = "选项1","选项2","选项3" response = uc1603( "菜单", 0, items, 3 ); switch ( response ) case 1: case 2: break; case 4: case 5: 3,选择对话框头文件 头文件1: init_proc_face static int init_proc_face( UF_UI_selection_p_t select, void* user_data ) int nums = 1; UF_UI_mask_t masks = UF_solid_type, 0, UF_UI_SEL_FEATURE_ANY_FACE; if(UF_UI_set_sel_mask(select, UF_UI_SEL_MASK_CLEAR_AND_ENABLE_SPECIFIC, nums, masks) = 0) return (UF_UI_SEL_SUCCESS); else return (UF_UI_SEL_FAILURE); 头文件2: init_proc_body static int init_proc_body(UF_UI_selection_p_t select, void* user_data) int num_triples = 1; 5 UF_UI_mask_t mask_triples = UF_solid_type, 0, UF_UI_SEL_FEATURE_BODY; /* enable only lines and edges */ if(UF_CALL(UF_UI_set_sel_mask(select, UF_UI_SEL_MASK_CLEAR_AND_ENABLE_SPECIFIC, num_triples, mask_triples) = 0) return (UF_UI_SEL_SUCCESS); else return (UF_UI_SEL_FAILURE); 4,UF_UI_select_with_single_dialog 头文件:#include <uf_ui.h> char title="" char cue = "" int response=0; double cursor 3; tag_t face = NULL; tag_t view = NULL; if(!UF_CALL(UF_UI_select_with_single_dialog( cue, UF_UI_SEL_SCOPE_NO_CHANGE, init_proc_face, NULL, &response,&face,cursor ,&view) if (response = UF_UI_OBJECT_SELECTED | response = UF_UI_OBJECT_SELECTED_BY_NAME) printf("object tag = %dn", face); UF_DISP_set_highlight(face, 0);/关高亮 5,UF_UI_select_with_class_dialog 头文件:#include <uf_ui.h> 6 title, void class_sel_dlg(int *count,tag_p_t *objects) char cue = "" char title = "" int response, sel_count, i; tag_p_t sel_objects; if(UF_CALL(UF_UI_select_with_class_dialog( cue, title, UF_UI_SEL_SCOPE_NO_CHANGE, init_proc_face, NULL, &response, &sel_count, &sel_objects) = 0) printf("object count = %dn",sel_count); if (response = UF_UI_OK && sel_count > 0) *objects=sel_objects; *count=sel_count; for (i=0; i<sel_count; i+) printf("object tag = %dn", sel_objectsi); UF_DISP_set_highlight(sel_objectsi, 0); UF_free(objects); 6,UF_MODL_delete_object_parms/消参 头文件: #include < uf_modl.h> #include < uf_modl_utilities.h > uf_list_p_t obj_list; UF_CALL(UF_MODL_create_list(&obj_list); UF_CALL(UF_MODL_put_list_item(obj_list, ); UF_CALL(UF_MODL_put_list_item(obj_list, ); UF_MODL_delete_object_parms(obj_list); UF_MODL_delete_list(&obj_list); UF_OBJ_delete_object; 7 7,UF_CURVE_create_arc/通过圆心,半径画圆 头文件: #include < uf_csys.h> #include < uf_curve.h> tag_t arc, wcs_tag; UF_CSYS_ask_wcs(&wcs_tag); UF_CURVE_arc_t arc_coords; UF_CSYS_ask_matrix_of_object(wcs_tag,&wcs_tag); arc_coords.matrix_tag=wcs_tag; arc_coords.start_angle = 0.0; arc_coords.end_angle =360.0 * DEGRA; arc_coords.arc_center0 = center0;/ arc_coords.arc_center1 = center1;/ arc_coords.arc_center2 = center2;/ arc_coords.radius = 500; UF_CURVE_create_arc(&arc_coords,&arc_id); 8,UF_OBJ_set_name(tag,name); /设置名字 头文件#include <uf_obj.h> 9,name开关 int name_status ; UF_DISP_ask_name_display_status(&name_status); if (name_status=UF_DISP_NAME_DISPLAY_OFF ) name_status=UF_DISP_NAME_DISPLAY_ON; else name_status=UF_DISP_NAME_DISPLAY_OFF; UF_DISP_set_name_display_status(name_status); 10,UF_OBJ_set_color(tag, color); /设置颜色 8 头文件#include <uf_obj.h> 11,UF_OBJ_set_layer (tag,layer); /设置层 头文件#include <uf_obj.h> 12,UF_CALL 头文件#include <uf.h> int UF_CALL ( int errorCode ) if ( errorCode ) char message 133 = "" UF_get_fail_message( errorCode, message ); uc1601 ( message, 1); return (errorCode); 13, UF_PART_ask_display_part 头文件#include <uf_part.h> tag_t part = UF_PART_ask_display_part ( ); if ( NULL = part ) uc1601( "", 1 ); return; 14, UF_OPER_create 头文件#include <uf_oper.h> tag_t Oper_id = NULL; UF_OPER_create ( "mill_contour", "ZLEVEL_PROFILE_YBC", &GZM_Oper_id ); 15,UF_MODL_ask_face_data/查询面的信息 头文件#include <uf_modl.h> 9 tag_t face;/面的ID int type; /面的类型 double box6;/x,y,z向最大,最小值 double radius; double rad_data; int norm_dir ;/法向 UF_MODL_ask_face_data(face,&type,center, dir,box,&radius,&rad_data,&norm_dir); 16,UF_MODL_ask_minimum_dist_2/查询两物体间距离 double dis,accuracy;/ accuracy:准确度 double point1 3 =0; double point2 3 =0; UF_CALL(UF_MODL_ask_minimum_dist_2 ( obj1, obj2, 0, NULL, 0, NULL, & dis, point1, point1, &accuracy ); 10 第三章 功能模板 1,制作对话框 1)进入User Interface Styler,设计好对话框,将Launch Dialog From改为Callback保存 2)将生成的对话框文件放在模板文件夹下,以记事本格式打开XX. _template.C文件,将extern int <enter the name of your function> ( int *response )改为extern int XXX ( int *response )后保存。 3)打开VC的Templet,依次点击Tools->options->directories,将XX.h所在的文件夹包含进去。 4)在Templet.cpp中加入#include "XX_template.c" #include "XX.h" 5)在程序内写入 int response; XXX (&response);点击F7,编译成功。 2,对话框求值,设值 UF_STYLER_item_value_type_t value; value.item_attr=UF_STYLER_VALUE; value.item_id=XXX; /在.h文件中定义的ID UF_STYLER_ask_value(dialog_id,&value); /读值 /*赋值到变量中,变量在.h文件中定义,根据对话框定义不同类型:real,string,strings, integer , integers , real, reals*/ XXX =value.value.real;/赋值 value.item_id=XXX; /在.h文件中定义的ID value.count1;/拉伸条移动 UF_STYLER_set_value(dialog_id,&value);/设值 UF_STYLER_free_value(&value); /释放空间 3, 1),设置控件的激活状态 UF_STYLER_item_value_type_t value; value.item_attr=UF_STYLER_SENSITIVITY; /指定设置控件的激活状态 value.item_id= XXX ; /在.h文件中定义的ID 11 value.value.integer=FALSE; / FALSE为不激活,TRUE为激活 UF_STYLER_set_value(dialog_id,&value); 2),设置对话框是否能选择物体 UF_UI_mask_t all_mask = UF_circle_type, 0, 0, UF_cylinder_type, 0, 0, UF_line_type, 0, 0 ; UF_STYLER_item_value_type_t value; value.item_attr=UF_STYLER_SELECTION; value.item_id=UF_STYLER_DIALOG_INDEX; UF_STYLER_ask_value(dialog_id0,&value); UF_UI_set_sel_type(value.value.selection, UF_UI_SEL_TYPE_INACTIVE_SELECTION );/不能选择 / UF_UI_SEL_TYPE_SINGLE_SELECTION /UF_UI_SEL_TYPE_SINGLE_DESELECTION /UF_UI_SEL_TYPE_ROBUST_SELECTION 能选择 /UF_UI_SEL_TYPE_SINGLE_POSITION /UF_UI_SEL_TYPE_RECTANGLE_POSITION if ( ( UF_UI_set_sel_mask ( value.value.selection, UF_UI_SEL_MASK_CLEAR_AND_ENABLE_SPECIFIC, 2, all_mask ) ) ) return (UF_UI_CB_CONTINUE_DIALOG); 2,查询选择物体 UF_STYLER_item_value_type_t value; value.item_attr=UF_STYLER_SELECTION; value.item_id=UF_STYLER_DIALOG_INDEX; UF_STYLER_ask_value(dialog_id0,&value); UF_UI_ask_sel_object_list(value.value.selection,&count,&objects); 4,求三面交点 头文件 void change ( double AB 34, int line); void row_change ( double AB 34, int row); 12 double xyz3;/交点坐标 double AB 34 = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0; double dot_product; UF_VEC3_dot ( dir, center, &dot_product); AB 00 = dir0; AB 01 = dir1; AB 02 = dir2; AB 03 = dot_product; double dot_product1; UF_VEC3_dot ( dir1, center1, &dot_product1); AB 10 = dir10; AB 11 = dir11; AB 12 = dir12; AB 13 = dot_product1; double dot_product2; UF_VEC3_dot ( dir2, floor_center, &dot_product2); AB 20 = dir20; AB 21 = dir21; AB 22 = dir22; AB 23 = dot_product2; for ( int j = 0; j < 3; j+) change ( AB, j); row_change ( AB, j); xyz 2 = AB 23; xyz 1 = AB 13 - AB 12 * xyz 2; xyz 0 = AB 03 - AB 02 * xyz 2 - AB 01 * xyz 1; 子函数: void change ( double AB 34, int line) double max = 0; double buffer = 0; int bj = -1; double max_x = 0; for ( int i = line; i < 3; i+) max_x = fabs( AB iline); if ( max_x > max) max = max_x; bj = i; 13 for ( int j = 0; j < 4; j+) buffer = AB bjj; AB bjj = AB linej; AB linej = buffer; /初等行变换 void row_change ( double AB 34, int row) for ( int j = row; j < 3 ; j+) double divisor = AB jrow; if ( 0 != divisor) for ( int i = row; i < 4; i+) AB ji = AB ji / divisor; for ( int k = ( row + 1); k < 3; k+) if ( 0 != AB krow) for ( int l = 0; l < 4; l+) AB kl = AB kl - AB rowl; 5,筛选边界 14 uf_loop_p_t loops_list=NULL; /回环ID UF_MODL_ask_face_loops(face, &loops_list );/查询回环 int loops_count=0;/回环数量 UF_MODL_ask_loop_list_count(loops_list,&loops_count);/查询回环数量 for (int l_i=0; l_i<loops_count; l_i+) int loops_type=0;/回环类型 uf_list_p_t edge_list=NULL;/边缘菜单指针ID UF_MODL_ask_loop_list_item(loops_list,l_i,&loops_type,&edge_list); if (1=loops_type)/ 边界=1, 洞=2, 其他=3 int edge_count=0;/边缘数量 UF_MODL_ask_list_count ( edge_list, &edge_count ); tag_t edge_id=NULL;/边缘ID for(int edge_i=0; edge_i<edge_count;edge_i+) UF_MODL_ask_list_item( edge_list,edge_i,&edge_id); UF_MODL_create_curve_from_edge(edge_id,&edge_id); 6,transform转移 #include <uf_trns.h> 1)平移uf5943 2)缩放uf5944 15 3)旋转uf5945 double matrix 16 ; int status; double angle=0;/旋转角度 uf5945(center,dir,&angle,matrix,&status); /center物体中心,dir法向 const int objects=1;/数量 const int move=1; / 1 :复制 2 :粘贴 const int layer=-1; /0:最初层; -1: 工作层; 1 - 256 : 指定层 const int trace_curves=2; /轨迹状态, 1 开, 2 关 uf5947(matrix,&obj_tag,&n_objects,&move, &layer,&trace_curves,NULL,NULL,&status); 4)投影uf5946 double matrix 16 ; int status; uf5946(object,matrix,&status);/object:投影面或线,dir法向 const int objects=1;/数量 const int move=1; / 1 :复制 2 :粘贴 const int layer=-1; /0:最初层; -1: 工作层; 1 - 256 : 指定层 const int trace_curves=2; /轨迹状态, 1 开, 2 关 uf5947(matrix,&obj_tag,&n_objects,&move, &layer,&trace_curves,NULL,NULL,&status); 5)偏移相加 uf5942 7,裁剪片体 tag_t *trim_objects; trim_objects =new tag_tcount; trim_objectsi =bound_id; void trim_sheet UF_MODL_vector_t projection_method ; projection_method.reverse_vector=0; projection_method.vector_type=UF_MODL_VECTOR_DIRECTION; UF_MODL_vector_defined_by_union_t dir1; UF_MODL_vector_direction_t dir2; dir2.xyz 0=dir0; 16 dir2.xyz 1=dir1; dir2.xyz 2=dir2; dir1.direction=dir2; projection_method.defined_by=dir1; double point_coords3 ; point_coords0=center0; point_coords1=center1; point_coords2=center2; int gap_point_count ; double *gap_points; tag_t feature_obj_eid; UF_MODL_create_trimmed_sheet(sel_sheet,edge_count,trim_objects,&projection_method, 0,1,point_coords,0.1,&gap_point_count,&gap_points,&feature_obj_eid); 8,offset偏移 char distance_str = "10.0"/偏移的距离 int num_curves; tag_t * offset_curves; UF_CURVE_offset_distance_data_t offset_distance; offset_distance.distance = distance_str; offset_distance.rough_type=1; UF_STRING_t input_string; input_string.idi=curve_id;/加入想要偏移的线 input_string.num =1; /偏移矢量方向数量 input_string.string=&string_count;/偏移线的数量 int string_dir=UF_MODL_CURVE_START_FROM_END; input_string.dir=&string_dir; UF_CURVE_offset_data_t offset_data; offset_data.offset_def.distance_type1 = &offset_distance; 17 offset_data.input_curves = &input_string; offset_data.approximation_tolerance = 0.01; offset_data.string_tolerance=0.001; offset_data.offset_def.distance_type1 = &offset_distance; offset_data.offset_type = UF_CURVE_OFFSET_DISTANCE_TANGENT; UF_CALL(UF_CURVE_create_offset_curve(&offset_data, &num_curves,&offset_curves); 9,创建平面 UF_STRING_t generator; UF_STRING_p_t ge = &generator; UF_MODL_init_string_list(ge); UF_MODL_create_string_list(1,12,ge); ge->string0 = 1; ge->dir0 = 1;/指定线从开始到结束 ge->id0 = arc_id;/指定边界的id double tol3; tol0 = .001;/直线公差 tol1 = .5 * (PI/180);/圆弧公差 tol2 = .02;/不起作用 UF_CALL(UF_MODL_create_bplane(ge,tol,&bplane); 10,选择 1),点选择 tag_t point_tag; double point3; UF_UI_POINT_base_method_t base_method=UF_UI_POINT_INF

    注意事项

    本文(UG二次开发模板.docx)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开