namespace HStation.Service.PhartRelation { /// /// /// public static class PhartGraphExtensions { //缓存时间 private const int _cache_time = 10; #region 获取图形参数 /// /// 获取 GraphParas /// public static object GetGraphParas(this Yw.Model.PhartGraph rhs) { if (rhs == null) { return default; } var key = $"{rhs.ID}:graph-paras"; return MemoryCacheHelper.GetSet(key, () => { object obj = PhartGraphHelper.GetGraphParas((eGraphType)rhs.GraphType, rhs.GraphParas); return obj; }, _cache_time); } /// /// 获取 GraphParas /// public static T GetGraphParas(this Yw.Model.PhartGraph rhs) { if (rhs == null) { return default; } var obj = rhs.GetGraphParas(); if (obj is T t) { return t; } return default; } #endregion #region 获取几何参数 /// /// 获取 GeometryParas /// public static object GetGeometryParas(this Yw.Model.PhartGraph rhs) { if (rhs == null) { return default; } var key = $"{rhs.ID}:geometry-paras"; return MemoryCacheHelper.GetSet(key, () => { object obj = PhartGraphHelper.GetGeometryParas((eGeometryStyle)rhs.GeometryStyle, rhs.GeometryParas); return obj; }, _cache_time); } /// /// 获取 GeometryParas /// public static T GetGeometryParas(this Yw.Model.PhartGraph rhs) { if (rhs == null) { return default; } var obj = rhs.GetGeometryParas(); if (obj is T t) { return t; } return default; } #endregion #region 获取特性曲线 /// /// 获取特性曲线 /// public static Yw.Ahart.PerformCurveBase GetPerformCurve(this Yw.Model.PhartGraph rhs) { if (rhs == null) { return default; } var key = $"{rhs.ID}:perform-curve"; return MemoryCacheHelper.GetSet(key, () => { Yw.Ahart.PerformCurveBase performCurve = null; performCurve = PhartGraphHelper.GetPerformCurve((eGeometryStyle)rhs.GeometryStyle, rhs.GeometryInfo); return performCurve; }, _cache_time); } /// /// 获取性能点列表 /// public static List GetFeatPointList(this Yw.Model.PhartGraph rhs, int pointNumber = 12, double minSpace = 0.0001) { var performCurve = rhs.GetPerformCurve(); if (performCurve == null || performCurve.IsInvalid()) { return default; } return performCurve.FeatCurve.GetPointList(pointNumber, minSpace); } #endregion } }