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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

UG二次开发模板.docx

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

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

3、= new doublecount3;deletepoint;/正确的用法/*delete point;/错误的用法delete point0*/3, UF_MODL_update();/使用UF_MODL_edit时用来刷新4 UF_UI_ONT_refresh ();/刷新导航器头文件#include UF_DISP_refresh();/去除临时文件#include 5 调试工具 1)uc1601 /显示消息对话框头文件:#include 用法1: char inf100; sprintf(inf, %f,); uc1601(inf,1);用法2:uc1601(,1);2)UF_UI_w

4、rite_listing_window /显示文本框头文件:#include char inf100; UF_UI_open_listing_window(); 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_DISPLAY); /关闭隐藏第二章 函数模板1, uc1600 /获取字符串头文件:#include int res =

5、 0; int len = 0; char string100=; res = uc1600( ,string , &len );/string:Input / Output if ( res = 5 | ( res= 3 & len 0 ) ) else 2, uc1603 /头文件:#include 用法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

6、(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_data ) int nums = 1; UF_UI_mask_t masks = UF_solid_type, 0,

7、 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_bodystatic int init_proc_body(UF_UI_selection_p_t select, void* user_data) int num_triples = 1; UF_UI_ma

8、sk_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_dial

9、og头文件:#include 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, title, UF_UI_SEL_SCOPE_NO_CHANGE, init_proc_face, NULL, &response,&face,cursor ,&view) if (response = UF_UI_OBJECT_SELECTED | response = U

10、F_UI_OBJECT_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(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_cla

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

12、DISP_set_highlight(sel_objectsi, 0); UF_free(objects); 6,UF_MODL_delete_object_parms/消参头文件:#include #include 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_M

13、ODL_delete_list(&obj_list); UF_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.e

14、nd_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 9,name开关 int name_status ; UF_DISP_ask_name_display_status

15、(&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); /设置颜色头文件#include 11,UF_OBJ_set_layer (tag,layer); /设置层头文件#include 12,UF_CALL头文件#in

16、clude 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 tag_t part = UF_PART_ask_display_part ( ); if ( NULL = part ) uc1601( , 1 ); return; 14, UF_OPER_creat

17、e头文件#include tag_t Oper_id = NULL; UF_OPER_create ( mill_contour, ZLEVEL_PROFILE_YBC, &GZM_Oper_id );15,UF_MODL_ask_face_data/查询面的信息 头文件#include 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,b

18、ox,&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 );第三章 功能模板1,制作对话框1)进入User Interface Styler,设计好对话框,将Launch

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

20、,对话框求值,设值UF_STYLER_item_value_type_t value;value.item_attr=UF_STYLER_VALUE;value.item_id=XXX; /在.h文件中定义的IDUF_STYLER_ask_value(dialog_id,&value); /读值/*赋值到变量中,变量在.h文件中定义,根据对话框定义不同类型:real,string,strings, integer , integers , real, reals*/XXX =value.value.real;/赋值value.item_id=XXX; /在.h文件中定义的IDvalue.cou

21、nt1;/拉伸条移动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文件中定义的IDvalue.value.integer=FALSE; / FALSE为不激活,TRUE为激活UF_STYLER_set_value(dialog_id,&value

22、);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_

23、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_SPECIFI

24、C, 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

25、 ( double AB 34, int line);void row_change ( double AB 34, int 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 ( di

26、r1, 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 max) max = max_x; bj = i; for ( int j = 0; j 4; j+) buffer = AB

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

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