购买与咨询 NX 二次开发视频教程,请联系微信号:13890821008 QQ号:85585969
函数结构:UF_DRAW_create_revolved_sxview( tag_t dwg_tag, double sxview_scale, double step_dir [ 3 ], double arrow_dir [ 3 ], tag_t pview_tag, UF_DRF_object_p_t rotpt_object, int num_sxsegs, int num_leg1_sxsegs, UF_DRAW_sxline_sxsegs_p_t rev_sxsegs, double view_placement_pt [ 2 ], tag_t * sxview_tag) 函数说明:
创建一个旋转的剖面图。该系统生成弯曲当两个切段中间没有弯曲输入 定义。该系统还忽略了两个连续的第二输入弯曲段。系统生成箭头段,如果他们不输入。 数字。一个旋转部分线和剖面图。
函数参数:
第1个参数为输入:
dwg_tag代表参数变量,tag_t 为输入参数类型,绘制标签
第2个参数为输入:
输入double 双精度类型的参数,参数的变量格式为sxview_scale,部分视图比例
第3个参数为输入:
输入double 双精度类型的参数,参数的变量格式为step_dir [ 3 ],步骤方向矢量(单元化)相对于所述附图中:步骤目录[0] = x值step_dir[1] = y值step_dir[2] = z值为
第4个参数为输入:
输入double 双精度类型的参数,参数的变量格式为arrow_dir [ 3 ],箭头方向矢量(成套)相对于图纸。箭头目录[0]= X值箭头DIR[1]= y值arrow_dir[2] = Z值
第5个参数为输入:
pview_tag代表参数变量,tag_t 为输入参数类型,父视图标签
第6个参数为输入:
rotpt_object代表参数变量,UF_DRF_object_p_t 为输入参数类型,对象限定转动点关联性。
第7个参数为输入:
输入int 整数型的参数,参数的变量格式为num_sxsegs,用于最初定义剖面线部段数。经切割的段必须定义(num_segs必须大于0)。这个号码定义rev_sxseg_objects数组的大小。一节行不能有超过99段,不能有超过49切段。
第8个参数为输入:
输入int 整数型的参数,参数的变量格式为num_leg1_sxsegs,部分分段投入数来定义的第一站。不能超过num_segs更大。任何剩余的区段定义腿2。
第9个参数为输入:
rev_sxsegs代表参数变量,UF_DRAW_sxline_sxsegs_p_t 为输入参数类型,对于定义的每个部段,段类型给出确定该段是否是一个切口,弯曲或箭头。弯曲和箭头部分是可选的。而且,对于每个节段限定,一个目的是考虑到限定部段结合性。
第10个参数为输入:
输入double 双精度类型的参数,参数的变量格式为view_placement_pt [ 2 ],视图放置点上的绝对绘图坐标图(X,Y))
第11个参数为输出:
sxview_tag代表参数变量,tag_t * 为输出参数类型,新创建的剖面图的标签
UF_DRAW_create_revolved_sxview函数实例代码演示:
下面的示例创建类似于一个旋转剖面线围绕现有剖面线。
[quote]
#include <stdio.h>
#include <string.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 numchrs;
int num_sxviews;
int num_sxsegs;
int num_user_defined_sxsegs = 0;
int num_user_defined_sxsegs_in_leg1=0;
int seg_ndx;
int num_leg1_sxsegs;
int len;
tag_t sxline1_tag;
tag_t pview_tag;
tag_t dwg_tag;
tag_t curve_tag;
tag_t new_sxview_tag;
tag_t * sxview_tags = NULL;
tag_t * sxseg_tags = NULL;
double step_dir[3];
double arrow_dir[3];
double view_placement_pt[2];
double sxview_scale = 1.0;
char error_message[133];
char * sxline1 = "rev_sxline1";
char dwg_name[MAX_FSPEC_SIZE +1];
char sxview_name[MAX_FSPEC_SIZE +1];
UF_DRAW_sxline_status_t sxline_status;
UF_DRAW_sxseg_info_t sxseg_info;
UF_DRF_object_p_t object;
UF_DRF_object_t rotpt_object;
UF_DRAW_sxline_sxsegs_t rev_sxsegs[99];
UF_DRAW_sxline_leg_t cut_plane_leg;
ifail = UF_initialize();
if( !ifail )
{
/* Find the tag of the section line from its name. */
numchrs = strlen( sxline1 );
ifail = uc5028( sxline1, numchrs, &sxline1_tag );
}
if( !ifail )
{
/* Retrieve information about a revolved section line. */
ifail = UF_DRAW_ask_revolved_sxline( sxline1_tag,
step_dir, arrow_dir, &pview_tag, &rotpt_object,
&num_sxviews, &sxview_tags, &num_sxsegs,
&num_leg1_sxsegs, &cut_plane_leg, &sxseg_tags,
&sxline_status );
}
if( !ifail )
{
/* Read current drawing name. */
ifail = uc6492( dwg_name );
}
if( !ifail )
{
/* Get section view name from its tag. */
ifail = uc5027( sxview_tags[0], sxview_name, &len );
}
if( !ifail )
{
/* Find the drawing location of the section view. */
ifail = uc6483( dwg_name, sxview_name, view_placement_pt );
}
if( !ifail )
{
/* Get the section line segment information. */
for( seg_ndx = 0; seg_ndx < num_sxsegs; seg_ndx++ )
{
ifail = UF_DRAW_ask_sxline_sxseg( sxseg_tags[seg_ndx],
&sxseg_info, &curve_tag, &object );
if( ifail ) break;
/* Save only user defined sxsegs. */
if( sxseg_info.sxseg_mode == UF_DRAW_user_defined_sxseg
)
{
rev_sxsegs[num_user_defined_sxsegs].sxseg_type =
sxseg_info.sxseg_type;
rev_sxsegs[num_user_defined_sxsegs].sxseg_object =
object;
num_user_defined_sxsegs++;
if( seg_ndx < num_leg1_sxsegs )
num_user_defined_sxsegs_in_leg1++;
}
else
UF_free( object );
}
}
if( !ifail )
{
/* Get tag from drawing name. */
len = strlen( dwg_name );
ifail = uc5028( dwg_name, len, &dwg_tag );
}
/* Create a similar revolved section line. */
if( !ifail )
{
ifail = UF_DRAW_create_revolved_sxview( dwg_tag,
sxview_scale, step_dir, arrow_dir, pview_tag,
&rotpt_object, num_user_defined_sxsegs,
num_user_defined_sxsegs_in_leg1, rev_sxsegs,
view_placement_pt, &new_sxview_tag );
}
if( num_user_defined_sxsegs > 0 )
{
for( seg_ndx = 0; seg_ndx<num_user_defined_sxsegs;
seg_ndx++ )
{
/* Free each of the object structures. */
UF_free( (rev_sxsegs[seg_ndx].sxseg_object) );
}
}
UF_free( sxview_tags );
UF_free( sxseg_tags );
printf( "UF_DRAW_create_revolved_sxview 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]