购买与咨询 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]