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
}
}