二开过程中,需要用到曲面的中心点坐标,没有直接的获取方法,找了一些群友问,大佬甩我一句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, UFConstants.UF_MODL_EVAL_ALL, uv_pair, out surf_eval); //在给定参数值下评估面的点和导数。
Point3d origin;

本文介绍了在二开过程中如何计算曲面的中心点坐标,当遇到大佬提到的"0.5uv"概念时,作者通过研究理解了其含义。代码示例展示了如何使用UG NX的API来实现这一功能,通过计算面的u、v参数空间的中点,从而获取曲面上的中心点。调试结果显示方法有效。
最低0.47元/天 解锁文章
1058





