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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

基于NX平台的二次开发习题解答.docx

1、基于基于 NX 平台的二次开发习题解答平台的二次开发习题解答 基于 UG平台的二次开发 习题解答 工学院优集学院 二一年二月 基于 NX平台的二次开发课程习题解答 课程代码:22021021 学 时 数:32 适用专业:机械设计制造及其自动化 第 1章 二次开发应用初步 1、创建一个“Hello,你的”消息对话框。要求:利用 UG自带的向导创建二次开发工程项目;利用单按钮消息对话框(UC1601()创建“Hello”加你的。源程序:extern C DllExport void ufusr(char*parm,int*returnCode,int rlen)/*Initialize the A

2、PI environment*/int errorCode=UF_initialize();if(0=errorCode)/*TODO:Add your application code here*/uc1601(Hello,你的,1);/*Terminate the API environment*/errorCode=UF_terminate();/*Print out any error messages*/PrintErrorMessage(errorCode);第 2章 二次开发应用框架 1、创建圆柱体 要求:创建一个 Win32项目,并设置工程项目的属性,使其能够编译 UG二次开发

3、工程项目;创建基本体素特征圆柱体。源程序:#include#include#include#include static void do_ugopen_api(void)UF_FEATURE_SIGN sign=UF_NULLSIGN;double cyl_orig3=0.0,0.0,0.0;char*cyl_height=100;char*cyl_diam=100;double direction3=-1,0,0;tag_t cyl_obj;UF_MODL_create_cyl1(sign,cyl_orig,cyl_height,cyl_diam,direction,&cyl_obj);ex

4、tern void ufusr(char*param,int*retcode,int rlen)if(UF_initialize()!=0)return;do_ugopen_api();UF_terminate();return;extern int ufusr_ask_unload(void)return(UF_UNLOAD_IMMEDIATELY);extern void ufusr_cleanup(void)return;2、创建一个凸台 要求:凸台高 H为你的学号,下底面直径 B _diam 为高 h的两倍,上底面直径 T _diam与高 h 相等。源程序:#include#inclu

5、de#include#include static void create_block(void)UF_FEATURE_SIGN sign=UF_NULLSIGN;UF_FEATURE_SIGN sign1=UF_POSITIVE;double cone_orig3=0.0,0.0,20.0;char*height=“height=20.0”;char*diam2=“.0”,“.0”;double direction3=0.0,0.0,-1.0;tag_t cone_obj;UF_MODL_create_cone1(sign,cone_orig,height,diam,direction,&c

6、one_obj);extern void ufusr(char*param,int*retcode,int rlen)if(UF_initialize()!=0)return;create_block();UF_terminate();return;extern int ufusr_ask_unload(void)return(UF_UNLOAD_IMMEDIATELY);extern void ufusr_cleanup(void)return;第 3章 编程基础 1、创建一个垫圈 要求:采用表达式控制平垫圈的参数(建立垫圈,已知道 d2=d1/2;h=d1/4。要求在执行程序后 h=d1/

7、2);改变平垫圈颜色为红色。源程序:#include#include#include#include#include#define UF_CALL(X)(report(_FILE_,_LINE_,#X,(X)static int report(char*file,int line,char*call,int irc)if(irc)char messg133;printf(%s,line%d:%sn,file,line,call);(UF_get_fail_message(irc,messg)?printf(returned a%dn,irc):printf(returned error%d:%

8、sn,irc,messg);return(irc);static void create_gasket(void)UF_FEATURE_SIGN sign=UF_NULLSIGN;UF_FEATURE_SIGN sign1=UF_NEGATIVE;double origin3=0.0,0.0,0.0;double direction3=0.0,0.0,1.0;UF_MODL_create_exp(length=150);char*diam=length/3;char*diam1=length/5;char*height=length/75;char*height1=length/75;tag_

