8UG二次开发实用教程 第八章.docx
《8UG二次开发实用教程 第八章.docx》由会员分享,可在线阅读,更多相关《8UG二次开发实用教程 第八章.docx(58页珍藏版)》请在冰豆网上搜索。
8UG二次开发实用教程第八章
第8章工程图
UG的制图模块(Drafting)为创建和管理工程图提供了一个综合的自动化工具组,使工程设计人员可以从UG三维实体模型得到完全相关的二维工程图,可生成与实体模型相关的尺寸标注,保证了工程图随着实体模型的改变而同步更新,制图模块可快速创建二维图的多个视图,包括正视图、轴测图、各种剖视图、辅助视图和局部放大视图等。
制图的一般过程如下:
进行制图的参数预设置,创建图纸,插入视图,插入符号,标注尺寸,插入表面粗糙度,文字注释、标题栏、明细栏和填写技术要求等。
本章介绍如何利用UF函数实现制图参数的预设置、创建图纸、插入和编辑视图、添加尺寸、辅助文本等相关的制图功能。
工程图的UF函数定义主要包含在头文件uf_drf.h和uf_draw.h中,其中在头文件uf_drf.h中主要包括制图的符号、标注、尺寸等函数的定义,在头文件uf_draw.h中主要包括制图时的创建及查询截面线和视图函数与类型的定义。
8.1工程图的设置
在创建工程图前,应预先设置工程图的有关参数。
工程图的参数预设置包括:
系统制图参数预设置,视图显示参数预设置,注释与符号预设置等内容。
在UG系统中可以从三个方面对工程图的应用参数进行预设置:
1.客户缺省文件。
通过ug_metric.def或ug_English.def文件预设置相应的参数,这部分内容通常由系统管理员按国标和企标统一标准来设定;
2.部件文件制图应用参数预设置。
在部件文件内预设置各种制图参数,这些设置将影响部件文件内所有制图对象,并且这些设置对部件文件的影响优先于客户缺省;
3.对部件文件内特定的对象进行参数预设置。
可改变个别制图对象的参数预设置,将影响指定的制图对象。
这些改变优先于客户缺省文件和部件文件制图应用参数预设置。
8.1.1制图参数预设置
UF提供四个函数用来查询和设置制图的所有参数,包括对部件文件和部件文件内特定的对象进行参数预查询和设置,它们包含在头文件uf_drf.h中。
表6.1制图参数预设置函数
函数名称
函数功能
UF_DRF_set_preferences
系统制图参数的预设置
UF_DRF_ask_preferences
查询当前系统制图参数的设置
UF_DRF_set_object_preferences
指定制图对象参数的预设置
UF_DRF_ask_object_preferences
通过制图对象标识获得制图对象的参数设置
对制图参数进行预设置的步骤如下:
1)利用查询制图参数的函数UF_DRF_ask_preferences()或UF_DRF_ask_object_preferences(),查询当前的制图参数;
2)修改当前不一致的制图参数;
3)利用设置制图参数的函数UF_DRF_set_preferences()或UF_DRF_set_preference()对制图参数进行预设置。
查询系统制图参数函数和设置制图参数函数参数相同,其中查询系统制图参数函数格式如下:
intUF_DRF_ask_preferences(
intmpi[100]//用于存储制图参数中的整型参数
doublempr[70]//用于存储制图参数中的实型参数
char*radius_value//半径符号字符串,最多可由6个字符组成,由于内部要求,该字符串必须分配内存为charradius_val[27]
char*diameter_value//直径符号字符串,最多可由6个字符组成,由于内部要求,该字符串必须分配内存为chardiameter_val[27]
)
函数可能的返回值为:
UF_DRF_NO_ERRORS表示没有错误
UF_DRF_crosshatch_file_not_found表示剖面线定义文件不存在
UF_DRF_INVALID_CROSSHATCH_FILE_FORMAT表示剖面线定义文件的格式不正确
?
?
设置制图参数函数UF_DRF_set_preferences()参数与查询制图参数函数相同,其可能的返回值除以上三个外还包括:
UF_DRF_material_definition_not_found表示没有定义材料
查询对象制图参数函数与查询系统制图参数函数只多了第一个参数tag_tdrf_object_tag用于指定对象标识,其它参数相同,函数可能的返回值为:
UF_DRF_NO_ERRORS表示没有错误
UF_DRF_NOT_DRAFTING_OBJECT表示指定对象不是制图对象
UF_DRF_crosshatch_file_not_found表示剖面线定义文件不存在
设置和查询对象制图参数函数参数相同,但可能的返回值除查询对象制图参数函数返回值还包括:
UF_DRF_invalid_object表示指定对象无效
UF_DRF_material_definition_not_found表示没有定义材料
UF_DRF_unable_to_create_crosshatching表示剖面线不能创建
8.1.2视图参数设置
UF函数允许用户控制视图的抑制和自动更新,并可以设置和查询视图的视图角、视图比例和视图状态等参数,与视图参数设置相关函数如表6.2所示,它们包含在头文件uf_draw.h中。
表6.2视图参数设置函数
函数名称
函数功能
UF_DRAW_set_auto_update
设置视图自动更新
UF_DRAW_ask_auto_update
查询关于视图自动更新的参数预设置值,TRUE表示视图自动更新;FALSE表示延时视图更新
UF_DRAW_set_suppress_view_updat
设置视图抑制更新
UF_DRAW_ask_suppress_view_update
查询系统的延长视图更新的参数值,如果系统参数为TRUE,则表示系统将延时视图更新
UF_DRAW_set_view_anchor
定义锚点。
锚点必须是一个全息点(smartpoint)。
UF_DRAW_ask_view_anchor
获得指定视图的锚点
UF_DRAW_set_view_angle
设置视图角为需要的值
UF_DRAW_ask_view_angle
获得指定视图的视图角
UF_DRAW_set_view_scale
设置视图比例为需要的值
UF_DRAW_ask_view_scale
查询指定视图的比例
UF_DRAW_set_view_status
设置视图状态为激活或参考
UF_DRAW_ask_view_status
查询指定视图的状态,激活或参考
UF_DRAW_set_auto_update
8.1.3注释参数设置
UF函数允许用户查询、设置注释参数,包括尺寸、线/箭头、字体、符号、单位、半径、区域填充/剖面线等所有注释参数。
与注释参数设置相关函数如表6.3所示,它们包含在头文件uf_drf.h中。
表6.3注释参数设置函数
函数名称
函数功能
UF_DRF_set_dimension_preferencesUF_DRF_ask_dimension_preferences
设置和查询尺寸的参数预设置值包括箭头符号、尺寸线、公差、精度、文本方位和放置类型等参数
UF_DRF_set_units_format_preferencesUF_DRF_ask_units_format_preferences
设置和查询单位参数的预设置包括长度和角度尺寸的显示方式及双重尺寸的格式
查询单位的系统参数预设置值包括长度和角度尺寸的显示方式及双重尺寸的格式
UF_DRF_set_symbol_preferences
符号参数的预设置包括标识符号、用户自定义符号、中心线及形位公差符号等。
UF_DRF_ask_symbol_preferences
查询符号的系统参数预设置值包括标识符号、用户自定义符号、中心线及形位公差符号等
UF_DRF_set_line_arrow_preferences
引导线、箭头及尺寸和注释的延长线的参数预设置
UF_DRF_ask_line_arrow_preferences
查询引导线、箭头及尺寸和注释的延长线的系统参数预设置值
UF_DRF_set_lettering_preferences
预设置各类字符的尺寸、字距、行距及字体等参数
UF_DRF_ask_lettering_preferences
查询各类字符的尺寸、字距、行距及字体等系统参数预设置值
UF_DRF_set_diameter_radius_preferences
直径和半径尺寸显示方式参数的预设置
UF_DRF_ask_diameter_radius_preferences
UF_DRF_set_hatch_fill_preferences
预设置剖面线和填充样式的类型、比例、角度、距离、颜色和线型等参数
UF_DRF_set_areafill_angle
为指定的区域填充对象设置区域填充的旋转角度
UF_DRF_set_areafill_scale
为指定的区域填充对象设置区域填充的比例
UF_DRF_set_areafill_material
为指定的区域填充对象设置区域填充的材料。
材料是通过类型为UF_DRF_valid_material_e的枚举变量来定义的,包括软木塞/毛毡、隔音材料、混凝土、泥土、岩石、沙、液相线、横截木纹及纵向木纹等
UF_DRF_ask_areafill_data
查询指定区域填充对象的参数包括:
区域填充的比例、旋转角度、填充材料和误差
UF_DRF_ask_ang_obj_units_format
查询角度尺寸的单位格式及公差格式
UF_DRF_ask_dim_info
获得指定尺寸的子类型,尺寸在工作坐标系中的原点坐标,尺寸线及相关联的文本信息。
其中输出的类型为UF_DRF_dim_info_t的结构变量必须使用函数UF_DRF_free_dimension释放
UF_DRF_ask_chamfer_dimension_data
获得指定倒角尺寸的参数
UF_DRF_set_retained_state
设置工程图中的注释是否处于保留状态。
如果输入UF_DRF_DELETE_RETAINED_ANNOTATIONS,所有与实体模型关联的注释,将可能随实体模型修改而从视图中删除。
如果输入UF_DRF_KEEP_RETAINED_ANNOTATIONS,则保留注释
UF_DRF_set_retain_color_font_width
设置处于保留状态注释的颜色、线型及线宽。
当工程图中的注释被设置处于保留状态时,则模型修改后,所有与原模型相关的注释将以设定的颜色、线型及线宽显示
8.1.4实例实践
1.运行环境:
新建或打开一个部件文件,进入制图环境,插入一个视图。
2.程序代码及注释:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
/*设置尺寸参数*/
voidset_dimension_parameters(void)
{
/*设置变量定义*/
charmessage[133];
intmpi_array[100];
doublempr_array[70];
charrad_symbol[27],dia_symbol[27];
UF_UI_open_listing_window();
UF_UI_write_listing_window("\n设置前的系统工程图参数:
\n\n");
/*查询设置前的系统制图参数*/
UF_DRF_ask_preferences(mpi_array,mpr_array,rad_symbol,dia_symbol);
sprintf(message,"尺寸值的小数位数:
mpi[3]=%d\n公差值的小数位数:
mpi[4]=%d\n",mpi_array[3],mpi_array[4]);
UF_UI_write_listing_window(message);
sprintf(message,"公差类型:
mpi[6]=%d\n上公差:
mpr[24]=%f\n下公差:
mpr[25]=%f\n",mpi_array[6],mpr_array[24],mpr_array[25]);
UF_UI_write_listing_window(message);
/*设置尺寸、公差等制图参数*/
mpi_array[3]=2;/*设置尺寸值的小数位*/
mpi_array[4]=4;/*设置公差值小数位*/
mpi_array[6]=4;/*设置公差类型(单线双向类)*/
mpr_array[24]=0.00002;/*设置上公差*/
mpr_array[25]=0.00002;/*设置下公差*/
UF_DRF_set_preferences(mpi_array,mpr_array,rad_symbol,dia_symbol);
UF_UI_write_listing_window("\n\n设置后的系统工程图参数:
\n\n");
/*查询设置后的系统制图参数*/
UF_DRF_ask_preferences(mpi_array,mpr_array,rad_symbol,dia_symbol);
sprintf(message,"尺寸值的小数位数:
mpi[3]=%d\n公差值的小数位数:
mpi[4]=%d\n",mpi_array[3],mpi_array[4]);
UF_UI_write_listing_window(message);
sprintf(message,"公差类型:
mpi[6]=%d\n上公差:
mpr[24]=%f\n下公差:
mpr[25]=%f\n",mpi_array[6],mpr_array[24],mpr_array[25]);
UF_UI_write_listing_window(message);
}
/*设置视图比例*/
voidset_view_scale(void)
{
intnum_views=0;
logicalauto_update;
tag_tdrawing_tag=NULL_TAG;
tag_p_tview_list=NULL;
tag_texp_tag=NULL_TAG;
/*查询当前图纸标识*/
UF_DRAW_ask_current_drawing(&drawing_tag);
/*获得当前图纸的视图个数及标识*/
UF_DRAW_ask_views(drawing_tag,&num_views,&view_list);
/*设置视图自动更新*/
auto_update=true;
if(num_views>0)
UF_DRAW_set_auto_update(view_list[0],&auto_update);
/*设置视图比例*/
UF_MODL_create_exp_tag("1.5",&exp_tag);
UF_DRAW_set_view_parm_scale(view_list[0],exp_tag);
UF_free(view_list);
}
externvoidufusr(char*param,int*retcod,intparam_len)
{
if(!
UF_initialize())
{
/*对话框设置参数*/
char*cp1="设置制图参数";
intip2=0;
charcp3[2][38]={"设置尺寸参数","设置视图比例"};
intip4=2;
intvalue;
value=uc1603(cp1,ip2,cp3,ip4);
switch(value)
{
case5:
/*设置尺寸参数*/
set_dimension_parameters();
break;
case6:
/*设置视图比例*/
set_view_scale();
break;
default:
uc1601("发生了错误!
",0);
}
UF_terminate();
}
}
3.运行结果
在编译连接后,通过File→Execute→UserFunction调用生成的动态链接库文件。
此时界面弹出一个用户选择对话框,如图6-1所示。
当用户选择“设置尺寸参数”选项后,新建的尺寸标注将加上公差标注,尺寸保留两位小数,并且弹出一个消息对话框,列出参数设置前后的值,结果如图6-2、6-3所示。
当用户选择“设置视图比例”选项后,当前图纸上的视图将放大1.5倍。
图6-1工程图参数设置选择对话框
图6-2尺寸参数设置消息框
(a)参数设置前(b)参数设置后
图6-3尺寸参数设置效果比较
8.2图框模板文件的导入
导入模板文件时,要注意导入模式的设置。
如果希望在新文件中保持模板文件的原始图层,设置导入方式为原始图层模式;如果希望把模板文件导入到新文件的工作图层中来,设置导入方式为工作层模式。
导入后如果希望对模板文件进行整体操作,可以将模板文件作为组(group)导入,便于对模板文件的整体修改。
参数设置代码如下:
UF_import_part_modes_tmodes;
modes.layer_mode=1;//0=Mergeonworklayer;1=Mergeonoriginallayer
modes.group_mode=1;//0=Mergeungrouped;1=Mergegrouped
modes.plist_mode=1;
modes.view_mode=1;
modes.cam_mode=FALSE;
doubledest_csys[6]={1,0,0,0,1,0};
doubledest_point[6]={0,0,0};
tag_tgroup;
UF_PART_import(file_name,&modes,dest_csys,dest_point,1,&group);
在二维制图中,把企业常用的标准图框做成模板文件,在需要时导入,这样可以节省时间,提高设计效率。
为了能够自动填写图纸中的标题栏,可以在模板文件中先定义零件属性,如序号、编码、名称、数量、图号、规格和材料等,并设置好属性在标题栏中的放置位置,然后将模板文件导入。
但是,由于模板文件的属性并不随模板文件的导入而导入,因此,为了使模板文件的附属信息与二维制图的标题栏关联,在建立二维图前必须定义和模板文件中属性名称相同的属性,然后导入模板,这样可以在模板文件中的属性和新建二维图纸的属性之间建立链接关系,通过改变属性值即可编辑标题栏。
8.3工程图的创建和管理
新建图纸时需要指定图纸的名称、图纸尺寸、比例、投影角度和单位,其中图纸尺寸、比例、投影角度和单位参数是通过类型为UF_DRAW_info_t的结构体变量来指定的,而设置图纸尺寸共有三种方式,包括:
公制和英制两种标准尺寸及用户自定义,其是通过类型为UF_DRAW_size_union_u的共用体变量来控制的,metric_size_code表示公制尺寸定义,english_size_code表示英制尺寸定义,custom_size表示用户自定义。
在大多数工程图操作的UF函数中,当输入的图纸名为一个空字符串时(双引号之间不能有空格),系统一般默认为当前图纸。
8.3.1相关函数
表6.4、6.5分别为创建、管理和查询工程图的函数,其函数的声明主要包含在头文件uf_draw.h中。
表6.4创建和管理图纸函数
函数名称
函数功能和要点
UF_DRAW_create_drawing
新建一张图纸,返回新建图纸的标识
UF_DRAW_open_drawing
打开指定图纸
UF_DRAW_delete_drawing
删除指定图纸
UF_DRAW_rename_drawing
重新命名指定图纸
UF_DRAW_set_display_state
设置图纸状态,“1”表示实体模型的显示;“2”表示工程视图的显示
UF_DRAW_set_drawing_info
编辑或修改当前图纸的参数,包括:
大小,比例,投影角度和单位。
如果当胶图纸有一个或多个辅助视图或正交视图,则不能改变当前图纸的投影角度。
注意:
只能编辑当前图纸的参数
UF_DRAW_set_drawing_ref_pt
设置指定图纸上指定视图的参考点,以控制视图在图纸上的位置。
如果指定的图纸为空字符串,则表示当前图纸;如果指定的视图为空字符串,则表示当前视图
表6.5查询图纸信息函数
函数名称
函数功能和要点
UF_DRAW_ask_current_drawing
返回当前图纸的标识
UF_DRAW_ask_drawing_of_view
获得指定图成员视图所在的图纸标识,如果为ULL_TAG则表示没有找到对应的图纸
UF_DRAW_ask_drawing_info
获得指定图纸的参数,包括:
大小,比例,投影角度和单位
UF_DRAW_ask_drawings
获得当前工作部件的图纸数量及标识
UF_DRAW_ask_num_drawings
获得当前工作部件的图纸数量
UF_DRAW_ask_drawing_ref_pt
获得指定图成员视图在图纸上的参考点,如果输入的图成员视图为NULL_TAG,则工作视图被使用;如果输入的不是图成员视图,则函数返回错误
8.3.2实例实践
1.运行环境:
新建一个部件文件。
2.程序代码及注释:
#include
#include
#include
#include
#include
externvoidufusr(char*param,int*retcode,intparam_len)
{
if(!
UF_initialize())
{
intnum_drawings;
charmessage[MAX_LINE_SIZE+1];
/*创建第一张图纸的变量定义*/
tag_tfdrawing_tag=NULL_TAG;
charfdrawing_name[MAX_ENTITY