UG二次开发模板.docx

上传人:b****6 文档编号:6530927 上传时间:2023-01-07 格式:DOCX 页数:34 大小:44.03KB
下载 相关 举报
UG二次开发模板.docx_第1页
第1页 / 共34页
UG二次开发模板.docx_第2页
第2页 / 共34页
UG二次开发模板.docx_第3页
第3页 / 共34页
UG二次开发模板.docx_第4页
第4页 / 共34页
UG二次开发模板.docx_第5页
第5页 / 共34页
点击查看更多>>
下载资源
资源描述

UG二次开发模板.docx

《UG二次开发模板.docx》由会员分享,可在线阅读,更多相关《UG二次开发模板.docx(34页珍藏版)》请在冰豆网上搜索。

UG二次开发模板.docx

UG二次开发模板

UG二次开发模板

 

•⑵

|

•⑷

(11)

|匚口」

(24)

第一章技巧规则第二章函数模板第三章功能模板第四章udop•…

注:

连接:

Ctrl+单击鼠标左键

第一章技巧规则

1,内存原则:

【规则1】用malloc或new申请内存之后,应该立即检查指针值是否为NULL。

防止使用指针值为NULL的内存。

【规则2】不要忘记为数组和动态内存赋初值。

防止将未被初始化的内存作为右值使用。

【规则3】避免数组或指针的下标越界,特别要当心发生“多1”或者“少1”操作。

【规则4】动态内存的申请与释放必须配对,防止内存泄漏。

【规则5】用free或delete释放了内存之后,立即将指针设置为NULL,防止产生“野指针”。

数组要么在静态存储区被创建(如全局数组),要么在栈上被创建。

数组名对应着(而不是指向)一块内存,其地址与容量在生命期内保持不变,只有数组的内容可以改变。

指针可以随时指向任意类型的内存块,它的特征是“可变”,所以我们常用指针来操作动态内存。

指针远比数组灵活,但也更危险。

注意当数组作为函数的参数进行传递时,该数组自动退化为同类型的指针。

new/delete的功能完全覆盖了malloc/free,为什么C++不把malloc/free淘汰出局呢?

这是因为C++程序经常要调用C函数,而C程序只能用malloc/free管理动态内存。

2,分配空间

double(*point)[3];

point=newdouble[count][3];

delete[]point;//正确的用法

/*deletepoint;//错误的用法=deletepoint[O]*/

3,

UF_MODL_update();//使用UF_MODL_edit时用来刷新

4UF_UI_ONT_refresh();//刷新导航器

头文件#inelude

UF_DISP_refresh();//去除临时文件

#inelude

5调试工具

1)ue1601//显示消息对话框

头文件:

#include

用法1:

charinf[100];

sprintf(inf,"%f",);

ue1601(inf,1);

用法2:

ue1601("",1);

2)UF_UI_write_listing_window//显示文本框

头文件:

#include

eharinf[100];

UF_UI_open」isting_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

intres=0;

intlen=0;

charstring[100]="";

res=uc1600("",string,&en);//string:

Input/Output

if(res==5||(res==3&&len>0))

{

}

else

{

}

2,uc1603//

头文件:

#include

用法1:

chartitle[100]="

菜单";

 

charitems[3][38]={"选项1","选项2","选项3"};choice=uc1603(title,0,items,3);

if(choice==1||choice==2)

{

UF_terminate();

}

else

{

if(choice==)

{

}

}

用法2:

charitems[3][38]={"选项1","选项2","选项3"};

response=uc1603("菜单",0,items,3);

switch(response)

{

case1:

case2:

break;

case4:

case5:

}

3,选择对话框头文件

头文件1:

init_proc_face

staticintinit_proc_face(UF_UI_selection_p_tselect,void*user_data)

