UG二次开发模板.docx
《UG二次开发模板.docx》由会员分享,可在线阅读,更多相关《UG二次开发模板.docx(40页珍藏版)》请在冰豆网上搜索。
UG二次开发模板
UG二次开发模板
第一章技巧规则
(2)
第二章函数模板(4)
第三章功能模板(11)
第四章udop(24)
注:
连接:
Ctrl+单击鼠标左键
第一章技巧规则
1,存原则:
【规则1】用malloc或new申请存之后,应该立即检查指针值是否为NULL。
防止使用指针值为NULL的存。
【规则2】不要忘记为数组和动态存赋初值。
防止将未被初始化的存作为右
值使用。
【规则3】避免数组或指针的下标越界,特别要当心发生“多1”或者“少1”
操作。
【规则4】动态存的申请与释放必须配对,防止存泄漏。
【规则5】用free或delete释放了存之后,立即将指针设置为NULL,防止产
生“野指针”。
2,
数组要么在静态存储区被创建(如全局数组),要么在栈上被创建。
数组名对应着(而不是指向)一块存,其地址与容量在生命期保持不变,只有数组的容可以改变。
指针可以随时指向任意类型的存块,它的特征是“可变”,所以我们常用指针来操作动态存。
指针远比数组灵活,但也更危险。
注意当数组作为函数的参数进行传递时,该数组自动退化为同类型的指针。
new/delete的功能完全覆盖了malloc/free,为什么C++不把malloc/free淘
汰出局呢?
这是因为C++程序经常要调用C函数,而C程序只能用malloc/free管理动态存。
2,分配空间
double(*point)[3];
point=newdouble[count][3];
delete[]point;//正确的用法
/*deletepoint;//错误的用法=deletepoint[0]*/
3,
UF_MODL_update();//使用UF_MODL_edit时用来刷新
4UF_UI_ONT_refresh();//刷新导航器
头文件#include
UF_DISP_refresh();//去除临时文件
#include
5调试工具
1)uc1601//显示消息对话框
头文件:
#include
用法1:
charinf[100];
sprintf(inf,"%f",);
uc1601(inf,1);
用法2:
uc1601("",1);
2)UF_UI_write_listing_window//显示文本框
头文件:
#include
charinf[100];
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
intres=0;
intlen=0;
charstring[100]="";
res=uc1600("",string,&len);//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_body
staticintinit_proc_body(UF_UI_selection_p_tselect,void*user_data)
{
intnum_triples=1;
UF_UI_mask_tmask_triples[]={UF_solid_type,0,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
chartitle[]="";
charcue[]="";
intresponse=0;
doublecursor[3];
tag_tface=NULL;
tag_tview=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==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//消参
头文件:
#include
#include
uf_list_p_tobj_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_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];//