From b0a694ccba71736f9092f30e45be94689ce92416 Mon Sep 17 00:00:00 2001
From: lixiaojun <1287241240@qq.com>
Date: 星期一, 31 三月 2025 11:13:49 +0800
Subject: [PATCH] 计算模块替换

---
 WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/00-core/02-extensions/PhartVmoExtensions.cs |  225 +++++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 182 insertions(+), 43 deletions(-)

diff --git a/WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/00-core/02-extensions/PhartVmoExtensions.cs b/WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/00-core/02-extensions/PhartVmoExtensions.cs
index 2544cfb..9ebf979 100644
--- a/WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/00-core/02-extensions/PhartVmoExtensions.cs
+++ b/WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/00-core/02-extensions/PhartVmoExtensions.cs
@@ -1,4 +1,6 @@
-锘� namespace HStation.WinFrmUI
+锘縰sing 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,31 +381,50 @@
         {
             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();
         }
-
-        #endregion
-
-
 
         /// <summary>
         /// 鑾峰彇鐗规�ф洸绾�
         /// </summary>
-        public static (Yw.Ahart.eCurveType, Yw.Ahart.eFeatType, List<Yw.Geometry.Point2d>) GetCurveInfo(this Yw.Vmo.PhartGraphVmo vmo)
+        public static (Yw.Ahart.eCurveType curve_type, Yw.Ahart.eFeatType feat_type, List<Yw.Geometry.Point2d> define_pt_list, List<Yw.Geometry.Point2d> line_pt_list) GetCurveInfo(this Yw.Vmo.PhartGraphVmo vmo)
         {
             if (vmo == null)
                 return default;
+            var paras = vmo.GeometryParasModel();
+            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 pt_list = performCurve.FeatCurve.GetPointList(30);   
-            return new(curve_type, feat_type, pt_list);
-
+            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 CurveGeometryParasViewModel GeometryParasModel(this Yw.Vmo.PhartGraphVmo vmo)
+        {
+            if (vmo == null)
+                return default;
+            if (string.IsNullOrEmpty(vmo.GeometryParas))
+                return default;
+            if (vmo.GeometryStyle != (int)HStation.PhartRelation.eGeometryStyle.FeatCurve)
+                return default;
+            return CurveGeometryParasViewModel.ToModel(vmo.GeometryParas);
+        }
+
     }
 
 }

--
Gitblit v1.9.3