ImageVerifierCode 换一换
格式:DOCX , 页数:34 ,大小:44.03KB ,
资源ID:6530927      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6530927.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(UG二次开发模板.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

UG二次开发模板.docx

1、UG二次开发模板UG二次开发模板|(11)|匚口(24)屈第一章技巧规则 第二章函数模板 第三章功能模板 第四章 udop 注:连接 :Ctrl+ 单击鼠标左键第一章 技巧规则1,内存原则:【规则 1】用 malloc 或 new 申请内存之后,应该立即检查指针值是否为 NULL 。 防止使用指针值为 NULL 的内存。【规则 2】不要忘记为数组和动态内存赋初值。防止将未被初始化的内存作为右 值使用。【规则 3】避免数组或指针的下标越界,特别要当心发生“多 1 ”或者“少 1 ” 操作。【规则 4】动态内存的申请与释放必须配对,防止内存泄漏。【规则 5】用 free 或 delete 释放了内

2、存之后,立即将指针设置为 NULL ,防止产 生“野指针”。数组要么在静态存储区被创建(如全局数组) ,要么在栈上被创建。数组名对应着(而 不是指向)一块内存,其地址与容量在生命期内保持不变,只有数组的内容可以改变。 指针可以随时指向任意类型的内存块,它的特征是“可变” ,所以我们常用指针来操作 动态内存。指针远比数组灵活,但也更危险。注意当数组作为函数的参数进行传递时,该数组自动退化为同类型的指针。new/delete 的功能完全覆盖了 malloc/free ,为什么 C+ 不把 malloc/free 淘 汰出局呢?这是因为 C+ 程序经常要调用 C 函数,而 C 程序只能用 mallo

3、c/free 管理动态内存。2,分配空间double (*point)3;point = new double count3;deletepoint;/ 正确的用法/*delete poi nt;/ 错误的用法=delete poi ntO*/3,UF_MODL_update();/ 使用 UF_MODL_edit 时用来刷新4 UF_UI_ONT_refresh (); / 刷新导航器头文件 #in elude UF_DISP_refresh(); / 去除临时文件#in elude 5调试工具1) ue1601 /显示消息对话框头文件:#include 用法1:char in f100;s

4、pri ntf(i nf, %f,);ue1601(i nf,1);用法2 : ue1601(,1);2)UF_UI_write_listing_window / 显示文本框头文件:#include ehar in f100;UF_UI_ope nisti ng_wi ndow();sprintf(inf, %, );UF_UI_write_listing_window(inf);6,隐藏中间过程#include UF_DISP_set_display(UF_DISP_SUPPRESS_DISPLAY); / 打开隐藏UF_DISP_set_display(UF_DISP_UNSUPPRESS

5、_DISPLAY); / 关闭隐藏返回录*第二章函数模板1, uc1600 /获取字符串头文件:#include int res = 0;in t le n = 0;char stri ng100=;res = uc1600( ,stri ng , &en ); /stri ng : In put / Outputif ( res = 5 | ( res= 3 & len 0 )else2, uc1603 /头文件:#include 用法1:char title 100=菜单;char items 3 38 = 选项 1,选项 2,选项 3; choice = uc1603(title, 0,

6、 items, 3);if (choice = 1 | choice = 2)UF_termi nate();elseif (choice =)用法2 :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_facestatic int init_proc_face( UF_UI_selection_p_t select, void* user_dat

7、a )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, nu ms, masks) = 0)return (UF_UI_SEL_SUCCESS);else return (UF_UI_SEL_FAILURE)头文件 2: init_proc_body static int in it_proc_body(UF_UI_selectio n_p_t s

8、elect, void* user_data)int nu m_triples = 1;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);elsereturn (UF_UI_SEL_FAILURE);4,UF_UI_select_with_single_dialo

9、g头文件: #include chartitle=;charcue = ;intresponse=0;doublecursor 3;tag_tface = NULL;tag_t view = NULL;title,if(!UF_CALL(UF_UI_select_with_si ngle_dialog( cue,UF_UI_SEL_SCOPE_NO_CHANGE, i ni t_proc_face, NULL,&resp onse,& face,cursor,&view)if (resp onse = UF_UI_OBJECT_SELECTED |resp onse = UF_UI_OBJEC

10、T_SELECTED_BY_NAME)printf(object tag = %dn, face);UF_DISP_set_highlight(face, 0);/ 关高亮5,UF_UI_select_with_class_dialog头文件:#include void class_sel_dlg(i nt *co un t,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, tit

11、le, 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; isel_count; i+)printf(object tag = %dn, sel_objectsi); UF_DISP_set_highlight(sel_o

12、bjectsi, 0);UF_free(objects);6,UF_MODL_delete_object_parms / 消参头文件:#in elude #i nclude uf_list_p_t obji st;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_

13、OBJ_delete_object();7,UF_CURVE_create_arc通过圆心,半径画圆头文件:#include #include 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_