{

intnums=1;

UF_UI_mask_tmasks[]={

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_bodystaticintinit_proc_body(UF_UI_selection_p_tselect,void*user_data)

{

intnum_triples=1;

UF_UI_SEL_FEATURE_BODY};

/*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);

}

}

4,UF_UI_select_with_single_dialog

头文件:

#include

char

title[]="";

char

cue[]="";

int

response=0;

double

cursor[3];

tag_t

face=NULL;

tag_tview=NULL;

title,

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("objecttag=%d\n",face);

}

UF_DISP_set_highlight(face,0);//关高亮

}

5,UF_UI_select_with_class_dialog

头文件:

#include

voidclass_sel_dlg(int*count,tag_p_t*objects)

{

charcue[]="";

chartitle[]=""intresponse,sel_count,i;

tag_p_tsel_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("objectcount=%d\n",sel_count);

if(response==UF_UI_OK&&sel_count>0)

{

*objects=sel_objects;

*count=sel_count;

for(i=0;i

{

printf("objecttag=%d\n",sel_objects[i]);UF_DISP_set_highlight(sel_objects[i],0);

}

UF_free(objects);

}

6,UF_MODL_delete_object_parms//消参

头文件:

#inelude

#include

uf_list_p_tobj」ist;

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,UF_CURVE_create_arc〃通过圆心,半径画圆

头文件:

#include

#include

tag_tarc,wcs_tag;

UF_CSYS_ask_wcs(&wcs_tag);

UF_CURVE_arc_tarc_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_center[0]=center[0];//

arc_coords.arc_center[1]=center[1];//

arc_coords.arc_center[2]=center[2];//arc_coords.radius=500;

UF_CURVE_create_arc(&arc_coords,&arc_id);

8,UF_OBJ_set_name(tag,name);//设置名字

头文件#include

9,name开关

intname_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);//设置颜色

头文件#include

11,UF_OBJ_set_layer(tag,layer);//设置层

头文件#include

12,UF_CALL

头文件#include

intUF_CALL(interrorCode)

{

if(errorCode)

{

charmessage[133]="";

UF_get_fail_message(errorCode,message);uc1601(message,1);

}

return(errorCode);

}

13,UF_PART_ask_display_part

头文件#includetag_tpart=UF_PART_ask_display_part();

if(NULL==part)

{

uc1601("",1);

return;

14,UF_OPER_create

头文件#include

tag_tOper_id=NULL;

UF_OPER_create("mill_contour","ZLEVEL_PROFILE_YBC",&GZM_Oper_id);

返回目录*

15,UF_MODL_ask_face_data//查询面的信息头文件#include

tag_tface;//面的ID

inttype;//面的类型

doublebox[6];//x,y,z向最大,最小值

doubleradius;

doublerad_data;

intnorm_dir;//法向

UF_MODL_ask_face_data(face,&type,center,

dir,box,&radius,&rad_data,&norm_dir);

16,UF_MODL_ask_minimum_dist_2//查询两物体间距离

doubledis,accuracy;//accuracy:

准确度

doublepoint1[3]={0};

doublepoint2[3]={0};

UF_CALL(UF_MODL_ask_minimum_dist_2(obj1,obj2,0,NULL,0,NULL,

&dis,point1,point1,&accuracy));

 

返回目录*

第三章功能模板

1,制作对话框

1)进入UserInterfaceStyler,设计好对话框,将LaunchDialogFrom改为Callback

保存

2)将生成的对话框文件放在模板文件夹下,以记事本格式打开XX._template.C文件,

int*response)改为externint

将externint

XXX(int*response)后保存。

3)打开VC的Templet,依次点击Tools->options->directories,将XX.h所在的文件夹包含进去。

4)在Templet.cpp中加入#include"XX_template.c"

#include"XX.h"

5)在程序内写入intresponse;

XXX(&response);点击F7,编译成功。

2,对话框求值,设值

UF_STYLER_item_value_type_tvalue;

value.item_attr=UF_STYLER_VALUE;

value.item」d=XXX;//在.h文件中定义的ID

UF_STYLER_ask_value(dialog_id,&value);//读值

/*赋值到变量中,变量在.h文件中定义,根据对话框定义不同类型:

real,string,strings,

integer,integers,real,reals*/

XXX=value.value.real;//赋值

value.item」d=XXX;//在.h文件中定义的ID

value.count=1;//拉伸条移动

UF_STYLER_set_value(dialog_id,&value);//设值

UF_STYLER_free_value(&value);//释放空间

3,

1),设置控件的激活状态

UF_STYLER_item_value_type_tvalue;

value.item_attr=UF_STYLER_SENSITIVITY;//指定设置控件的激活状态

value.item」d=XXX;//在.h文件中定义的ID

value.value.integer=FALSE;//FALSE为不激活,TRUE为激活

UF_STYLER_set_value(dialog」d,&value);

2),设置对话框是否能选择物体

