NX二次开发 PK获得面uv点和方向 PK_SURF_eval_with_normal
这个函数我很推荐你用pk的 因为ufun貌似获得面方向不一定准确
而以下方法pk获得面方向是准确的
//获得面上点和方向(任何面)(uv范围0.0 - 1.0)
bool PK_AskFacePointAndDir(const tag_t face_tag, const double u, const double v, double point[3], double dir[3])
{
tag_t ps_tag = NULL_TAG;
double u1 = u, v1 = v;
u1 = fabs(u);
v1 = fabs(v);
point[0] = 0.0;
point[1] = 0.0;
point[2] = 0.0;
dir[0] = 0.0;
dir[1] = 0.0;
dir[2] = 1.0;
if (NULL_TAG == face_tag
|| UF_PS_ask_ps_tag_of_object(face_tag, &ps_tag)
|| u1 > 1.0
|| u1 < 0.0
|| v1 > 1.0
|| v1 < 0.0)
return false;
PK_SURF_t surf;
PK_UVBOX_t uvbox;
PK_LOGICAL_t orientation = PK_LOGICAL_false;
if (PK_FACE_ask_oriented_surf(ps_tag, &surf, &orientation)
|| PK_FACE_find_uvbox(ps_tag, &uvbox))
return false;
PK_UV_t pkUV;
PK_VECTOR_t pt, normal;
pkUV.param[0] = uvbox.param[0] + (uvbox.param[2] - uvbo