点击查看详细介绍

UF_DRAW_move_sxseg() 函数的参数解释说明、函数详细用法,以及实例代码演示

misnn 7年前 838 0

购买与咨询 NX 二次开发视频教程,请联系微信号:13890821008  QQ号:85585969  


函数结构:
UF_DRAW_move_sxseg
(
tag_t sxseg_tag,
UF_DRAW_sxline_sxsegs_p_t sxseg_data
)

函数说明:
移动的部分线段到由输入新定义的位置sxseg_data的对象,然后更新所有分割线的相关位于当前图形上部分观点。相关的部分意见不是当前图形上都标过时。要执行此编辑对部分线路没有更新,请使用抑制看法更新UF_DRF_set_suppress_view_update提供的功能。

函数参数:
第1个参数为输入:
sxseg_tag代表参数变量,tag_t 为输入参数类型,部分线段标记移动。

第2个参数为输入:
sxseg_data代表参数变量,UF_DRAW_sxline_sxsegs_p_t 为输入参数类型,段数据包括:段类型:UF_DRAW_sxseg_cut,直线段的角度和对象关联到。该sxseg_object用于移动所有段。该sxseg_angle用于移动的展开sxseg。

UF_DRAW_move_sxseg函数实例代码演示:
下面的代码示例添加一个段的展开部分 线。
[quote]
#include <stdio.h>
#include <uf.h>
#include <uf_defs.h>
#include <uf_draw.h>
#include <uf_draw_types.h>
#include <uf_drf_types.h>
#include <uf_obj.h>
void ufusr(char *param, int *retcod, int param_len)
{
int ifail = 0;
int num_sxviews;
int num_sxsegs;
tag_t sxline1_tag;
tag_t pview_tag;
tag_t curve_tag;
tag_t new_sxseg_tag;
tag_t * sxview_tags = NULL;
tag_t * sxseg_tags = NULL;
double step_dir[3];
double arrow_dir[3];
char error_message[133];
char * sxline1 = "unfolded_sxline1";
UF_DRAW_sxline_status_t sxline_status;
UF_DRF_object_p_t object;
UF_DRAW_sxseg_info_t sxseg_info;
UF_DRAW_sxline_sxsegs_t sxseg_data;
ifail = UF_initialize();
/* Find the tag of a section line from its name. */
if( ifail == 0 )
ifail = UF_OBJ_cycle_by_name( sxline1, &sxline1_tag );
if( ifail == 0 )
{
/* Retrieve stepped section line information. */
ifail = UF_DRAW_ask_unfolded_sxline( sxline1_tag,
step_dir, arrow_dir, &pview_tag, &num_sxviews,
&sxview_tags, &num_sxsegs, &sxseg_tags,
&sxline_status );
}
/* Retrieve the last step sxseg's information. */
if( ifail == 0 )
ifail = UF_DRAW_ask_sxline_sxseg( sxseg_tags[num_sxsegs-2],
&sxseg_info, &curve_tag, &object );
if( ifail == 0 )
{
/* Move the newly created segment. */
object->object_tag = NULL_TAG;
object->object_view_tag = NULL_TAG;
object->object_assoc_type = UF_DRF_dwg_pos;
object->object_assoc_modifier = UF_DRF_assoc_type_none;
object->assoc_dwg_pos[0] = object->assoc_dwg_pos[0] + .05;
object->assoc_dwg_pos[1] = object->assoc_dwg_pos[1] + .05;
sxseg_data.sxseg_object = object;
sxseg_data.sxseg_angle = sxseg_info.sxseg_angle;
sxseg_data.sxseg_type = sxseg_info.sxseg_type;
ifail = UF_DRAW_move_sxseg( sxseg_tags[num_sxsegs-2],
&sxseg_data );
}
if( ifail == 0 )
{
/* Add a new segment at a slightly moved location and new
angle. */
sxseg_data.sxseg_angle += 90.0;
if( sxseg_data.sxseg_angle > 180.0 )
sxseg_data.sxseg_angle -= 180.0;
if( sxseg_data.sxseg_angle < 0.0 )
sxseg_data.sxseg_angle += 180.0;

sxseg_data.sxseg_object->assoc_dwg_pos[0] =
object->assoc_dwg_pos[0] + .05;
sxseg_data.sxseg_object->assoc_dwg_pos[1] =
object->assoc_dwg_pos[1] + .05;
UF_DRAW_add_sxseg( sxline1_tag, &sxseg_data, &new_sxseg_tag
);
}
UF_free( object );
UF_free( sxview_tags );
UF_free( sxseg_tags );
printf( "UF_DRAW_move_sxseg sample " );
if( ifail )
{
ifail = UF_get_fail_message( ifail, error_message );
printf( "fails.\nError is: %s\n", error_message );
}
else
printf( "is successful.\n" );
UF_terminate();
}



[/quote]

0

最新回复 (0)
请登录后发表新帖