当前位置:首页 > 8 - UG二次开发实用教程 第八章 - 图文
UF_DRAW_create_half_sxview 创建一个半剖视图。其中截面线段的数量至少为2(剖切线段和折弯线段),如果用户定义箭头位置,则截面线段的数量为3 UF_DRAW_create_revolved_sxview 创建一个旋转剖视图。在函数中一个剖切线不能超过49个截面线段;如果输入两个剖切位置而没有定义折弯位置,是系统将产生一个折弯位置;如果输入两个相连的折弯位置,系统将忽略第二个折弯位置;如果没有定义箭头位置,系统将自动产生 UF_DRAW_create_unfolded_sxview UF_DRAW_create_breakout 创建一个展开剖视图。如果没有定义箭头位置,系统将自动产生 创建一个截除的剖视图。
表6.7编辑视图函数
函数名称 UF_DRAW_move_view UF_DRAW_move_view_to_drawing UF_DRAW_copy_view 函数功能 移动当前图纸上的指定视图到指定位置 移动当前图纸上的指定视图到目标图纸上。如果目标图纸比指定视图小,则返回错误 复制当前图纸上的视图。当结合函数UF_DRAW_move_view一起使用时,可以复制视图到当前图纸上任意位置;结合函数UF_DRAW_move_view_to_drawing一起使用时,可以复制当前图纸上的视图到别的图纸上的指定位置 UF_DRF_update_views 更新指定图纸上一个或多个视图。共有三种更新方式:自动更新,更新所有视图,更新指定视图;如果更新指定视图,则必须输入视图名称。如果指定的图纸不是当前图纸,则打开指定图纸,使其成为当前图纸。如果指定的图纸为空字符串,系统则默认当前图纸。 UF_DRAW_upd_out_of_date_views UF_DRAW_update_one_view UF_DRAW_define_view_auto_rect UF_DRAW_define_view_boundary 更新指定图纸上所有过时视图。如果指定图纸为NULL_TAG,则更新当前部件中所有图纸上的视图 更新指定图纸上指定视图 利用自动的矩形定义指定视图的视图边界。 定义指定视图的视图边界。有效的曲线类型为:UF_line_type,UF_circle_type和UF_spline_type,所有的曲线在视图必须可见,如果曲线的类型为UF_circle_type,则这个圆必须位于视图平面上。 UF_DRAW_define_view_manual_rect UF_DRAW_define_bound_by_objects 利用人工矩形定义指定视图的视图边界。 利用对象定义指定视图的视图边界。
表6.8查询视图函数
函数名称 UF_DRF_is_object_out_of_date UF_DRAW_ask_num_views UF_DRAW_ask_view_borders UF_DRAW_ask_view_of_drawing UF_DRAW_ask_views
函数功能 查询图纸或视图的更新或延时的状态。如果输出为TRUE,则表示对象处于延时状态 获得指定图纸上视图的个数。如果指定的图纸标识为NULL_TAG,则系统默认为当前图纸 获得当前图纸上指定视图的边界。如果指定的视图标识为NULL_TAG,则系统默认为当前视图 获得指定图纸上的视图标识。如果指定图纸上没有视图,则输出NULL_TAG 获得当前图纸上视图的数量及标识。如果指定的图纸标识为NULL_TAG,则系统默认为当前图纸 8.4.2 实例实践
1.运行环境:新建或打开一个部件文件,创建一个零件。 2.程序代码及注释:
#include
void ufusr (char *param, int *retcode, int paramLen) {
if (!UF_initialize()) {
int num_views;
char message[MAX_LINE_SIZE + 1];
/* 定义图纸变量 */
char drawing_name[MAX_ENTITY_NAME_SIZE] = \ UF_DRAW_info_t drawing_info;
tag_t drawing_tag = NULL_TAG; tag_t view_tag = NULL_TAG; /* 定义前视图变量 */
tag_t front_view_tag = NULL_TAG; char *front_view_name = \
double front_reference_point[2] = {210.0, 400.0}; /* 定义轴测视图变量 */
tag_t tri_view_tag = NULL_TAG; char *tri_view_name = \
double tri_reference_point[2] = {630.0, 120.0}; /* 定义俯视图变量 */
UF_DRAW_proj_dir_t bottom_projection_direction = UF_DRAW_project_below; double bottom_reference_point[2] = {210.0, 120.0}; tag_t bottom_view_tag = NULL_TAG; /* 定义左视图变量 */
UF_DRAW_proj_dir_t left_projection_direction = UF_DRAW_project_left; double left_reference_point[2] = {630.0, 400.0}; tag_t left_view_tag = NULL_TAG; /* 创建并打开图纸 */
drawing_info.drawing_scale = 1.0;
drawing_info.projection_angle = UF_DRAW_THIRD_ANGLE_PROJECTION; drawing_info.size.metric_size_code = UF_DRAW_A1; drawing_info.size_state = UF_DRAW_METRIC_SIZE; drawing_info.units = UF_PART_METRIC;
UF_DRAW_create_drawing( drawing_name, &drawing_info,&drawing_tag); UF_DRAW_open_drawing( drawing_tag ); /* 设置视图参数 */
UF_DRAW_view_info_t view_info;
UF_DRAW_initialize_view_info( &view_info ); view_info.view_status = UF_DRAW_ACTIVE_VIEW; view_info.anchor_point = NULL_TAG; view_info.view_scale = 1.0; view_info.use_ref_pt = TRUE; view_info.inherit_boundary = TRUE; /* 创建前视图 */
UF_OBJ_cycle_by_name( front_view_name, &view_tag ); if( view_tag != NULL_TAG ) {
UF_DRAW_import_view( drawing_tag, view_tag, front_reference_point, &view_info, &front_view_tag );
UF_DRAW_define_view_auto_rect( front_view_tag ); }
view_tag = NULL_TAG; /* 创建轴测视图 */
UF_OBJ_cycle_by_name( tri_view_name, &view_tag ); if( view_tag != NULL_TAG ) {
UF_DRAW_import_view( drawing_tag, view_tag, tri_reference_point, &view_info, &tri_view_tag );
UF_DRAW_define_view_auto_rect( tri_view_tag ); }
/* 创建俯视图 */
if( front_view_tag != NULL_TAG ) {
UF_DRAW_add_orthographic_view( drawing_tag, front_view_tag,
bottom_projection_direction, bottom_reference_point, &bottom_view_tag ); UF_DRAW_define_view_auto_rect( bottom_view_tag ); }
/* 创建左视图 */
if( front_view_tag != NULL_TAG ) {
UF_DRAW_add_orthographic_view( drawing_tag, front_view_tag,
left_projection_direction, left_reference_point, &left_view_tag ); UF_DRAW_define_view_auto_rect( left_view_tag ); }
/*查询当前图纸的视图个数 */
UF_DRAW_ask_num_views( NULL_TAG, &num_views ); UF_UI_open_listing_window();
sprintf(message,\当前图纸共有: %d 个视图。\ UF_UI_write_listing_window( message ); UF_terminate(); } }
3.运行结果
编译连接后,通过File→Execute→User Function调用生成的动态链接库文件。结果将在部件导航器中创建并打开名为“my_drawing”的图纸,在图纸上创建当前部件的前视图、左视图、俯视图和轴测图,结果如图6-6所示。同时弹出一个消息对话框,显示当前图纸中视图的数量,如图6-7所示。
图6-6创建视图
共分享92篇相关文档