购买与咨询 NX 二次开发视频教程,请联系微信号:13890821008 QQ号:85585969
函数结构:UF_GEXP_edit_angle( tag_t feature_tag, tag_t new_from_object, UF_GEXP_qualifier_t qualifier1, tag_t new_xform1, tag_t new_to_object, UF_GEXP_qualifier_t qualifier2, tag_t new_xform2) 函数说明:
通过传递新引用的编辑的角度表达功能对象,限定词和转换。然后重新计算的角度传播到哪些更新的所有对象的表达式,引用其价值。调用例程必须调用UF_MODL_update()有编辑生效。
函数参数:
第1个参数为输入:
feature_tag代表参数变量,tag_t 为输入参数类型,角表情特征的标签进行编辑。
第2个参数为输入:
new_from_object代表参数变量,tag_t 为输入参数类型,对象的标签用于新编辑的角度。有效的对象类型是:UF_line_type UF_datum_plane_type UF_datum_axis_type UF_solid_type固力应该是线性和实体面应该是平面的。发生标签是不允许的。使用原型标签来代替。
第3个参数为输入:
qualifier1代表参数变量,UF_GEXP_qualifier_t 为输入参数类型,预选赛object1,只适用于线条和边缘。
第4个参数为输入:
new_xform1代表参数变量,tag_t 为输入参数类型,对于第一个对象转化标签。这是空的TAG如果对象是在其中创建要素的相同部分。
第5个参数为输入:
new_to_object代表参数变量,tag_t 为输入参数类型,对象的标签用于新编辑的角度。有效的对象类型是:UF_line_type UF_datum_plane_type UF_datum_axis_type UF_solid_type固力应该是线性和实体面应该是平面的。发生标签是不允许的。使用原型标签来代替。
第6个参数为输入:
qualifier2代表参数变量,UF_GEXP_qualifier_t 为输入参数类型,预选赛Object2的,只适用于线条和边缘。
第7个参数为输入:
new_xform2代表参数变量,tag_t 为输入参数类型,对于第二个对象变换标签。这是空的TAG如果对象是在其中创建要素的相同部分。
UF_GEXP_edit_angle函数实例代码演示:
以下代码编辑实体面和固体之间的角度边缘是一个线和边缘之间的角度。
[quote]
#include <stdio.h>
#include <uf.h>
#include <uf_modl.h>
#include <uf_ui.h>
#include <uf_defs.h>
#include <uf_obj.h>
#include <uf_gexp.h>
#include <uf_object_types.h>
#include <uf_curve.h>
#define UF_CALL(X) (report( __FILE__, __LINE__, #X, (X)))
static int report( char *file, int line, char *call, int irc)
{
if (irc)
{
char messg[133];
printf("%s, line %d: %s\n", file, line, call);
(UF_get_fail_message(irc, messg)) ?
printf(" returned a %d\n", irc) :
printf(" returned error %d: %s\n", irc, messg);
}
return(irc);
}
static void do_ugopen_api(void)
{
UF_CURVE_line_t line_coords;
double block_orig[3] = {0.0,0.0,0.0};
char buf[UF_UI_MAX_STRING_LEN+1];
char *block_len[3] = {"1","2","3"};
char *string;
tag_t part, feat_tag, blk_obj, exp_tag, line_tag;
tag_t solid, solid_face, solid_edge;
int type, subtype;
int i=0;
UF_CALL(UF_MODL_create_block1(UF_NULLSIGN,block_orig,
block_len,&blk_obj));
UF_CALL(UF_UI_open_listing_window());
if((part=UF_PART_ask_display_part()) == NULL_TAG)
{
UF_UI_write_listing_window("Failed to get part tag\n");
return;
}
solid=NULL_TAG;
solid_edge=NULL_TAG;
solid_face=NULL_TAG;
while (i < 2)
{
type=UF_solid_type;
UF_OBJ_cycle_objs_in_part( part, type, &solid );
UF_OBJ_ask_type_and_subtype(solid, &type, &subtype);
if (!solid_edge && subtype == UF_solid_edge_subtype)
{
solid_edge=solid;
i++;
}
else
if (!solid_face && subtype == UF_solid_face_subtype)
{
solid_face=solid;
i++;
}
}
UF_CALL(UF_GEXP_create_angle(solid_face, UF_GEXP_NONE,
NULL_TAG, solid_edge, UF_GEXP_START_POINT, NULL_TAG, &feat_tag,
&exp_tag));
UF_CALL(UF_MODL_ask_exp_tag_string(exp_tag,&string));
sprintf (buf, "Created angle expression %s\n", string);
UF_UI_write_listing_window(buf);
line_coords.start_point[0] = 5.0;
line_coords.start_point[1] = 7.0;
line_coords.start_point[2] = 8.0;
line_coords.end_point[0] = 10.0;
line_coords.end_point[1] = 10.0;
line_coords.end_point[2] = 2.0;
UF_CALL(UF_CURVE_create_line (&line_coords, &line_tag));
UF_CALL(UF_GEXP_edit_angle(feat_tag, line_tag,
UF_GEXP_START_POINT, NULL_TAG, solid_edge, UF_GEXP_END_POINT,
NULL_TAG));
UF_CALL(UF_MODL_update());
sprintf (buf, "Edited angle expression %s\n", string);
UF_UI_write_listing_window(buf);
UF_free(string);
}
/*ARGSUSED*/
void ufusr(char *param, int *retcode, int param_len)
{
if (!UF_CALL(UF_initialize()))
{
do_ugopen_api();
UF_CALL(UF_terminate());
}
}
int ufusr_ask_unload(void)
{
return (UF_UNLOAD_IMMEDIATELY);
}
[/quote]