UF_UI_mask_tall_mask[]={

UF_circle_type,0,0,

UF_cylinder_type,0,0,

UF_line_type,0,0

};

UF_STYLER_item_value_type_tvalue;value.item_attr=UF_STYLER_SELECTION;

value.item」d=UF_STYLER_DIALOG」NDEX;

UF_STYLER_ask_value(dialog」dO,&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_tvalue;value.item_attr=UF_STYLER_SELECTION;value.item」d=UF_STYLER_DIALOG」NDEX;UF_STYLER_ask_value(dialog」d0,&value);

UF_UI_ask_sel_object_list(value.value.selection,&count,&objects);

4,求三面交点

头文件

返回目录*

voidchange(doubleAB[3][4],intline);

voidrow_change(doubleAB[3][4],introw);

doublexyz[3];///交点坐标

doubleAB[3][4]={{0,0,0,0},{0,0,0,0},{0,0,0,0}};

doubledot_product;

UF_VEC3_dot(dir,center,&dot_product);

AB[0][0]=dir[0];AB[0][1]=dir[1];

AB[0][2]=dir[2];AB[0][3]=dot_product;

doubledot_product1;

UF_VEC3_dot(dir1,center1,&dot_product1);

AB[1][0]=dir1[0];AB[1][1]=dir1[1];

AB[1][2]=dir1[2];AB[1][3]=dot_product1;

doubledot_product2;

UF_VEC3_dot(dir2,floor_center,&dot_product2);

AB[2][0]=dir2[0];AB[2][1]=dir2[1];

AB[2][2]=dir2[2];AB[2][3]=dot_product2;

for(intj=0;j<3;j++)

change(AB,j);

row_change(AB,j);

}

xyz[2]=AB[2][3];

xyz[1]=AB[1][3]-AB[1][2]*xyz[2];

xyz[0]=AB[0][3]-AB[0][2]*xyz[2]-AB[0][1]*xyz[1];

子函数:

voidchange(doubleAB[3][4],intline)

{

doublemax=0;

doublebuffer=0;

intbj=-1;

doublemax_x=0;

for(inti=line;i<3;i++)

{

max_x=fabs(AB[i][line]);

if(max_x>max)

max=max_x;

bj=i;

}

}

返回目录*

for(intj=0;j<4;j++)

{

buffer=AB[bj][j];

AB[bj][j]=AB[line][j];

AB[line][j]=buffer;

}

}

//初等行变换

voidrow_change(doubleAB[3][4],introw)

{

for(intj=row;j<3;j++)

{

doubledivisor=AB[j][row];

if(0!

=divisor)

for(inti=row;i<4;i++){

AB[j][i]=AB[j][i]/divisor;

}

}

}

for(intk=(row+1);k<3;k++)

{

if(0!

=AB[k][row])

{

for(intl=0;l<4;l++)

{

AB[k][l]=AB[k][l]-AB[row][l];

}

}

}

}

5,筛选边界

uf_loop_p_tloops_list=NULL;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

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

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