double GetCylinderFaceL(tag_t face)
{
double retL = 0.0;
int type;
double point[3];
double faceDir[3];
double box[6];
double radius;
double rad_data;
int norm_dir;
UF_MODL_ask_face_data(face, &type, point, faceDir, box, &radius, &rad_data, &norm_dir);
double mtxValue[9];
UF_MTX3_initialize_z(faceDir, mtxValue);
tag_t mtx = NULL_TAG;
UF_CSYS_create_matrix(mtxValue, &mtx);
double origin[3] = { 0.0 };
tag_t tempCsys = NULL_TAG;
UF_CSYS_create_temp_csys(origin, mtx, &tempCsys);
std::array<double, 3> cornerMinTemp;
double directions[3][3] = { 0.0 };
double distances[3] = { 0.0 };
UF_MODL_ask_bounding_box_exact(face, tempCsys, cornerMinTemp.data(), directions, distances);
retL = distances[2];
return retL;
}
void ufusr(char* param, int* retcode, int paramLen)
{
UF_initialize();
tag_t face = SelectFace();
double retL = GetCylinderFaceL(face);
print(retL);
UF_terminate();
}
int ufusr_ask_unload(void)
{
return (UF_UNLOAD_IMMEDIATELY);
}
NX二次开发 获取圆柱面的高度
最新推荐文章于 2024-07-22 10:02:43 发布