14、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 9, name开关int n ame_status ;UF_DISP_ask_ name_display_status(&n ame_status); if (n ame_status=UF_DIS

15、P_NAME_DISPLAY_OFF )n ame_status=UF_DISP_NAME_DISPLAY_ON;elsen ame_status=UF_DISP_NAME_DISPLAY_OFF;UF_DISP_set_ name_display_status( name_status);10 , UF_OBJ_set_color(tag, color); / 设置颜色头文件 #i nclude 11, UF_OBJ_set_layer (tag,layer); / 设置层头文件 #i nclude 12, UF_CALL头文件 #in clude int UF_CALL ( int err

16、orCode )if ( errorCode )char message 133 = ;UF_get_fail_message( errorCode, message ); uc1601 ( message, 1);return (errorCode);13, UF_PART_ask_display_part头文件 #include tag_t part = UF_PART_ask_display_part ( );if ( NULL = part )uc1601( , 1 );return;14, UF_OPER_create头文件 #i nclude tag_t Oper_id = NUL

17、L;UF_OPER_create ( mill_co ntour, ZLEVEL_PROFILE_YBC, & GZM_Oper_id );返回目录*15 , UF_MODL_ask_face_data / 查询面的信息 头文件 #i nclude tag_t face;/ 面的 IDint type; /面的类型double box6;/x , y, z 向最大,最小值double radius;double rad_data;int norm_dir ;/ 法向UF_MODL_ask_face_data(face,& type,ce nter,dir,box,&radius,&rad_da

18、ta,&n orm_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 );返回目录*第三章功能模板1,制作对话框1)进入 User In terface Styler, 设计好对话框,将 Lau nch Dialo

19、g From 改为 Callback保存2)将生成的对话框文件放在模板文件夹下,以记事本格式打开 XX. _template.C文件,int *response )改为 extern int将 extern int options - directories,将 XX.h 所在的文件夹 包含进去。4)在 Templet.cpp 中加入 #include XX_template.c#include XX.h5)在程序内写入 int response;XXX (&response);点击 F7,编译成功。2,对话框求值,设值UF_STYLER_item_value_type_t value;val

20、ue.item_attr=UF_STYLER_VALUE;value.itemd=XXX; /在.h文件中定义的IDUF_STYLER_ask_value(dialog_id,&value); / 读值/*赋值到变量中,变量在.h文件中定义,根据对话框定义不同类型:real ,string ,strings ,integer , integers , real , reals*/XXX =value.value.real; /赋值value.itemd=XXX; /在.h文件中定义的IDvalue.count = 1 ; / 拉伸条移动UF_STYLER_set_value(dialog_id

21、,&value); / 设值UF_STYLER_free_value(&value); / 释放空间3,1),设置控件的激活状态UF_STYLER_item_value_type_t value;value.item_attr=UF_STYLER_SENSITIVITY; / 指定设置控件的激活状态value.itemd= XXX ; /在.h文件中定义的IDvalue.value.integer=FALSE; / FALSE为不激活,TRUE 为激活UF_STYLER_set_value(dialogd,&value);2),设置对话框是否能选择物体UF_UI_mask_t all_mask

22、 = UF_circle_type, 0, 0,UF_cyli nder_type, 0, 0,UF_li ne_type, 0, 0;UF_STYLER_item_value_type_t value; value.item_attr=UF_STYLER_SELECTION;value.itemd=UF_STYLER_DIALOGNDEX;UF_STYLER_ask_value(dialogdO,&value);UF_UI_set_sel_type(value.value.select ion,UF_UI_SEL_TYPE_INACTIVE_SELECTION );/ 不能选择/ UF_UI

23、_SEL_TYPE_SINGLE_SELECTIONUF_UI_SEL_TYPE_SINGLE_DESELECTION UF_UI_SEL_TYPE_ROBUST_SELECTION 能选择 UF_UI_SEL_TYPE_SINGLE_POSITION UF_UI_SEL_TYPE_RECTANGLE_POSITIONif ( ( UF_UI_set_sel_mask ( value.value.selectio n,UF_UI_SEL_MASK_CLEAR_AND_ENABLE_SPECIFIC, 2, all_mask ) return (UF_UI_CB_CONTINUE_DIALOG)

24、;2,查询选择物体UF_STYLER_item_value_type_t value; value.item_attr=UF_STYLER_SELECTION; value.itemd=UF_STYLER_DIALOGN DEX; UF_STYLER_ask_value(dialogd0,&value);UF_UI_ask_sel_object_list(value.value.selectio n,&coun t,&objects);4,求三面交点头文件返回目录*void change ( double AB 34, int line);void row_cha nge ( double A

25、B 34, i nt row);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

26、 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

27、 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 max)max = max_x;bj = i;返回目录*for ( int j = 0; j 4; j+)buffer = AB bjj;AB bjj = AB li nej;AB li nej = buffer;/初等行变换void row_cha nge ( double AB 34, i nt 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,筛选边界uf_loop_p_t loops_list=NULL;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1