ningshuxia
2025-03-27 afbafeecc1325bff849a17fb63b9b2b65b48ddf1
WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/00-core/02-extensions/PhartVmoExtensions.cs
@@ -1,4 +1,6 @@
 namespace HStation.WinFrmUI
using Yw.WinFrmUI.Phart;
namespace HStation.WinFrmUI
{
    /// <summary>
    /// 图表Vmo 扩展方法
@@ -12,12 +14,12 @@
        /// <summary>
        /// 获取默认的泵曲线
        /// </summary> 
        public static PumpCurveViewModel GetDefaultPumpCurveViewMdoel(this Yw.Vmo.PhartDiagramExGraphListVmo vmo)
        public static PumpPerformCurveViewModel GetDefaultPumpCurveViewMdoel(this Yw.Vmo.PhartDiagramExGraphListVmo vmo)
        {
            if (vmo == null)
            {
                return default;
            }
            }
            var graph_list = vmo.GraphList;
            if (graph_list == null || !graph_list.Any())
            {
@@ -30,7 +32,7 @@
        /// <summary>
        /// 获取默认的泵曲线
        /// </summary>
        public static PumpCurveViewModel GetDefaultPumpCurveViewMdoel(this List<Yw.Vmo.PhartGraphVmo> vmo_list)
        public static PumpPerformCurveViewModel GetDefaultPumpCurveViewMdoel(this List<Yw.Vmo.PhartGraphVmo> vmo_list)
        {
            if (vmo_list == null || !vmo_list.Any())
            {
@@ -46,15 +48,39 @@
        }
        /// <summary>
        /// 获取泵曲线列表
        /// 获取变速泵曲线列表
        /// </summary> 
        public static List<PumpCurveViewModel> GetPumpCurveViewMdoelList(this Yw.Vmo.PhartDiagramExGraphListVmo vmo)
        public static List<PumpPerformCurveViewModel> GetVariableSpeedPumpCurveViewMdoelList(this Yw.Vmo.PhartDiagramExGraphListVmo vmo)
        {
            if (vmo == null)
            {
                return default;
            }
            }
            var graph_list = vmo.GraphList;
            if (graph_list == null || !graph_list.Any())
            {
                return default;
            }
            var vm_list = graph_list.GetPumpCurveViewMdoelList();
            if (vm_list == null || !vm_list.Any())
            {
                return default;
            }
            var vm_default = vm_list.OrderBy(x => x.Hz).LastOrDefault();
            vm_list.Remove(vm_default);
            return vm_list;
        }
        /// <summary>
        /// 获取泵曲线列表
        /// </summary>
        public static List<PumpPerformCurveViewModel> GetPumpCurveViewMdoelList(this Yw.Vmo.PhartDiagramExGraphListVmo vmo)
        {
            if (vmo == null)
            {
                return default;
            }
            var graph_list = vmo.GraphList;
            if (graph_list == null || !graph_list.Any())
            {
@@ -67,7 +93,7 @@
        /// <summary>
        /// 获取泵曲线列表
        /// </summary> 
        public static List<PumpCurveViewModel> GetPumpCurveViewMdoelList(this List<Yw.Vmo.PhartGraphVmo> vmo_list)
        public static List<PumpPerformCurveViewModel> GetPumpCurveViewMdoelList(this List<Yw.Vmo.PhartGraphVmo> vmo_list)
        {
            if (vmo_list == null || !vmo_list.Any())
            {
@@ -79,7 +105,7 @@
            {
                if (vmo.GraphType == (int)HStation.PhartRelation.eGraphType.QH)
                {
                    var paras = HStation.Model.QHGraphParasModel.ToModel(vmo.GraphParas);
                    var paras = QHGraphParasViewModel.ToModel(vmo.GraphParas);
                    if (paras != null)
                    {
                        var curve = Yw.Pump.CurveQHHelper.ToModel(vmo.GeometryInfo);
@@ -88,7 +114,7 @@
                }
                else if (vmo.GraphType == (int)HStation.PhartRelation.eGraphType.QE)
                {
                    var paras = HStation.Model.QEGraphParasModel.ToModel(vmo.GraphParas);
                    var paras = QEGraphParasViewModel.ToModel(vmo.GraphParas);
                    if (paras != null)
                    {
                        var curve = Yw.Pump.CurveQEHelper.ToModel(vmo.GeometryInfo);
@@ -97,7 +123,7 @@
                }
                else if (vmo.GraphType == (int)HStation.PhartRelation.eGraphType.QP)
                {
                    var paras = HStation.Model.QPGraphParasModel.ToModel(vmo.GraphParas);
                    var paras = QPGraphParasViewModel.ToModel(vmo.GraphParas);
                    if (paras != null)
                    {
                        var curve = Yw.Pump.CurveQPHelper.ToModel(vmo.GeometryInfo);
@@ -111,7 +137,7 @@
                return default;
            }
            var vm_list = new List<PumpCurveViewModel>();
            var vm_list = new List<PumpPerformCurveViewModel>();
            var group = filter_list.GroupBy(x => new { x.Item1, x.Item2 });
            foreach (var item_list in group)
            {
@@ -120,28 +146,120 @@
                var curve_list = item_list.Select(x => x.Item4).ToList();
                var qh = (Yw.Pump.CurveQH)curve_list.Find(x => x is Yw.Pump.CurveQH);
                 var qe = (Yw.Pump.CurveQE)curve_list.Find(x => x is Yw.Pump.CurveQE);
                var qe = (Yw.Pump.CurveQE)curve_list.Find(x => x is Yw.Pump.CurveQE);
                var qp = (Yw.Pump.CurveQP)curve_list.Find(x => x is Yw.Pump.CurveQP);
                if (qh == null)
                    continue;
                var vm = new PumpCurveViewModel();
                var vm = new PumpPerformCurveViewModel();
                vm.Hz = hz;
                vm.N = n;
                vm.CurveQH = new CurveQHViewModel(qh);
                vm.CurveQH = new QHViewModel(qh);
                if (qe != null)
                {
                    vm.CurveQE = new CurveQEViewModel(qe);
                    vm.CurveQE = new QEViewModel(qe);
                }
                if (qp != null)
                {
                    vm.CurveQP = new CurveQPViewModel(qp);
                    vm.CurveQP = new QPViewModel(qp);
                }
                vm_list.Add(vm);
            }
            return vm_list;
        }
        /// <summary>
        /// 获取泵曲线列表
        /// </summary>
        public static List<(double hz, double n, Yw.Vmo.PhartGraphVmo QH, Yw.Vmo.PhartGraphVmo QE, Yw.Vmo.PhartGraphVmo QP)> GetVmoList(this List<Yw.Vmo.PhartGraphVmo> vmo_list)
        {
            if (vmo_list == null || !vmo_list.Any())
            {
                return default;
            }
            var filter_list = new List<(double, double, Yw.Ahart.eCurveType, Yw.Vmo.PhartGraphVmo)>();
            foreach (var vmo in vmo_list)
            {
                if (vmo.GraphType == (int)HStation.PhartRelation.eGraphType.QH)
                {
                    var paras = QHGraphParasViewModel.ToModel(vmo.GraphParas);
                    if (paras != null)
                    {
                        var curve = Yw.Pump.CurveQHHelper.ToModel(vmo.GeometryInfo);
                        filter_list.Add((paras.Hz, paras.N, Yw.Ahart.eCurveType.QH, vmo));
                    }
                }
                else if (vmo.GraphType == (int)HStation.PhartRelation.eGraphType.QE)
                {
                    var paras = QEGraphParasViewModel.ToModel(vmo.GraphParas);
                    if (paras != null)
                    {
                        var curve = Yw.Pump.CurveQEHelper.ToModel(vmo.GeometryInfo);
                        filter_list.Add((paras.Hz, paras.N, Yw.Ahart.eCurveType.QE, vmo));
                    }
                }
                else if (vmo.GraphType == (int)HStation.PhartRelation.eGraphType.QP)
                {
                    var paras = QPGraphParasViewModel.ToModel(vmo.GraphParas);
                    if (paras != null)
                    {
                        var curve = Yw.Pump.CurveQPHelper.ToModel(vmo.GeometryInfo);
                        filter_list.Add((paras.Hz, paras.N, Yw.Ahart.eCurveType.QP, vmo));
                    }
                }
            }
            if (filter_list == null || !filter_list.Any())
            {
                return default;
            }
            var list = new List<(double hz, double n, Yw.Vmo.PhartGraphVmo QH, Yw.Vmo.PhartGraphVmo QE, Yw.Vmo.PhartGraphVmo QP)>();
            var group = filter_list.GroupBy(x => new { x.Item1, x.Item2 });
            foreach (var item_list in group)
            {
                var hz = item_list.Key.Item1;
                var n = item_list.Key.Item2;
                var curve_list = item_list.Select(x => x.Item4).ToList();
                var qh = curve_list.Find(x => x.GraphType == (int)HStation.PhartRelation.eGraphType.QH);
                var qe = curve_list.Find(x => x.GraphType == (int)HStation.PhartRelation.eGraphType.QE);
                var qp = curve_list.Find(x => x.GraphType == (int)HStation.PhartRelation.eGraphType.QP);
                if (qh == null)
                    continue;
                list.Add((hz, n, qh, qe, qp));
            }
            return list;
        }
        /// <summary>
        /// 获取泵曲线列表
        /// </summary>
        public static (Yw.Vmo.PhartGraphVmo QH, Yw.Vmo.PhartGraphVmo QE, Yw.Vmo.PhartGraphVmo QP) GetDefaultVmo(this Yw.Vmo.PhartDiagramExGraphListVmo vmo)
        {
            if (vmo == null)
            {
                return default;
            }
            var graph_list = vmo.GraphList;
            if (graph_list == null || !graph_list.Any())
            {
                return default;
            }
            var vmo_list = graph_list.GetVmoList();
            if (vmo_list == null || !vmo_list.Any())
            {
                return default;
            }
            var vmo_def = vmo_list.OrderBy(x => x.hz).LastOrDefault();
            return new(vmo_def.QH, vmo_def.QE, vmo_def.QP);
        }
        #endregion
@@ -150,12 +268,12 @@
        /// <summary>
        /// 获取等效线列表
        /// </summary> 
        public static List<CurveEqualEViewModel> GetCurveEqualEViewMdoelList(this Yw.Vmo.PhartDiagramExGraphListVmo vmo)
        public static List<EqualEViewModel> GetCurveEqualEViewMdoelList(this Yw.Vmo.PhartDiagramExGraphListVmo vmo)
        {
            if (vmo == null)
            {
                return default;
            }
            }
            var graph_list = vmo.GraphList;
            if (graph_list == null || !graph_list.Any())
            {
@@ -168,7 +286,7 @@
        /// <summary>
        /// 获取等效线列表
        /// </summary> 
        public static List<CurveEqualEViewModel> GetCurveEqualEViewMdoelList(this List<Yw.Vmo.PhartGraphVmo> vmo_list)
        public static List<EqualEViewModel> GetCurveEqualEViewMdoelList(this List<Yw.Vmo.PhartGraphVmo> vmo_list)
        {
            vmo_list = vmo_list?.Where(x => x.GraphType == (int)HStation.PhartRelation.eGraphType.EqualE).ToList();
            if (vmo_list == null || !vmo_list.Any())
@@ -176,14 +294,15 @@
                return default;
            }
            var vm_list = new List<CurveEqualEViewModel>();
            var vm_list = new List<EqualEViewModel>();
            foreach (var vmo in vmo_list)
            {
                var paras = HStation.Model.EqualEGraphParasModel.ToModel(vmo.GraphParas);
                var graph_paras = Yw.WinFrmUI.Phart.EqualEGraphParasViewModel.ToModel(vmo.GraphParas);
                var geometry_paras = Yw.WinFrmUI.Phart.CurveGeometryParasViewModel.ToModel(vmo.GeometryInfo);
                var curve = vmo.GetPerformCurve() as Yw.Pump.CurveEqualE;
                if (curve == null)
                    continue;
                var vm = new CurveEqualEViewModel(curve, paras);
                var vm = new EqualEViewModel(curve, graph_paras, geometry_paras);
                vm_list.Add(vm);
            }
            return vm_list;
@@ -197,12 +316,12 @@
        /// <summary>
        /// 获取等功线列表
        /// </summary> 
        public static List<CurveEqualPViewModel> GetCurveEqualPViewMdoelList(this Yw.Vmo.PhartDiagramExGraphListVmo vmo)
        public static List<EqualPViewModel> GetCurveEqualPViewMdoelList(this Yw.Vmo.PhartDiagramExGraphListVmo vmo)
        {
            if (vmo == null)
            {
                return default;
            }
            }
            var graph_list = vmo.GraphList;
            if (graph_list == null || !graph_list.Any())
            {
@@ -215,7 +334,7 @@
        /// <summary>
        /// 获取等功线列表
        /// </summary> 
        public static List<CurveEqualPViewModel> GetCurveEqualPViewMdoelList(this List<Yw.Vmo.PhartGraphVmo> vmo_list)
        public static List<EqualPViewModel> GetCurveEqualPViewMdoelList(this List<Yw.Vmo.PhartGraphVmo> vmo_list)
        {
            vmo_list = vmo_list?.Where(x => x.GraphType == (int)HStation.PhartRelation.eGraphType.EqualP).ToList();
            if (vmo_list == null || !vmo_list.Any())
@@ -223,14 +342,15 @@
                return default;
            }
            var vm_list = new List<CurveEqualPViewModel>();
            var vm_list = new List<EqualPViewModel>();
            foreach (var vmo in vmo_list)
            {
                var paras = HStation.Model.EqualPGraphParasModel.ToModel(vmo.GraphParas);
                var graph_paras = EqualPGraphParasViewModel.ToModel(vmo.GraphParas);
                var geometry_paras = Yw.WinFrmUI.Phart.CurveGeometryParasViewModel.ToModel(vmo.GeometryInfo);
                var curve = vmo.GetPerformCurve() as Yw.Pump.CurveEqualP;
                if (curve == null)
                    continue;
                var vm = new CurveEqualPViewModel(curve, paras);
                var vm = new EqualPViewModel(curve, graph_paras, geometry_paras);
                vm_list.Add(vm);
            }
            return vm_list;
@@ -250,7 +370,7 @@
        {
            if (vmo == null)
                return default;
            var performCurve = HStation.Service.PhartRelation.PhartGraphHelper.GetPerformCurve( (HStation.PhartRelation.eGeometryStyle) vmo.GeometryStyle, vmo.GeometryInfo);
            var performCurve = PhartGraphHelper.GetPerformCurve((Yw.Ahart.eCurveType)vmo.GraphType, vmo.GeometryInfo);
            return performCurve;
        }
@@ -261,9 +381,8 @@
        {
            if (vmo == null)
                return default;
            var graph_type = vmo.GraphType;
            var geometry_info = vmo.GeometryInfo;
            var pts = HStation.Service.PhartRelation.PhartGraphHelper.GetFeatPointList((HStation.PhartRelation.eGraphType)graph_type, geometry_info, point_number, min_space);
            var curve = vmo.GetPerformCurve();
            var pts = curve.FeatCurve.GetPointList(point_number, min_space);
            return pts?.ToList();
        }
@@ -275,20 +394,27 @@
            if (vmo == null)
                return default;
            var paras = vmo.GeometryParasModel();
            var define_pt_list = paras.DefinePoints;
            var define_pt_list = paras?.DefinePoints;
            var performCurve = HStation.Service.PhartRelation.PhartGraphHelper.GetPerformCurve((HStation.PhartRelation.eGeometryStyle)vmo.GeometryStyle, vmo.GeometryInfo);
            var performCurve = PhartGraphHelper.GetPerformCurve((Yw.Ahart.eCurveType)vmo.GraphType, vmo.GeometryInfo);
            var curve_type = (Yw.Ahart.eCurveType)vmo.GraphType;
            var feat_type = performCurve.FeatType;
            var line_pt_list = performCurve.FeatCurve.GetPointList(30);
            var line_pt_list = performCurve.FeatCurve.GetPointList(50);
            if (define_pt_list == null)
            {
                define_pt_list = line_pt_list?.Select(x => new Yw.Geometry.Point2d(x.X, x.Y)).ToList();
            }
            return new(curve_type, feat_type, define_pt_list, line_pt_list);
        }
        #endregion
        /// <summary>
        /// 获取特性曲线
        /// </summary>
        public static HStation.Model.FeatCurveGeometryParasModel GeometryParasModel(this Yw.Vmo.PhartGraphVmo vmo)
        public static CurveGeometryParasViewModel GeometryParasModel(this Yw.Vmo.PhartGraphVmo vmo)
        {
            if (vmo == null)
                return default;
@@ -296,7 +422,7 @@
                return default;
            if (vmo.GeometryStyle != (int)HStation.PhartRelation.eGeometryStyle.FeatCurve)
                return default;
            return HStation.Model.FeatCurveGeometryParasModel.ToModel(vmo.GeometryInfo);
            return CurveGeometryParasViewModel.ToModel(vmo.GeometryParas);
        }
    }