二开过程中,需要用到曲面的中心点坐标,没有直接的获取方法,找了一些群友问,大佬甩我一句0.5uv,完全没看明白什么意思,没有设计基础做二开的是尴尬。
经过多方查阅资料终于明白大佬的意思,顺便整理出来与大家分享。
废话不多说,直接上源码:
/// <summary>
/// 获取曲面的中心点
/// </summary>
/// <param name="face"></param>
/// <returns></returns>
public static Point3d GetCenterPoint(Face face)
{
theUFSession = UFSession.GetUFSession();
IntPtr evaluator;
theUFSession.Evalsf.Initialize2(face.Tag, out evaluator); //初始化面部评估器结构
double[] uv_min_max = new double[4] { 0.0, 1.0, 0.0, 1.0 };
theUFSession.Evalsf.AskFaceUvMinmax(evaluator, uv_min_max); //计算面的u,v参数空间min,max
double[] uv_pair = { 0.5 * (uv_min_max[0] + uv_min_max[1]), 0.5 * (uv_min_max[2] + uv_min_max[3]) };
ModlSrfValue surf_eval;
theUFSession.Evalsf.Evaluate(evaluator,