点击查看详细介绍

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

misnn 7年前 797 0

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


函数结构:
UF_GEXP_create_distance
(
tag_t from_object,
tag_t object1_xform,
tag_t to_object,
tag_t object2_xform,
tag_t * feature_tag,
tag_t * exp_tag
)

函数说明:
创建一个距离几何表达功能。此函数计算和存储之间的最小距离from_object和to_object在表达式中。如果object1_xform不NULL_TAG,那么这个变换用于计算转型为from_object。如果object2_xform不NULL_TAG,然后此变换被用来计算转换为反对。所创建的功能和表达存储在当前工作的一部分。的距离在所述工作部分的单位而言,和ug_part_convert期间进行转换。注意:输出表达式的值可能不被编辑为你将正常的表现。它可能只被用作参考,并且只有要素的几何表达功能后创建的。

函数参数:
第1个参数为输入:
from_object代表参数变量,tag_t 为输入参数类型,对象的标签来创建的距离。有效的对象类型有:UF_point_type,UF_line_type,UF_circle_type,UF_spline_type,UF_conic_type,UF_solid_type和UF_datum_plane_type。发生标签是不允许的。使用原型标签来代替。

第2个参数为输入:
object1_xform代表参数变量,tag_t 为输入参数类型,对于第一个对象转化标签。该标签为NULL TAG如果对象是在其中创建要素的相同部分。

第3个参数为输入:
to_object代表参数变量,tag_t 为输入参数类型,对象的标签来创建到距离。有效的对象类型有:UF_point_type,UF_line_type,UF_circle_type,UF_spline_type,UF_conic_type,UF_solid_type和UF_datum_plane_type。发生标签是不允许的。使用原型标签来代替。

第4个参数为输入:
object2_xform代表参数变量,tag_t 为输入参数类型,对于第二个对象变换标签。该标签为NULL TAG如果对象是在其中创建要素的相同部分。

第5个参数为输出:
feature_tag代表参数变量,tag_t * 为输出参数类型,创建功能的标签

第6个参数为输出:
exp_tag代表参数变量,tag_t * 为输出参数类型,创建表达式的标签

UF_GEXP_create_distance函数实例代码演示:
下面的代码创建两个固体物体之间的距离。
[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>
#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)
{
double block_orig[3] = {0.0,0.0,0.0};
double block_orig1[3] = {5.0,5.0,5.0};
tag_t blk_obj,blk_obj1;
char *block_len[3] = {"1","2","3"};
char *string;
int i=0;
char buf[UF_UI_MAX_STRING_LEN+1];
tag_t part, feat_tag, exp_tag, solid, solid_body[2];
int type, subtype;

UF_CALL(UF_MODL_create_block1(UF_NULLSIGN,block_orig,
block_len,&blk_obj));
UF_CALL(UF_MODL_create_block1(UF_NULLSIGN,block_orig1,
block_len,&blk_obj1));
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;
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 (subtype == UF_solid_body_subtype)
solid_body[i++]=solid;
}
UF_CALL(UF_GEXP_create_distance(solid_body[0], NULL_TAG,
solid_body[1], NULL_TAG, &feat_tag, &exp_tag));
UF_CALL(UF_MODL_ask_exp_tag_string(exp_tag,&string));
sprintf (buf, "Created distance 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]

0

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