方法一:通过UV参数判断,前提条件输入的是圆柱/圆锥面
double uv_min_max[4];
UF_MODL_ask_face_uv_minmax(face, uv_min_max);
double val = uv_min_max[1]-uv_min_max[0];
if(fabs(val - 2*PI) < 0.05)
{
//是闭环的
}
方法二:通过PK函数判断,此函数适用所有类型面,包括B取面
bool IsPreiodicFace(tag_t face)
{
bool isPer = false;
if(face == NULL_TAG)
{
returu isPer;
}
uf_initialize();
tag_t psTag = NULL_TAG;
UF_PS_ask_ps_tag_of_object(face, &psTag);
PK_PARAM_periodic_t periodic_u;
PK_PARAM_periodic_t periodic_v;
PK_FACE_is_periodic(psTag, &periodic_u, &periodic_v);
if(periodic_u==PK_PARAM_periodic_yes_c||periodic_v == PK_PARAM_periodic_yes_c)
isPer = true;
UF_terminate();
return isPer;
}
以上方法经过一些测试,目前还未发现问题。如有同道发现问题,望留言。