NX二次开发习题及源码_第1页
NX二次开发习题及源码_第2页
NX二次开发习题及源码_第3页
NX二次开发习题及源码_第4页
NX二次开发习题及源码_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本文格式为Word版,下载可任意编辑——NX二次开发习题及源码浅溪水整理

1、创立NXhello界面代码:

#include//包含UF_initialize()和UF_terminate()函数原型的头文件#include//包含uc1601()函数原型的头文件

externvoidufusr(char*param,int*retcode,intparam_len){

if(UF_initialize()!=0)//获取NXopenapi的执行权限{return;}}

uc1601(\弹出消息窗口,显示“HelloNX〞UF_terminate();//释放NXOPENAPI的执行权限

运行结果截图:

2、创立一个模型,并在信息窗口显示模型的tag值。

代码:

#include#include#include#include#include#include

staticvoiddo_ugopen_api(void){typedefunsignedinttag_t;

浅溪水整理

*/}

UF_FEATURE_SIGNsign=UF_NULLSIGN;//无布尔运算doublecyl_orig[3]={0,0,0};//圆柱的圆心坐标char*cyl_height=\char*cyl_diam=\

doubledirection[3]={0,0,1};//延Z轴正方向tag_tobj=NULL_TAG;

UF_MODL_create_cyl1(sign,cyl_orig,cyl_height,cyl_diam,direction,UF_UI_open_listing_window();//显示信息框:tag

/*Returnsthetagofthecurrentdisplaypart.Inanon-assemblypart,thisisthe

sameastheworkpart.Iftherecurrentlyisn'tadisplayedpart,aNULL_TAGisreturned.

obj=UF_PART_ask_display_part();

if(obj==NULL_TAG)//没有部件的时候显示的信息提醒框{}else{}

chars[10];

sprintf(s,\功能:把格式化的数据写入某个字符串UF_UI_write_listing_window(s);return;

uc1601(\当前没有任何文件可供操作!\

externvoidufusr(char*param,int*retcode,intrlen)//提供入口点{}

externintufusr_ask_unload(void){}

return(UF_UNLOAD_IMMEDIATELY);if((UF_initialize())!=0)

return;do_ugopen_api();UF_terminate();return;

运行结果截图:(1)无部件时的输出

浅溪水整理

(2)有部件时的输出结果

3、openpart用户入口实例创立openpartuserexit

在用户点击“open〞时创立新部件,在其中创立sphere详细说明userexit设置文件过程代码如下:

浅溪水整理

#include#include#include#include#include#include#include

#defineUF_CALL(X)(report(__FILE__,__LINE__,#X,(X)))

staticintreport(char*file,intline,char*call,intirc){}

staticvoiddo_ugopen_api(void){}

externvoidufusr(char*param,int*retcode,intparamLen){if(!UF_CALL(UF_initialize())){

do_ugopen_api();

doublecenter[3]={0,0,0};//球心坐标char*diam=\intunits=1;

uc1601(\创立直径为100的球\

UF_PART_new(part_name,units,//在当前的会话框中创立新的part,并把其作为工作//试比较下面两个函数

UF_MODL_create_sphere(sign,part,center,diam,//UF_MODL_create_sphere1(sign,center,diam,

UF_FEATURE_SIGNsign=UF_NULLSIGN;

tag_tpart=null_tag;//假使没有赋值的话,直接就是\part\,当你执行.dll文件时,就charpart_name[13]=\设置part名字以及存储路径if(irc){}

return(irc);

charmessg[133];

printf(\(UF_get_fail_message(irc,messg))?printf(\

printf(\

直接跑到建模环境了,没有信息提醒框。当然你可以多申明几个tag_t

部件

浅溪水整理

}

UF_CALL(UF_terminate());

}

externintufusr_ask_unload(void){}

return(UF_UNLOAD_IMMEDIATELY);

运行结果截图:

4、创立一个block,并指定某一特定面高亮显示。

浅溪水整理

代码如下图:

#include#include#include#include#include#include#include

#defineUF_CALL(X)(report(__FILE__,__LINE__,#X,(X)))staticintreport(char*file,intline,char*call,intirc){}

staticvoiddo_ugopen_api(void){

uf_list_p_tface_list;//链表

UF_MODL_create_list(//创立链表

UF_MODL_ask_feat_faces(blk_feat,//获取实体的个表面特征,并放入链表中intcount=0;

UF_MODL_ask_list_count(face_list,for(inti=0;i#include#include#include#include#include#include#include

#defineUF_CALL(X)(report(__FILE__,__LINE__,#X,(X)))staticintreport(char*file,intline,char*call,intirc){}

staticvoiddo_ugopen_api(void){件

if(blk_feat==NULL_TAG){}

uc1601(\当前没有任何文件可供操作!\

UF_CALL(UF_MODL_create_block1(sign,center,edge_len,uc1601(\创立一个block,并显示每个面的tag\

UF_PART_new(part_name,units,//在当前会话窗口中创立一个part,并使其成为工作部char*part_name=\intunits=1;

tag_tpart=NULL_TAG;

UF_FEATURE_SIGNsign=UF_NULLSIGN;doublecenter[3]={0,0,0};

char*edge_len[3]={\tag_tblk_feat=null_tag;if(irc){}

return(irc);

charmessg[133];

printf(\(UF_get_fail_message(irc,messg))?

printf(\printf(\

浅溪水整理

}

else{}

inttype=70;intsubtype=2;tag_tobj=null_tag;

tag_tdisplay_part=UF_PART_ask_display_part();UF_OBJ_cycle_objs_in_part(display_part,70,while(obj!=null_tag){}

UF_OBJ_ask_type_and_subtype(obj,//返回一个被标记的对象的对UF_OBJ_cycle_objs_in_part(display_part,UF_solid_type,//查询遍历对象if(subtype==UF_solid_face_subtype){}

chars[50];

sprintf(s,\

UF_CALL(UF_UI_open_listing_window());UF_CALL(UF_UI_write_listing_window(s));UF_CALL(UF_UI_write_listing_window(\

象类型和子类型

voidufusr(char*param,int*retcode,intparamLen){}

intufusr_ask_unload(void){}

return(UF_UNLOAD_IMMEDIATELY);if(!UF_CALL(UF_initialize())){}

do_ugopen_api();

UF_CALL(UF_terminate());

运行结果截屏:

浅溪水整理

6、遍历当前part中所有features,输出其类型至listingwindow,UF_MODL_ask_feat_type()代码如下:

#include#include#include#include#include#include

浅溪水整理

#defineUF_CALL(X)(report(__FILE__,__LINE__,#X,(X)))staticintreport(char*file,intline,char*call,intirc){}

staticvoiddo_ugopen_api(void){

intcount=0;char*solid_feature;tag_tfound=NULL_TAG;

tag_tdisplay_part=UF_PART_ask_display_part();

UF_UI_open_listing_window();

UF_OBJ_cycle_objs_in_part(display_part,UF_feature_type,while(found!=NULL_TAG){}

count++;

UF_CALL(UF_MODL_ask_feat_type(found,//获取输入的特征的类型UF_CALL(UF_UI_write_listing_window(\:\UF_CALL(UF_UI_write_listing_window(solid_feature));UF_CALL(UF_UI_write_listing_window(\

UF_CALL(UF_OBJ_cycle_objs_in_part(display_part,UF_feature_type,char*part_name=\

UF_FEATURE_SIGNsign=UF_NULLSIGN;tag_tpart=null_tag;

doublecenter[3]={0,0,0};char*diam=\intunits=1;

uc1601(\创立直径为100的球,并显示其实体特征。\

UF_PART_new(part_name,units,//在当前的会话框中创立新的part,并把其作为工UF_MODL_create_sphere1(sign,center,diam,if(irc){}

return(irc);

charmessg[133];

printf(\(UF_get_fail_message(irc,messg))?

printf(\

printf(\

作部件

浅溪水整理

}

externvoidufusr(char*param,int*retcode,intparamLen){}

externintufusr_ask_unload(void){}

return(UF_UNLOAD_IMMEDIATELY);if(!UF_CALL(UF_initialize())){}

do_ugopen_api();

UF_CALL(UF_terminate());

运行结果截屏:

浅溪水整理

6、创立人机交互界面新建圆柱体,并可以随意选择原点和矢量方向。代码如下:

#include#include#include#include#include#include#include#include#include#include#include

#include\

#defineCHANGE_CB_COUNT(3+1)/*Add1fortheterminator*/tag_tblk_tag=null_tag;

char*part_name=\intunits=1;

doubleblk_orig[]={0,0,0};doubledirection[3];

浅溪水整理

staticUF_STYLER_callback_info_tCHANGE_cbs[CHANGE_CB_COUNT]={

{UF_STYLER_DIALOG_INDEX,UF_STYLER_APPLY_CB,0,CHANGE_apply_cb},{CHANGE_ACTION_2,UF_STYLER_ACTIVATE_CB,1,CHANGE_action_2_act_cb},{CHANGE_ACTION_3,UF_STYLER_ACTIVATE_CB,1,CHANGE_action_3_act_cb},{UF_STYLER_NULL_OBJECT,UF_STYLER_NO_CB,0,0}};

staticUF_MB_styler_actions_tactions[]={

{\{NULL,NULL,NULL,0}/*ThisisaNULLterminatedlist*/};

staticintinit_proc(UF_UI_selection_p_tselect,void*user_data);externvoidufusr(char*param,int*retcode,intrlen){

uc1601(\创立一个圆柱,并指明原点和矢量\UF_PART_new(part_name,units,intresponse=0;interror_code=0;

if((UF_initialize())!=0)return;

if((error_code=UF_STYLER_create_dialog(\CHANGE_cbs,/*Callbacksfromdialog*/CHANGE_CB_COUNT,/*numberofcallbacks*/NULL,/*Thisisyourclientdata*/

/*Gettheuserfunctionfailmessagebasedonthefailcode.*/UF_get_fail_message(error_code,fail_message);UF_UI_set_status(fail_message);printf(\}

UF_terminate();return;}

浅溪水整理

externintufusr_ask_unload(void){

return(UF_UNLOAD_IMMEDIATELY);}

externvoidufusr_cleanup(void){

return;}

intCHANGE_apply_cb(intdialog_id,void*client_data,UF_STYLER_item_value_type_p_tcallback_data){

if(UF_initialize()!=0)

return(UF_UI_CB_CONTINUE_DIALOG);

//直径的相关参数

UF_FEATURE_SIGNsign=UF_NULLSIGN;//tag_tblk_tag=null_tag;UF_STYLER_item_value_type_tdata;data.item_id=\

data.item_attr=UF_STYLER_VALUE;data.indicator=UF_STYLER_REAL_VALUE;

UF_STYLER_ask_value(dialog_id,//用来查询对话框控件的属性值。chardiameter[133];

sprintf(diameter,\//高度的相关参数

data.item_id=\

data.item_attr=UF_STYLER_VALUE;data.indicator=UF_STYLER_REAL_VALUE;UF_STYLER_ask_value(dialog_id,charheight[133];

sprintf(height,\

浅溪水整理

//UF_PART_new(part_name,units,

UF_MODL_create_cyl1(sign,blk_orig,diameter,height,direction,UF_STYLER_free_value(//释放字符串或数组申请的内存UF_STYLER_ask_value(dialog_id,UF_MODL_update();

UF_STYLER_free_value(UF_terminate();

return(UF_UI_CB_CONTINUE_DIALOG);}

//选择圆柱中心点,选用点构造器UF_UI_point_construct()intCHANGE_action_2_act_cb

(

int

client_data,UF_STYLER_item_value_type_p_tcallback_data)

{

if(UF_initialize()!=0)

return(UF_UI_CB_CONTINUE_DIALOG);char*cue=\点构造器\

UF_UI_POINT_base_method_tmethod=UF_UI_POINT_INFERRED;tag_tpoint_tag=NULL_TAG;//doublesBasePoint[3];;intresponse;

interror=UF_UI_point_construct(cue,

UF_terminate();

return(UF_UI_CB_CONTINUE_DIALOG);}

//选择圆柱方向(拾取向量对话框)intCHANGE_action_3_act_cb

(

int

client_data,UF_STYLER_item_value_type_p_tcallback_data)

{

dialog_id,void

dialog_id,void

*

*

浅溪水整理

if(UF_initialize()!=0)

return(UF_UI_CB_CONTINUE_DIALOG);

doublevec[3],pnt[3];

intmode=UF_UI_ZC_AXIS;//默认矢量方向

intdisp_flag=UF_UI_DISP_NO_VECTOR;//显示临时坐标,是比较UF_UI_DISP_NO_VECTORintresponse=0;intifail;

UF_initialize();

ifail=UF_UI_specify_vector(\选择一个矢量\

if(ifail!=0||response!=UF_UI_OK)printf(\else

printf(\pnt[0],pnt[1],pnt[2],vec[0],vec[1],vec[2]);

fflush(stdout);UF_terminate();//doubledirection[3];for(inti=0;i

浅溪水整理

浅溪水整理

7、(1)新建一个对象,选择对象的面,返回这个面的tag值。代码如下:

#include#include#include#include

浅溪水整理

#include

staticintsel_init_proc(UF_UI_selection_p_tselect,void*user_data);#defineUF_CALL(X)(report(__FILE__,__LINE__,#X,(X)))staticintreport(char*file,intline,char*call,intirc){

if(irc){

charmessg[133];

printf(\(UF_get_fail_message(irc,messg))?printf(\

printf(\}

return(irc);}

staticvoiddo_ugopen_api(void){

//类选择对话框相关变量charcue[]=\chartitle[]=\intscope=UF_UI_SEL_SCOPE_NO_CHANGE;

if((UF_CALL(UF_UI_select_with_class_dialog(

cue,title,scope,sel_init_proc,NULL,i#include#include#include

浅溪水整理

#include#include#include#include#include#include#include

#include%usingnamespacestd;

#defineCHANGE_CB_COUNT(3+1)/*Add1fortheterminator*/charprompt_string[133]=\请选取文本文件\chartitle_string[133]=\选取文本文件\charfilter_string[133]=\文本文件\chardefault_name[133]=\charfilename[133];intresponse=0;

staticUF_STYLER_callback_info_tCHANGE_cbs[CHANGE_CB_COUNT]={

{UF_STYLER_DIALOG_INDEX,UF_STYLER_APPLY_CB,0,CHANGE_apply_cb},{CHANGE_ACTION_1,UF_STYLER_ACTIVATE_CB,1,CHANGE_action_1_act_cb},{CHANGE_ACTION_2,UF_STYLER_ACTIVATE_CB,1,CHANGE_action_2_act_cb},{UF_STYLER_NULL_OBJECT,UF_STYLER_NO_CB,0,0}};

staticUF_MB_styler_actions_tactions[]={

{\{NULL,NULL,NULL,0}/*ThisisaNULLterminatedlist*/};

externvoidufusr(char*param,int*retcode,intrlen){

intresponse=0;interror_code=0;

if((UF_initialize())!=0)return;

if((error_code=UF_STYLER_create_dialog(\CHANGE_cbs,/*Callbacksfromdialog*/CHANGE_CB_COUNT,/*numberofcallbacks*/NULL,/*Thisisyourclientdata*/

/*Gettheuserfunctionfailmessagebasedonthefailcode.*/UF_get_fail_message(error_code,fail_message);UF_UI_set_status(fail_message);printf(\}

UF_terminate();return;}

externintufusr_ask_unload(void){

/*unloadimmediatelyafterapplicationexits*/return(UF_UNLOAD_IMMEDIATELY);

/*viatheunloadselectiondialog...*//*return(UF_UNLOAD_SEL_DIALOG);*//*whenUGterminates...*//*return(UF_UNLOAD_UG_TERMINATE);*/}

externvoidufusr_cleanup(void){

return;}

intCHANGE_apply_cb(intdialog_id,void*client_data,

UF_STYLER_item_value_type_p_tcallback_data){

/*MakesureUserFunctionisavailable.*/if(UF_initialize()!=0)

return(UF_UI_CB_CONTINUE_DIALOG);

/*Enteryourcallbackcodehere*/

UF_terminate();

/*Callbackacknowledged,donotterminatedialog*//*AreturnvalueofUF_UI_CB_EXIT_DIALOGwillnotbeaccepted*/

浅溪水整理

/*forthiscallbacktype.Youmustrespondtoyourapplybutton.*/return(UF_UI_CB_CONTINUE_DIALOG);}

intCHANGE_action_1_act_cb(intdialog_id,void*client_data,

UF_STYLER_item_value_type_p_tcallback_data){

/*MakesureUserFunctionisavailable.*/if(UF_initialize()!=0)

return(UF_UI_CB_CONTINUE_DIALOG);

/*Enteryourcallbackcodehere*/

UF_UI_create_filebox(prompt_string,title_string,filter_string,default_name,filename,

/*从文件中读信息*/interror;

fstreamfile1(filename);

char**file_contents=(char**)UF_allocate_memory(sizeof(char*)*16,inti=0;

while(!file1.eof()){

file_contents[i]=(char*)UF_allocate_memory(MAX_LINE_SIZE+1,file1>>file_contents[i];

UF_UI_write_listing_window(file_contents[i]);UF_UI_write_listing_window(\i++;}

UF_STYLER_item_value_type_tdata;data.item_id=\

data.item_attr=UF_STYLER_VALUE;

data.indicator=UF_STYLER_STRING_PTR_VALUE;data.count=i;

data.value.strings=file_contents;UF_STYLER_set_value(dialog_id,UF_STYLER_free_value(file1.close();

UF_terminate();

浅溪水整理

/*Callbackacknowledged,donotterminatedialog*/return(UF_UI_CB_CONTINUE_DIALOG);

/*orCallbackacknowledged,terminatedialog.*//*return(UF_UI_CB_EXIT_DIALOG);*/}

intCHANGE_action_2_act_cb(intdialog_id,void*client_data,

UF_STYLER_item_value_type_p_tcallback_data){

/*MakesureUserFunctionisavailable.*/if(UF_initialize()!=0)

return(UF_UI_CB_CONTINUE_DIALOG);

/*Enteryourcallbackcodehere*/

UF_STYLER_item_value_type_tdata;data.item_id=\

data.item_attr=UF_STYLER_VALUE;UF_STYLER_ask_value(dialog_id,charprompt_string[]=\chartitle_string[]=\

charfilter_string[UF_CFI_MAX_PATH_NAME_SIZE+1]=\chardefault_name[133]=\

charfilename[UF_CFI_MAX_PATH_NAME_SIZE];intresponse;

interror=UF_UI_create_filebox(prompt_string,{}

fstreamfile2(filename);for(inti=0;i#include#include

#defineUF_CALL(X)(report(__FILE__,__LINE__,#X,(X)))staticintreport(char*file,intline,char*call,intirc){

if(irc){

charmessg[133];

printf(\(UF_get_fail_message(irc,messg))?printf(\

printf(\}

return(irc);}

staticvoiddo_ugopen_api(void){

//相关知识在P76

charmessage[]=\点收集器\logicalcoincident_points=TRUE;UF_UI_chained_points_p_tpoints;intcount;intresponse;

UF_UI_select_point_collection(message,coincident_points,

浅溪水整理

charstr[133];

for(inti=0;i#include#include#include#include#include#include#include

#include

staticintinit_proc(UF_UI_selection_p_tselect,void*user_data);

#defineUF_CALL(X)(report(__FILE__,__LINE__,#X,(X)))staticintreport(char*file,intline,char*call,intirc){

if(irc){

charmessg[133];

printf(\(UF_get_fail_message(irc,messg))?printf(\

浅溪水整理

printf(\}

return(irc);}

staticvoiddo_ugopen_api(void){

//单对象选择对话框变量参数charcue[]=\单对象选择对话框\chartitle[]=\单对象选择对话框\

intiScope=UF_UI_SEL_SCOPE_NO_CHANGE;intresponse;tag_tview;

tag_txform=null_tag;tag_tfeature_tag;tag_texp_tag;

if(!UF_CALL(UF_UI_select_with_single_dialog(cue,title,iScope,init_proc,NULL,//创立一个测量长度的表达式

}

/*unhighlightselectedobject*/UF_DISP_set_highlight(object,0);}}

/*selectioninitializationprocedure*/

UF_CALL(UF_MODL_ask_exp_tag_value(exp_tag,//调用表达式的tag值UF_UI_open_listing_window();UF_UI_write_listing_window(buf);

sprintf(buf,\

charbuf[UF_UI_MAX_STRING_LEN+1];doublelength;tag_tobject;doublecursor[3];

浅溪水整理

staticintinit_proc(UF_UI_selection_p_tselect,void*user_data){

intnum_triples=1;//1代表对象的边

UF_UI_mask_tmask_triples[]={UF_solid_type,0,UF_UI_SEL_FEATURE_LINEAR_EDGE};/*enableonlylinesandedges*/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);}}

voidufusr(char*param,int*retcode,intparamLen){

if(!UF_CALL(UF_initialize())){

do_ugopen_api();

UF_CALL(UF_terminate());}}

intufusr_ask_unload(void){

return(UF_UNLOAD_IMMEDIATELY);}

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论