9、t cyl_obj;tag_t cyl_obj1;tag_t gasket_obj_id;UF_CALL(UF_MODL_create_cyl1(sign,origin,height,diam,direction,&cyl_obj);UF_CALL(UF_MODL_create_cyl1(sign1,origin,height1,diam1,direction,&cyl_obj1);uc1601(请按下 OK 键,实体的颜色将会变成红色,1);UF_MODL_ask_feat_body(cyl_obj1,&gasket_obj_id);UF_OBJ_set_color(gasket_obj_i

10、d,);/*ARGSUSED*/void ufusr(char*param,int*retcode,int paramLen)if(!UF_CALL(UF_initialize()create_gasket();UF_CALL(UF_terminate();int ufusr_ask_unload(void)return(UF_UNLOAD_IMMEDIATELY);2、创建表达式 要求:创建两个矩形块两点间的距离表达式,并为距离表达式重命名,最后将当前部件中的表达式输出到信息窗口中。源程序:#include#include#include#include#include#include#in

11、clude#include#include#include void ufusr(char*param,int*retcode,int param_len)if(!UF_initialize()/*定义 Block的参数*/double block_orig3=0.0,0.0,0.0;double block_orig13=5.0,5.0,5.0;char*block_len3=1,2,3;tag_t blk_obj,blk_obj1;/*定义表达式的参数*/char*string;tag_t*exps;int number_of_exps=0,i=0;char bufUF_UI_MAX_ST

12、RING_LEN+1;tag_t part,feat_tag,exp_tag,solid,solid_body2;int type,subtype;/*重命名距离表达式的参数*/char*exp_string,*lhs_str,*rhs_str;char*exp_name;tag_t exp1_tag;/*创建两个 Block*/UF_MODL_create_block1(UF_NULLSIGN,block_orig,block_len,&blk_obj);UF_MODL_create_block1(UF_NULLSIGN,block_orig1,block_len,&blk_obj1);UF

13、_UI_open_listing_window();/*找出所有的 Solid 实体*/if(part=UF_PART_ask_display_part()=NULL_TAG)UF_UI_write_listing_window(Failed to get part tagn);return;solid=NULL_TAG;while(i 2)type=UF_solid_type;UF_OBJ_cycle_objs_in_part(part,type,&solid);UF_OBJ_ask_type_and_subtype(solid,&type,&subtype);if(subtype=UF_s

14、olid_body_subtype)solid_bodyi+=solid;/*创建一个距离表达式*/UF_GEXP_create_distance(solid_body0,NULL_TAG,solid_body1,NULL_TAG,&feat_tag,&exp_tag);/*为距离表达式重新命名*/UF_MODL_ask_exp_tag_string(exp_tag,&exp_string);UF_MODL_dissect_exp_string(exp_string,&lhs_str,&rhs_str,&exp1_tag);UF_MODL_rename_exp(lhs_str,geo_exp)

15、;UF_free(exp_string);UF_free(lhs_str);UF_free(rhs_str);/*获取表达式的数量*/UF_MODL_ask_exps_of_part(part,&number_of_exps,&exps);sprintf(buf,当前部件文件一共有%d 个表达式。n,number_of_exps);UF_UI_write_listing_window(buf);UF_UI_write_listing_window(其中几何表达式为:n);/*获取距离表达式并显示在列表框中*/for(i=0;inumber_of_exps;i+)logical flag;UF_

16、MODL_is_geometric_expression(expsi,&flag);if(flag=TRUE)UF_MODL_ask_exp_tag_string(expsi,&string);sprintf(buf,距离表达式=%sn,string);UF_UI_write_listing_window(buf);UF_free(string);UF_free(exps);/*调整视图到合适的大小*/tag_t view_tag=NULL_TAG;UF_VIEW_ask_work_view(&view_tag);UF_VIEW_fit_view(view_tag,0.7);UF_UI_wri

17、te_listing_window(请打开部件导航器,选中DISTANCE_EXP(2),观察距离表达式。);/*保存部件文件*/UF_PART_save();UF_terminate();第 4章 用户界面开发技术 1、利用单选菜单列表对话框(UC1603()创建四个基本体素特征 要求:根据用户的不同选择,创建相应的基本体素特征;界面如下图所示。源程序:#include#include#include#include#include#include extern void ufusr(char*param,int*retcod,int param_len)/*对话框设置*/char*cp1=

18、请选择;int ip2=0;char cp3438=创建一个块(Block),创建一个圆柱(Cylinder),创建一个圆锥(Cone),创建一个球体(Sphere);int ip4=4;int value;tag_t view_tag=NULL_TAG;UF_FEATURE_SIGN sign=UF_NULLSIGN;/*Block的变量声明区*/double blk_corner 3 =0.0,0.0,0.0;char*blk_edge_len 3 =10.0,20.0,30.0;tag_t blk_obj_id;/*Cylinder的变量声明区*/double cyl_origin 3

19、=0.0,0.0,0.0;char*cyl_height=20.0;char*cyl_diam=10.0;double cyl_direction 3 =0.0,0.0,1.0;tag_t cyl_obj_id;/*Cone的变量声明区*/double cone_origin 3 =0.0,0.0,0.0;char*cone_height=20.0;char*cone_diam 2 =30.0,20.0;double cone_direction 3 =0.0,0.0,1.0;tag_t cone_obj_id;/*Sphere的变量声明区*/double sphere_center 3 =0

20、.0,0.0,0.0;char*sphere_diam=30.0;tag_t sphere_obj_id;if(!UF_initialize()/*显示菜单*/value=uc1603(cp1,ip2,cp3,ip4);switch(value)case 5:/*创建 Block(块)*/UF_MODL_create_block1(sign,blk_corner,blk_edge_len,&blk_obj_id);break;case 6:/*创建 Cylinder(圆柱)*/UF_MODL_create_cyl1(sign,cyl_origin,cyl_height,cyl_diam,cyl

21、_direction,&cyl_obj_id);break;case 7:/*创建 Cone(圆锥)*/UF_MODL_create_cone1(sign,cone_origin,cone_height,cone_diam,cone_direction,&cone_obj_id);break;case 8:/*创建 Sphere(球体)*/UF_MODL_create_sphere1(sign,sphere_center,sphere_diam,&sphere_obj_id);break;default:uc1601(发生了错误!,0);/*调整视图到合适的大小*/UF_VIEW_ask_wo

22、rk_view(&view_tag);UF_VIEW_fit_view(view_tag,0.7);/*保存文件*/UF_PART_save();UF_terminate();2、利用 UIStyler、Menu 等工具创建一个对话框来生成垫圈。要求:对话框通过菜单和工具条激活;平垫圈的尺寸由用户通过对话框输入,对话框如下图如示:源程序:(a)菜单文件 xx.men VERSION 120!-EDIT UG_GATEWAY_MAIN_MENUBAR TOP_MENU CASCADE_BUTTON CUSTOM_MYMENU LABEL 实例 END_OF_TOP_MENU MENU CUSTO

23、M_MYMENU BUTTON MAKE_GASKET LABEL 创建垫圈.ACTIONS DianQuan.dlg END_OF_MENU(b)工具条文件 xx.tbr TITLE 实例 VERSION 170!-BUTTON MAKE_GASKET LABEL 创建垫圈(c)主程序代码 int Z_ok_cb(int dialog_id,void*client_data,UF_STYLER_item_value_type_p_t callback_data)UF_STYLER_item_value_type_t date;UF_FEATURE_SIGN sign=UF_NULLSIGN;

24、double origin3=0.0,0.0,0.0;char height10;/厚度 char diam10;/外径 double direction3=0.0,0.0,1.0;tag_t cyl_obj_id;double location3=0.0,0.0,0.0;double hole_dir3=0.0,0.0,-1.0;char hole_diam10;/径 const char*angle=0;tag_t face_li;tag_t face_t1;tag_t hole_feat_id;uf_list_p_t face_list;/*Make sure User Function

25、 is available.*/if(UF_initialize()!=0)return(UF_UI_CB_CONTINUE_DIALOG);/*-Enter your callback code here-*/date.item_attr=UF_STYLER_VALUE;date.item_id=Z_REAL_IN;UF_STYLER_ask_value(dialog_id,&date);sprintf(hole_diam,%f,date.value.real);UF_STYLER_free_value(&date);date.item_attr=UF_STYLER_VALUE;date.i

26、tem_id=Z_REAL_OUT;UF_STYLER_ask_value(dialog_id,&date);sprintf(diam,%f,date.value.real);UF_STYLER_free_value(&date);date.item_attr=UF_STYLER_VALUE;date.item_id=Z_REAL_H;UF_STYLER_ask_value(dialog_id,&date);sprintf(height,%f,date.value.real);UF_STYLER_free_value(&date);UF_MODL_create_cyl1(sign,origin

27、,height,diam,direction,&cyl_obj_id);UF_MODL_ask_feat_faces(cyl_obj_id,&face_list);UF_MODL_ask_list_item(face_list,0,&face_li);UF_MODL_ask_list_item(face_list,1,&face_t1);UF_MODL_create_simple_hole(location,direction,hole_diam,height,angle,face_li,face_t1,&hole_feat_id);UF_terminate();/*Callback ackn

28、owledged,terminate dialog*/*It is STRONGLY recommended that you exit your*/*callback with UF_UI_CB_EXIT_DIALOG in a ok callback.*/*return(UF_UI_CB_EXIT_DIALOG);*/return(UF_UI_CB_EXIT_DIALOG);3、创建一个点收集器 要求:能够收集用户所选择的点,并在单击“OK”和“Yes”按钮后,将用户所选的点的坐标信息在 UG信息窗口中显示出来。源程序:void do_ugopen_api()char sMessage=点

29、收集器_朱佳乐;logical lCoincidentpoints=true;UF_UI_chained_points_p_t chained_points;int iCount;int iResponse;UF_UI_select_point_collection(sMessage,lCoincidentpoints,&chained_points,&iCount,&iResponse);char*str=new char100;if(iResponse=UF_UI_OK)UF_UI_open_listing_window();UF_UI_write_listing_window();UF_

30、UI_write_listing_window(X 坐标:);UF_UI_write_listing_window();UF_UI_write_listing_window(Y 坐标:);UF_UI_write_listing_window();UF_UI_write_listing_window(Z坐标:);UF_UI_write_listing_window(n);for(int i=1;i pt0,chained_points-pt1,chained_points-pt2);UF_UI_write_listing_window(str);UF_UI_write_listing_windo

31、w(n);chained_points+;delete str;第 5章 外部数据访问 1、访问外部 Excel 数据。要求:利用存贮在外部 Excel 中的数据创建圆柱。a b 50 10 50 30 50 50 源程序:#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#define UF_CALL(X)(report(_FILE_,_LINE_,#X,(X)static int report(char

32、*file,int line,char*call,int irc)if(irc)char sFailMessage133;UF_get_fail_message(irc,sFailMessage);char sWholeMessage256;sprintf(sWholeMessage,File Name:%snLine:%dnFunction:%snError Code:%dnMessage:%s,file,line,call,irc,sFailMessage);MessageBox(NULL,sWholeMessage,Error in Function,MB_OK|MB_ICONWARNI

33、NG|MB_SYSTEMMODAL);return(irc);static void error_return(char*msg)fprintf(stderr,n+ERROR:%s.nn,msg);exit(1);static void report_error(int result,char*alt_msg)char err_message200;int found=UF_get_fail_message(result,err_message);if(found!=0)error_return(alt_msg);else error_return(err_message);static void create_cyl(double origin_y,char*cyl_height,char*cyl_diam)UF_FEATURE_SIGN sign=UF_NULLSIGN;double

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

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