点击查看详细介绍

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

misnn 9年前 1661 0

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


函数结构:
UF_MODL_ask_point_containment
(
double point [ 3 ],
tag_t body,
int * pt_status
)

函数说明:
确定是否一个给定的点位于内部,外部或给定的边界上面,边,实体或片体。在一个片体的情况下,一个点被认为在体内,如果它是在脸上和在身体,如果它是在边界上片体的边缘。

函数参数:
第1个参数为输入:
输入double 双精度类型的参数,参数的变量格式为point [ 3 ],咨询点的坐标点

第2个参数为输入:
body代表参数变量,tag_t 为输入参数类型,面,边,固体或片体上点查询标签

第3个参数为输出:
输出int * 整数型的参数,参数的变量格式为pt_status,在主体1 =点的点的返回的状态是内主体2=点是在人体外3 =点是在主体

UF_MODL_ask_point_containment函数实例代码演示:
说明:此文件包含以下外部函数支持问点遏制:UF_MODL_ask_point_containment
[quote]
#include <stdio.h>
#include <uf.h>
#include <uf_part.h>
#include <uf_defs.h>
#include <uf_modl.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)
{

char *edge_length[3] = {"5.0", "5.0", "5.0"};
char *prtnam = "ask_point_containment";

double pt_coord[3];
double origin[3] = {0.0, 0.0, 0.0};

int pt_status;

tag_t body_tag;
tag_t feat_tag;
tag_t part_tag;

UF_FEATURE_SIGN create = UF_NULLSIGN;

/* Open a new part */
UF_CALL( UF_PART_new(prtnam, METRIC, &part_tag) );

/* Create a block of dimensions 5, 5, 5 */
UF_CALL(UF_MODL_create_block1(create, origin, edge_length, &feat_tag));
UF_CALL(UF_MODL_ask_feat_body(feat_tag, &body_tag));

/* test a point inside the body */
pt_coord[0] = 2.0;
pt_coord[1] = 2.0;
pt_coord[2] = 2.0;

UF_CALL(UF_MODL_ask_point_containment(pt_coord, body_tag, &pt_status ));

if ( pt_status != 1 )
printf("*** ERROR from UF_MODL_ask_point_containment ***\n");

/* test a point outside the body */
pt_coord[0] = 10.0;
pt_coord[1] = 10.0;
pt_coord[2] = 10.0;

UF_CALL(UF_MODL_ask_point_containment(pt_coord, body_tag, &pt_status ));

if ( pt_status != 2 )
printf("*** ERROR from UF_MODL_ask_point_containment ***\n");

/* test a point on the body */
pt_coord[0] = 5.0;
pt_coord[1] = 5.0;
pt_coord[2] = 5.0;

UF_CALL(UF_MODL_ask_point_containment(pt_coord, body_tag, &pt_status ));

if ( pt_status != 3 )
printf("*** ERROR from UF_MODL_ask_point_containment ***\n");

}

/*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)
请登录后发表新帖