From f7bed326ef5948e76dd1a1b24a9ed10f5b2e5e4e Mon Sep 17 00:00:00 2001
From: duheng <2784771470@qq.com>
Date: 星期三, 04 十二月 2024 15:59:42 +0800
Subject: [PATCH] Merge branch 'master' of http://47.103.154.90:83/r/HStation/XHS.V1.0

---
 WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/03-variable-speed/PumpVariableSpeedViewItemViewModel.cs           |   43 --
 WinFrmUI/Yw.WinFrmUI.Phart.Core/02-valve/01-view/ValveViewChart.cs                                                  |    2 
 WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/03-variable-speed/PumpVariableSpeedViewModel.cs                   |   55 --
 WinFrmUI/Yw.WinFrmUI.Phart.Core/Yw.WinFrmUI.Phart.Core.csproj                                                       |    2 
 WinFrmUI/Yw.WinFrmUI.Phart.Core/02-valve/02-edit/ValveEditCtrl.cs                                                   |    2 
 WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/02-operation/PumpOperationChart.cs                                |   36 +-
 WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/04-run-view/PumpRunViewViewModel.cs                               |   17 
 WinFrmUI/Yw.WinFrmUI.Phart.Core/00-core/RandomColorHelper.cs                                                        |   64 ++++
 WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/04-run-view/PumpRunViewChart.cs                                   |  402 ++++++++++++++------------
 WinFrmUI/Yw.WinFrmUI.Phart.Core/02-valve/02-edit/ValveEditChart.cs                                                  |    2 
 WinFrmUI/Yw.WinFrmUI.Phart.Core/Yw.WinFrmUI.Phart.Core.csproj.user                                                  |    2 
 WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/02-operation/PumpOperationViewModel.cs                            |    3 
 WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/04-run-view/PumpRunViewChart.resx                                 |    0 
 WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/02-multi/01-parallel/PumpParallelChart.cs                                   |   10 
 WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/01-view/PumpViewChart.cs                                          |    6 
 WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/04-run-view/PumpRunViewChart.Designer.cs                          |   38 --
 WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/03-variable-speed/PumpVariableSpeedViewModel1.cs                  |  123 ++++++++
 WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/04-run-view/PumpRunViewItemViewModel.cs                           |   18 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/11-pump/03-analy/SimulationSingleWorkingPumpAnalyCtrl.Designer.cs |    4 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/11-pump/03-analy/SimulationMultiWorkingPumpAnalyCtrl.Designer.cs  |    4 
 WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/03-variable-speed/PumpVariableSpeedChart.cs                       |   10 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/11-pump/03-analy/SimulationSingleWorkingPumpAnalyCtrl.cs          |   10 
 WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/09-edit/PumpEditChart.cs                                          |    6 
 WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/09-edit/PumpEditChartCtrl.cs                                      |    6 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/11-pump/03-analy/SimulationMultiWorkingPumpAnalyCtrl.cs           |    8 
 25 files changed, 509 insertions(+), 364 deletions(-)

diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/11-pump/03-analy/SimulationMultiWorkingPumpAnalyCtrl.Designer.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/11-pump/03-analy/SimulationMultiWorkingPumpAnalyCtrl.Designer.cs
index c4a90cc..56755aa 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/11-pump/03-analy/SimulationMultiWorkingPumpAnalyCtrl.Designer.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/11-pump/03-analy/SimulationMultiWorkingPumpAnalyCtrl.Designer.cs
@@ -32,7 +32,7 @@
             hydroWorkingCheckedListHorizCtrl1 = new HydroWorkingCheckedListHorizCtrl();
             hydroPumpListViewCtrl1 = new HydroPumpListViewCtrl();
             panelControl1 = new PanelControl();
-            pumpVariableSpeedViewChart1 = new Yw.WinFrmUI.Phart.PumpVariableSpeedViewChart();
+            pumpVariableSpeedViewChart1 = new Yw.WinFrmUI.Phart.PumpRunViewChart();
             Root = new DevExpress.XtraLayout.LayoutControlGroup();
             layoutControlGroup1 = new DevExpress.XtraLayout.LayoutControlGroup();
             layoutControlItem1 = new DevExpress.XtraLayout.LayoutControlItem();
@@ -198,7 +198,7 @@
         private HydroWorkingCheckedListHorizCtrl hydroWorkingCheckedListHorizCtrl1;
         private HydroPumpListViewCtrl hydroPumpListViewCtrl1;
         private PanelControl panelControl1;
-        private Yw.WinFrmUI.Phart.PumpVariableSpeedViewChart pumpVariableSpeedViewChart1;
+        private Yw.WinFrmUI.Phart.PumpRunViewChart pumpVariableSpeedViewChart1;
         private DevExpress.XtraLayout.LayoutControlGroup Root;
         private DevExpress.XtraLayout.LayoutControlGroup layoutControlGroup1;
         private DevExpress.XtraLayout.LayoutControlItem layoutControlItem1;
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/11-pump/03-analy/SimulationMultiWorkingPumpAnalyCtrl.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/11-pump/03-analy/SimulationMultiWorkingPumpAnalyCtrl.cs
index a489040..e7230e4 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/11-pump/03-analy/SimulationMultiWorkingPumpAnalyCtrl.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/11-pump/03-analy/SimulationMultiWorkingPumpAnalyCtrl.cs
@@ -74,7 +74,7 @@
         }
 
         //鍒涘缓
-        private PumpVariableSpeedViewViewModel CreateViewModel()
+        private PumpRunViewViewModel CreateViewModel()
         {
             if (_hydroInfo == null)
             {
@@ -84,7 +84,7 @@
             {
                 return default;
             }
-            var vm = new PumpVariableSpeedViewViewModel();
+            var vm = new PumpRunViewViewModel();
             vm.Id = _pumpInfo.Code;
             vm.Name = _pumpInfo.Name;
             vm.CurveName = $"棰濆畾鏇茬嚎({_pumpInfo.RatedHz}hz)";
@@ -126,7 +126,7 @@
 
             if (_workingList != null && _workingList.Count > 0)
             {
-                vm.Items = new List<PumpVariableSpeedViewItemViewModel>();
+                vm.Items = new List<PumpRunViewItemViewModel>();
                 foreach (var working in _workingList)
                 {
                     var workingInfo = JsonHelper.Json2Object<HydroWorkingInfoViewModel>(working.WorkingInfo);
@@ -135,7 +135,7 @@
                         var workingPumpInfo = workingInfo.Pumps.Find(x => x.Code == _pumpInfo.Code);
                         if (workingPumpInfo != null)
                         {
-                            var vmItem = new PumpVariableSpeedViewItemViewModel();
+                            var vmItem = new PumpRunViewItemViewModel();
                             vm.Items.Add(vmItem);
                             vmItem.Id = working.ID.ToString();
                             vmItem.Name = working.Name;
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/11-pump/03-analy/SimulationSingleWorkingPumpAnalyCtrl.Designer.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/11-pump/03-analy/SimulationSingleWorkingPumpAnalyCtrl.Designer.cs
index 38fdd1b..5384916 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/11-pump/03-analy/SimulationSingleWorkingPumpAnalyCtrl.Designer.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/11-pump/03-analy/SimulationSingleWorkingPumpAnalyCtrl.Designer.cs
@@ -36,7 +36,7 @@
             layoutControlItem3 = new DevExpress.XtraLayout.LayoutControlItem();
             hydroPumpListStateViewCtrl1 = new HydroPumpListStateViewCtrl();
             layoutControlItem2 = new DevExpress.XtraLayout.LayoutControlItem();
-            pumpVariableSpeedViewChart1 = new Yw.WinFrmUI.Phart.PumpVariableSpeedViewChart();
+            pumpVariableSpeedViewChart1 = new Yw.WinFrmUI.Phart.PumpRunViewChart();
             ((ISupportInitialize)layoutControl1).BeginInit();
             layoutControl1.SuspendLayout();
             ((ISupportInitialize)panelControl1).BeginInit();
@@ -164,6 +164,6 @@
         private DevExpress.XtraLayout.LayoutControlItem layoutControlItem3;
         private HydroPumpListStateViewCtrl hydroPumpListStateViewCtrl1;
         private DevExpress.XtraLayout.LayoutControlItem layoutControlItem2;
-        private Yw.WinFrmUI.Phart.PumpVariableSpeedViewChart pumpVariableSpeedViewChart1;
+        private Yw.WinFrmUI.Phart.PumpRunViewChart pumpVariableSpeedViewChart1;
     }
 }
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/11-pump/03-analy/SimulationSingleWorkingPumpAnalyCtrl.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/11-pump/03-analy/SimulationSingleWorkingPumpAnalyCtrl.cs
index ec59e0a..35222cf 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/11-pump/03-analy/SimulationSingleWorkingPumpAnalyCtrl.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/11-pump/03-analy/SimulationSingleWorkingPumpAnalyCtrl.cs
@@ -53,17 +53,17 @@
                 return;
             }
             var vm = CreateViewModel(pump);
-            this.pumpVariableSpeedViewChart1.SetBindingData(vm);
+            this.pumpVariableSpeedViewChart1.SetBindingData(vm); 
         }
 
         //鍒涘缓
-        private PumpVariableSpeedViewViewModel CreateViewModel(Yw.Model.HydroPumpInfo pump)
+        private PumpRunViewViewModel CreateViewModel(Yw.Model.HydroPumpInfo pump)
         {
             if (_hydroInfo == null)
             {
                 return default;
             }
-            var vm = new PumpVariableSpeedViewViewModel();
+            var vm = new PumpRunViewViewModel();
             vm.Id = pump.Code;
             vm.Name = pump.Name;
             vm.CurveName = $"棰濆畾鏇茬嚎({pump.RatedHz}hz)";
@@ -105,8 +105,8 @@
 
             if (pump.LinkStatus == Yw.Hydro.PumpStatus.Open)
             {
-                vm.Items = new List<PumpVariableSpeedViewItemViewModel>();
-                var vmItem = new PumpVariableSpeedViewItemViewModel();
+                vm.Items = new List<PumpRunViewItemViewModel>();
+                var vmItem = new PumpRunViewItemViewModel();
                 vm.Items.Add(vmItem);
                 vmItem.Id = string.Empty;
                 vmItem.Name = "杩愯";
diff --git a/WinFrmUI/Yw.WinFrmUI.Phart.Core/00-core/RandomColorHelper.cs b/WinFrmUI/Yw.WinFrmUI.Phart.Core/00-core/RandomColorHelper.cs
new file mode 100644
index 0000000..5e72fa5
--- /dev/null
+++ b/WinFrmUI/Yw.WinFrmUI.Phart.Core/00-core/RandomColorHelper.cs
@@ -0,0 +1,64 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Yw.WinFrmUI.Phart
+{
+    /// <summary>
+    /// 闅忔満鑹茶緟鍔╃被
+    /// </summary>
+    public class RandomColorHelper
+    {
+
+        private static readonly List<Color> _color_array = new List<Color>()
+        {
+            Color.Red, Color.Blue, Color.Green,Color.DodgerBlue,
+            Color.Fuchsia, Color.MidnightBlue,  Color.Maroon, Color.Aquamarine,
+            Color.Bisque,Color.BurlyWood
+        };
+
+        /// <summary>
+        /// 鑾峰彇闅忔満棰滆壊
+        /// </summary>
+        /// <returns></returns>
+        public static Color Get(int count)
+        {
+            if (count < _color_array.Count)
+            {
+                return _color_array[count];
+            }
+
+            //var _random = new Random();
+            //int r = _random.Next(1, 256);
+            //int g = _random.Next(1, 256);
+            //int b = _random.Next(1, 256);
+            //return Color.FromArgb(r, g, b);
+
+            return GetRandomDarkColor();
+        }
+
+
+        private static Color GetRandomDarkColor()
+        {
+            Random random = new Random();
+            int r, g, b;
+            do
+            {
+                r = random.Next(256);
+                g = random.Next(256);
+                b = random.Next(256);
+            } while (CalculateBrightness(r, g, b) > 128); // 纭繚棰滆壊鏄繁鑹�
+
+            return Color.FromArgb(r, g, b);
+        }
+
+        private static int CalculateBrightness(int r, int g, int b)
+        {
+            // 璁$畻棰滆壊鐨勪寒搴︼紝浜害鍊艰秺浣庯紝棰滆壊瓒婃繁
+            return (r + g + b) / 3;
+        }
+
+    }
+}
diff --git a/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/01-view/PumpViewChart.cs b/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/01-view/PumpViewChart.cs
index 8707004..0f4d80e 100644
--- a/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/01-view/PumpViewChart.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/01-view/PumpViewChart.cs
@@ -279,13 +279,13 @@
             }
             List<Yw.Geometry.Point2d> qh_pt_list, qe_pt_list = null, qp_pt_list = null;
 
-            qh_pt_list = qh.GetPointList(12);
+            qh_pt_list = qh.GetPointList(100);
 
             if (qe != null)
-                qe_pt_list = qe.GetPointList(12);
+                qe_pt_list = qe.GetPointList(100);
 
             if (qp != null)
-                qp_pt_list = qp.GetPointList(12);
+                qp_pt_list = qp.GetPointList(100);
             SetBindingData(qh, qe, qp, qh_pt_list, qe_pt_list, qp_pt_list, null, qe_pt_list, null, coordinate_paras, calc_coordinate);
         }
 
diff --git a/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/02-operation/PumpOperationChart.cs b/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/02-operation/PumpOperationChart.cs
index 861dd54..361a259 100644
--- a/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/02-operation/PumpOperationChart.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/02-operation/PumpOperationChart.cs
@@ -260,14 +260,14 @@
                 return;
             }
 
-            start_head ??= _coordinate.DispMinH(); 
+            start_head ??= _coordinate.DispMinH();
             var equip_line = Yw.Geometry.EquipCurveHelper.CalcEquipCurve(_vm.CurveQH, _equip_pt, start_head.Value, out Yw.Geometry.Point2d sect_pt);
             if (equip_line == null || sect_pt == null)
                 return;
 
             _equip_line = equip_line;
             _equip_sect_pt = sect_pt;
-       
+
             double flow = 0, head = 0;
             double? eff = null, power = null;
             flow = sect_pt.X;
@@ -282,12 +282,12 @@
                 eff = _vm.CurveQE.GetPointY(flow);
                 power = PumpCalcHelper.CalculateP(flow, head, eff.Value);
             }
-             
+
             var design_pt_list = new List<PumpDesignPointViewModel>
             {
                 new() {
-                    Id = _vm.Id + "棰濆畾",
-                    Name = _vm.Name + "(棰濆畾)",
+                    Id = _vm.Id,
+                    Name = _vm.Name,
                     Q = flow,
                     H = head,
                     E = eff,
@@ -295,12 +295,12 @@
                     Hz = _vm.RatedHz,
                     N = _vm.RatedN
                 }
-            }; 
+            };
 
             if (_vm.CurrentStatus)
             {
                 var current_equip_line = Yw.Geometry.EquipCurveHelper.CalcEquipCurve(_vm.CurrentCurveQH, _equip_pt, start_head.Value, out Yw.Geometry.Point2d current_sect_pt);
-                if ( current_sect_pt == null)
+                if (current_sect_pt == null)
                     return;
                 double current_flow = 0, current_head = 0;
                 double? current_eff = null, current_power = null;
@@ -315,7 +315,7 @@
                 {
                     current_eff = _vm.CurrentCurveQE.GetPointY(current_flow);
                     current_power = PumpCalcHelper.CalculateP(current_flow, current_head, current_eff.Value);
-                } 
+                }
 
                 design_pt_list.Add(new()
                 {
@@ -329,7 +329,7 @@
                     N = _vm.CurrentN
                 });
 
-            } 
+            }
 
             this.DesignPointChangedEvent?.Invoke(design_pt_list);
             UpdateChart(true);
@@ -560,7 +560,7 @@
             }
 
             //鍔熺巼
-            if (_max_power > _min_power)
+            if (_max_power > _min_power && _qp_visible)
             {
                 //璁$畻鍒诲害
                 var labels = new List<CustomAxisLabel>();
@@ -782,7 +782,7 @@
             series_qh.View = series_qh_view;
             series_qh.Visible = true; 
 
-            var pt_qh_list = vm.CurveQH.GetPointList(12);
+            var pt_qh_list = vm.CurveQH.GetPointList(100);
             for (int i = 0; i < pt_qh_list.Count; i++)
             {
                 series_qh.Points.Add(new SeriesPoint(pt_qh_list[i].X, new double[] { pt_qh_list[i].Y }));
@@ -816,7 +816,7 @@
             txt_qh.RuntimeMoving = true;
             txt_qh.RuntimeResizing = false;
             txt_qh.RuntimeRotation = false;
-            txt_qh.Text = vm.Name;
+            txt_qh.Text = $"{vm.RatedN}({vm.RatedHz}hz)"; 
             txt_qh.TextColor = PumpChartDisplay.CurveColorQH;
             txt_qh.ShapePosition = position_qh;
             txt_qh.Visible = _line_name_visible;
@@ -848,7 +848,7 @@
                 series_qe.Visible = _qe_visible;
 
 
-                var pt_qe_list = vm.CurveQE.GetPointList(12);
+                var pt_qe_list = vm.CurveQE.GetPointList(100);
                 for (int i = 0; i < pt_qe_list.Count; i++)
                 {
                     series_qe.Points.Add(new SeriesPoint(pt_qe_list[i].X, new double[] { pt_qe_list[i].Y }));
@@ -881,7 +881,7 @@
                 series_qp.View = series_qp_view;
                 series_qp.Visible = _qp_visible;
 
-                var pt_qp_list = vm.CurveQP.GetPointList(12);
+                var pt_qp_list = vm.CurveQP.GetPointList(100);
                 for (int i = 0; i < pt_qp_list.Count; i++)
                 {
                     series_qp.Points.Add(new SeriesPoint(pt_qp_list[i].X, new double[] { pt_qp_list[i].Y }));
@@ -917,7 +917,7 @@
             series_qh.View = series_qh_view;
             series_qh.Visible = true;
 
-            var pt_qh_list = vm.CurrentCurveQH.GetPointList(12);
+            var pt_qh_list = vm.CurrentCurveQH.GetPointList(100);
             for (int i = 0; i < pt_qh_list.Count; i++)
             {
                 series_qh.Points.Add(new SeriesPoint(pt_qh_list[i].X, new double[] { pt_qh_list[i].Y }));
@@ -951,7 +951,7 @@
             txt_qh.RuntimeMoving = true;
             txt_qh.RuntimeResizing = false;
             txt_qh.RuntimeRotation = false;
-            txt_qh.Text = vm.Name;
+            txt_qh.Text = $"{vm.CurrentN}({vm.CurrentHz}hz)";
             txt_qh.TextColor = PumpChartDisplay.CurveColorQH;
             txt_qh.ShapePosition = position_qh;
             txt_qh.Visible = _line_name_visible;
@@ -981,7 +981,7 @@
                 series_qe.View = series_qe_view;
                 series_qe.Visible = _qe_visible;
 
-                var pt_qe_list = vm.CurrentCurveQE.GetPointList(12);
+                var pt_qe_list = vm.CurrentCurveQE.GetPointList(100);
                 for (int i = 0; i < pt_qe_list.Count; i++)
                 {
                     series_qe.Points.Add(new SeriesPoint(pt_qe_list[i].X, new double[] { pt_qe_list[i].Y }));
@@ -1013,7 +1013,7 @@
                 series_qp.View = series_qp_view;
                 series_qp.Visible = _qp_visible;
 
-                var pt_qp_list = vm.CurrentCurveQP.GetPointList(12);
+                var pt_qp_list = vm.CurrentCurveQP.GetPointList(100);
                 for (int i = 0; i < pt_qp_list.Count; i++)
                 {
                     series_qp.Points.Add(new SeriesPoint(pt_qp_list[i].X, new double[] { pt_qp_list[i].Y }));
diff --git a/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/02-operation/PumpOperationViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/02-operation/PumpOperationViewModel.cs
index 53e9c41..a19b332 100644
--- a/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/02-operation/PumpOperationViewModel.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/02-operation/PumpOperationViewModel.cs
@@ -9,7 +9,7 @@
         public PumpOperationViewModel(PumpOperationViewModel rhs)
         {
             this.Id = rhs.Id;
-            this.Name = rhs.Name;
+            this.Name = rhs.Name; 
             this.RatedQ = rhs.RatedQ;
             this.RatedH = rhs.RatedH;
             this.RatedP = rhs.RatedP;
@@ -37,6 +37,7 @@
         /// 鍚嶇О
         /// </summary>
         public string Name { get; set; }
+         
 
         /// <summary>
         /// 棰濆畾娴侀噺
diff --git a/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/03-variable-speed/PumpVariableSpeedChart.cs b/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/03-variable-speed/PumpVariableSpeedChart.cs
index 41b466b..4c5a303 100644
--- a/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/03-variable-speed/PumpVariableSpeedChart.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/03-variable-speed/PumpVariableSpeedChart.cs
@@ -1,8 +1,6 @@
 锘縰sing DevExpress.Utils;
 using DevExpress.Utils.Drawing;
 using DevExpress.XtraCharts;
-using System.Text;
-using Yw.Geometry;
 
 namespace Yw.WinFrmUI.Phart
 {
@@ -514,7 +512,7 @@
             }
 
             //鍔熺巼
-            if (_max_power > _min_power)
+            if (_max_power > _min_power && _qp_visible)
             {
                 //璁$畻鍒诲害
                 var labels = new List<CustomAxisLabel>();
@@ -687,7 +685,7 @@
             series_qh.View = series_qh_view;
             series_qh.Visible = true;
 
-            var pt_qh_list = vm.CurrentCurveQH.GetPointList(12);
+            var pt_qh_list = vm.CurrentCurveQH.GetPointList(100);
             for (int i = 0; i < pt_qh_list.Count; i++)
             {
                 series_qh.Points.Add(new SeriesPoint(pt_qh_list[i].X, new double[] { pt_qh_list[i].Y }));
@@ -751,7 +749,7 @@
                 series_qe.View = series_qe_view;
                 series_qe.Visible = _qe_visible;
 
-                var pt_qe_list = vm.CurrentCurveQE.GetPointList(12);
+                var pt_qe_list = vm.CurrentCurveQE.GetPointList(100);
                 for (int i = 0; i < pt_qe_list.Count; i++)
                 {
                     series_qe.Points.Add(new SeriesPoint(pt_qe_list[i].X, new double[] { pt_qe_list[i].Y }));
@@ -783,7 +781,7 @@
                 series_qp.View = series_qp_view;
                 series_qp.Visible = _qp_visible;
 
-                var pt_qp_list = vm.CurrentCurveQP.GetPointList(12);
+                var pt_qp_list = vm.CurrentCurveQP.GetPointList(100);
                 for (int i = 0; i < pt_qp_list.Count; i++)
                 {
                     series_qp.Points.Add(new SeriesPoint(pt_qp_list[i].X, new double[] { pt_qp_list[i].Y }));
diff --git a/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/04-variable-speed-view/PumpVariableSpeedViewItemViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/03-variable-speed/PumpVariableSpeedViewItemViewModel.cs
similarity index 60%
copy from WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/04-variable-speed-view/PumpVariableSpeedViewItemViewModel.cs
copy to WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/03-variable-speed/PumpVariableSpeedViewItemViewModel.cs
index 6dd156b..2f79926 100644
--- a/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/04-variable-speed-view/PumpVariableSpeedViewItemViewModel.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/03-variable-speed/PumpVariableSpeedViewItemViewModel.cs
@@ -3,18 +3,14 @@
     /// <summary>
     /// 娉靛彉閫� Item ViewModel
     /// </summary>
-    public class PumpVariableSpeedViewItemViewModel
+    public class PumpVariableSpeedItemViewModel
     {
-        public PumpVariableSpeedViewItemViewModel() { }
-        public PumpVariableSpeedViewItemViewModel(PumpVariableSpeedViewItemViewModel rhs)
+        public PumpVariableSpeedItemViewModel() { }
+        public PumpVariableSpeedItemViewModel(PumpVariableSpeedItemViewModel rhs)
         {
             this.Id = rhs.Id;
             this.Name = rhs.Name;
-            this.CurveName = rhs.CurveName;
-            this.Q = rhs.Q;
-            this.H = rhs.H;
-            this.P = rhs.P;
-            this.N = rhs.N;
+            this.CurveName = rhs.CurveName; 
             this.Hz = rhs.Hz;
 
             this.CurveQH = rhs.CurveQH;
@@ -37,31 +33,7 @@
         /// </summary>
         public string CurveName { get; set; }
 
-        /// <summary>
-        /// 娴侀噺
-        /// </summary>
-        public double Q { get; set; }
-
-        /// <summary>
-        /// 鎵▼
-        /// </summary>
-        public double H { get; set; }
-
-        /// <summary>
-        /// 鍔熺巼
-        /// </summary>
-        public double? P { get; set; }
-
-        /// <summary>
-        /// 鏁堢巼
-        /// </summary>
-        public double? E { get; set; }
-
-        /// <summary>
-        /// 杞��
-        /// </summary>
-        public double N { get; set; }
-
+         
         /// <summary>
         /// 棰戠巼
         /// </summary>
@@ -81,6 +53,11 @@
         /// 娴侀噺鍔熺巼绾�
         /// </summary>
         public Yw.Geometry.CubicSpline2d CurveQP { get; set; }
+         
+        /// <summary>
+        /// 棰滆壊
+        /// </summary>
+        public Color Color { get; set; }
 
 
     } 
diff --git a/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/03-variable-speed/PumpVariableSpeedViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/03-variable-speed/PumpVariableSpeedViewModel.cs
index 8768e46..c26b0b3 100644
--- a/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/03-variable-speed/PumpVariableSpeedViewModel.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/03-variable-speed/PumpVariableSpeedViewModel.cs
@@ -10,23 +10,19 @@
         {
             this.Id = rhs.Id;
             this.Name = rhs.Name;
+            this.CurveName = rhs.CurveName;
             this.RatedQ = rhs.RatedQ;
             this.RatedH = rhs.RatedH;
             this.RatedP = rhs.RatedP;
             this.RatedN = rhs.RatedN;
-            this.RatedHz = rhs.RatedHz; 
-            this.CurrentN = rhs.CurrentN;   
-            this.CurrentHz  = rhs.CurrentHz;
-            this.CurrentColor = rhs.CurrentColor;
+            this.RatedHz = rhs.RatedHz;
 
             this.CurveQH = rhs.CurveQH;
             this.CurveQE = rhs.CurveQE;
-            this.CurveQP = rhs.CurveQP; 
-            this.CurrentCurveQH= rhs.CurrentCurveQH;
-            this.CurrentCurveQE= rhs.CurrentCurveQE;
-            this.CurrentCurveQP = rhs.CurrentCurveQP;
-            this.EquipPoint = rhs.EquipPoint;
+            this.CurveQP = rhs.CurveQP;
+
         }
+
 
         /// <summary>
         /// 鏍囪瘑
@@ -37,7 +33,7 @@
         /// 鍚嶇О
         /// </summary>
         public string Name { get; set; }
- 
+
         /// <summary>
         /// 鍚嶇О
         /// </summary>
@@ -68,20 +64,6 @@
         /// </summary>
         public double RatedHz { get; set; }
 
-        /// <summary>
-        /// 褰撳墠杞��
-        /// </summary>
-        public double CurrentN { get; set; }
-
-        /// <summary>
-        /// 褰撳墠棰戠巼
-        /// </summary>
-        public double CurrentHz { get; set; }
-
-        /// <summary>
-        /// 褰撳墠棰滆壊
-        /// </summary>
-        public Color CurrentColor { get; set; }
 
         /// <summary>
         /// 娴侀噺鎵▼绾�
@@ -97,27 +79,16 @@
         /// 娴侀噺鍔熺巼绾�
         /// </summary>
         public Yw.Geometry.CubicSpline2d CurveQP { get; set; }
+         
+        /// <summary>
+        /// 鍙橀�熼」鍒楄〃
+        /// </summary>
+        public List<PumpVariableSpeedViewItemViewModel> Items { get; set; }
 
         /// <summary>
-        /// 褰撳墠娴侀噺鎵▼绾�
+        /// 棰滆壊
         /// </summary>
-        public Yw.Geometry.CubicSpline2d CurrentCurveQH { get; set; }
-
-        /// <summary>
-        /// 褰撳墠娴侀噺鏁堢巼绾�
-        /// </summary>
-        public Yw.Geometry.CubicSpline2d CurrentCurveQE { get; set; }
-
-        /// <summary>
-        /// 褰撳墠娴侀噺鍔熺巼绾�
-        /// </summary>
-        public Yw.Geometry.CubicSpline2d CurrentCurveQP { get; set; }  
-
-        /// <summary>
-        /// 瑁呯疆鐐�
-        /// </summary>
-        public Yw.Geometry.Point2d EquipPoint { get; set; }
-
+        public Color Color { get; set; }
     }
 
 }
diff --git a/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/03-variable-speed/PumpVariableSpeedViewModel1.cs b/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/03-variable-speed/PumpVariableSpeedViewModel1.cs
new file mode 100644
index 0000000..8768e46
--- /dev/null
+++ b/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/03-variable-speed/PumpVariableSpeedViewModel1.cs
@@ -0,0 +1,123 @@
+锘縩amespace Yw.WinFrmUI.Phart
+{
+    /// <summary>
+    /// 娉靛彉閫烿iewModel
+    /// </summary>
+    public class PumpVariableSpeedViewModel
+    {
+        public PumpVariableSpeedViewModel() { }
+        public PumpVariableSpeedViewModel(PumpVariableSpeedViewModel rhs)
+        {
+            this.Id = rhs.Id;
+            this.Name = rhs.Name;
+            this.RatedQ = rhs.RatedQ;
+            this.RatedH = rhs.RatedH;
+            this.RatedP = rhs.RatedP;
+            this.RatedN = rhs.RatedN;
+            this.RatedHz = rhs.RatedHz; 
+            this.CurrentN = rhs.CurrentN;   
+            this.CurrentHz  = rhs.CurrentHz;
+            this.CurrentColor = rhs.CurrentColor;
+
+            this.CurveQH = rhs.CurveQH;
+            this.CurveQE = rhs.CurveQE;
+            this.CurveQP = rhs.CurveQP; 
+            this.CurrentCurveQH= rhs.CurrentCurveQH;
+            this.CurrentCurveQE= rhs.CurrentCurveQE;
+            this.CurrentCurveQP = rhs.CurrentCurveQP;
+            this.EquipPoint = rhs.EquipPoint;
+        }
+
+        /// <summary>
+        /// 鏍囪瘑
+        /// </summary>
+        public string Id { get; set; }
+
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        public string Name { get; set; }
+ 
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        public string CurveName { get; set; }
+
+        /// <summary>
+        /// 棰濆畾娴侀噺
+        /// </summary>
+        public double RatedQ { get; set; }
+
+        /// <summary>
+        /// 棰濆畾鎵▼
+        /// </summary>
+        public double RatedH { get; set; }
+
+        /// <summary>
+        /// 棰濆畾鍔熺巼
+        /// </summary>
+        public double RatedP { get; set; }
+
+        /// <summary>
+        /// 棰濆畾杞��
+        /// </summary>
+        public double RatedN { get; set; }
+
+        /// <summary>
+        /// 棰濆畾棰戠巼
+        /// </summary>
+        public double RatedHz { get; set; }
+
+        /// <summary>
+        /// 褰撳墠杞��
+        /// </summary>
+        public double CurrentN { get; set; }
+
+        /// <summary>
+        /// 褰撳墠棰戠巼
+        /// </summary>
+        public double CurrentHz { get; set; }
+
+        /// <summary>
+        /// 褰撳墠棰滆壊
+        /// </summary>
+        public Color CurrentColor { get; set; }
+
+        /// <summary>
+        /// 娴侀噺鎵▼绾�
+        /// </summary>
+        public Yw.Geometry.CubicSpline2d CurveQH { get; set; }
+
+        /// <summary>
+        /// 娴侀噺鏁堢巼绾�
+        /// </summary>
+        public Yw.Geometry.CubicSpline2d CurveQE { get; set; }
+
+        /// <summary>
+        /// 娴侀噺鍔熺巼绾�
+        /// </summary>
+        public Yw.Geometry.CubicSpline2d CurveQP { get; set; }
+
+        /// <summary>
+        /// 褰撳墠娴侀噺鎵▼绾�
+        /// </summary>
+        public Yw.Geometry.CubicSpline2d CurrentCurveQH { get; set; }
+
+        /// <summary>
+        /// 褰撳墠娴侀噺鏁堢巼绾�
+        /// </summary>
+        public Yw.Geometry.CubicSpline2d CurrentCurveQE { get; set; }
+
+        /// <summary>
+        /// 褰撳墠娴侀噺鍔熺巼绾�
+        /// </summary>
+        public Yw.Geometry.CubicSpline2d CurrentCurveQP { get; set; }  
+
+        /// <summary>
+        /// 瑁呯疆鐐�
+        /// </summary>
+        public Yw.Geometry.Point2d EquipPoint { get; set; }
+
+    }
+
+}
diff --git a/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/04-variable-speed-view/PumpVariableSpeedViewChart.Designer.cs b/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/04-run-view/PumpRunViewChart.Designer.cs
similarity index 87%
rename from WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/04-variable-speed-view/PumpVariableSpeedViewChart.Designer.cs
rename to WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/04-run-view/PumpRunViewChart.Designer.cs
index 194ced6..b96fc0a 100644
--- a/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/04-variable-speed-view/PumpVariableSpeedViewChart.Designer.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/04-run-view/PumpRunViewChart.Designer.cs
@@ -1,6 +1,6 @@
 锘縩amespace Yw.WinFrmUI.Phart
 {
-    partial class PumpVariableSpeedViewChart
+    partial class PumpRunViewChart
     {
         /// <summary> 
         /// Requipuired designer variable.
@@ -29,11 +29,7 @@
         private void InitializeComponent()
         {
             components = new System.ComponentModel.Container();
-            DevExpress.XtraCharts.TextAnnotation textAnnotation1 = new DevExpress.XtraCharts.TextAnnotation();
-            DevExpress.XtraCharts.ChartAnchorPoint chartAnchorPoint1 = new DevExpress.XtraCharts.ChartAnchorPoint();
-            DevExpress.XtraCharts.RelativePosition relativePosition1 = new DevExpress.XtraCharts.RelativePosition();
             DevExpress.XtraCharts.XYDiagram xyDiagram1 = new DevExpress.XtraCharts.XYDiagram();
-            DevExpress.XtraCharts.ConstantLine constantLine1 = new DevExpress.XtraCharts.ConstantLine();
             DevExpress.XtraCharts.LayoutDefinition layoutDefinition1 = new DevExpress.XtraCharts.LayoutDefinition();
             DevExpress.XtraCharts.LayoutDefinition layoutDefinition2 = new DevExpress.XtraCharts.LayoutDefinition();
             DevExpress.XtraCharts.LayoutDefinition layoutDefinition3 = new DevExpress.XtraCharts.LayoutDefinition();
@@ -46,7 +42,7 @@
             DevExpress.XtraCharts.SplineSeriesView splineSeriesView2 = new DevExpress.XtraCharts.SplineSeriesView();
             DevExpress.XtraCharts.Series series3 = new DevExpress.XtraCharts.Series();
             DevExpress.XtraCharts.SplineSeriesView splineSeriesView3 = new DevExpress.XtraCharts.SplineSeriesView();
-            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(PumpVariableSpeedViewChart));
+            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(PumpRunViewChart));
             chartControl1 = new DevExpress.XtraCharts.ChartControl();
             barBtnSetChartAxis = new DevExpress.XtraBars.BarButtonItem();
             barCekCurveQEVisible = new DevExpress.XtraBars.BarCheckItem();
@@ -61,9 +57,7 @@
             barDockControlRight = new DevExpress.XtraBars.BarDockControl();
             bar1 = new DevExpress.XtraBars.Bar();
             ((System.ComponentModel.ISupportInitialize)chartControl1).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)textAnnotation1).BeginInit();
             ((System.ComponentModel.ISupportInitialize)xyDiagram1).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)constantLine1).BeginInit();
             ((System.ComponentModel.ISupportInitialize)xyDiagramPane1).BeginInit();
             ((System.ComponentModel.ISupportInitialize)secondaryAxisy1).BeginInit();
             ((System.ComponentModel.ISupportInitialize)secondaryAxisy2).BeginInit();
@@ -78,31 +72,7 @@
             // 
             // chartControl1
             // 
-            chartAnchorPoint1.X = 951;
-            chartAnchorPoint1.Y = 30;
-            textAnnotation1.AnchorPoint = chartAnchorPoint1;
-            textAnnotation1.AnnotationID = 0;
-            textAnnotation1.AutoHeight = true;
-            textAnnotation1.AutoWidth = true;
-            textAnnotation1.BackColor = Color.FromArgb(255, 255, 255);
-            textAnnotation1.ConnectorStyle = DevExpress.XtraCharts.AnnotationConnectorStyle.None;
-            textAnnotation1.Name = "TextAnnoWorkPoint";
-            relativePosition1.Angle = -131.51672853100234D;
-            relativePosition1.ConnectorLength = 81.467785044151043D;
-            textAnnotation1.ShapePosition = relativePosition1;
-            textAnnotation1.Text = "宸ヤ綔鐐�";
-            textAnnotation1.TextColor = Color.FromArgb(0, 0, 0);
-            chartControl1.AnnotationRepository.AddRange(new DevExpress.XtraCharts.Annotation[] { textAnnotation1 });
             chartControl1.BorderOptions.Visibility = DevExpress.Utils.DefaultBoolean.False;
-            constantLine1.AxisValueSerializable = "1";
-            constantLine1.ConstantLineID = 0;
-            constantLine1.LineStyle.LineJoin = System.Drawing.Drawing2D.LineJoin.Miter;
-            constantLine1.LineStyle.Thickness = 2;
-            constantLine1.Name = "WorkPointLine";
-            constantLine1.ShowInLegend = false;
-            constantLine1.Title.DXFont = new DevExpress.Drawing.DXFont("Tahoma", 8F);
-            constantLine1.Title.Text = "宸ヤ綔鐐�";
-            xyDiagram1.AxisX.ConstantLines.AddRange(new DevExpress.XtraCharts.ConstantLine[] { constantLine1 });
             xyDiagram1.AxisX.Title.Text = "娴侀噺 锛坢鲁/h锛�";
             xyDiagram1.AxisX.Title.Visibility = DevExpress.Utils.DefaultBoolean.Default;
             xyDiagram1.AxisX.VisibleInPanesSerializable = "-1";
@@ -213,7 +183,7 @@
             // barCekCurveEQVisible
             // 
             barCekCurveEQVisible.BindableChecked = true;
-            barCekCurveEQVisible.Caption = "瑁呯疆绾�";
+            barCekCurveEQVisible.Caption = "杩愯鐐�";
             barCekCurveEQVisible.Checked = true;
             barCekCurveEQVisible.Id = 22;
             barCekCurveEQVisible.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barCekCurveEQVisible.ImageOptions.SvgImage");
@@ -310,8 +280,6 @@
             Controls.Add(barDockControlTop);
             Name = "PumpVariableSpeedViewChart";
             Size = new Size(1023, 857);
-            ((System.ComponentModel.ISupportInitialize)textAnnotation1).EndInit();
-            ((System.ComponentModel.ISupportInitialize)constantLine1).EndInit();
             ((System.ComponentModel.ISupportInitialize)xyDiagramPane1).EndInit();
             ((System.ComponentModel.ISupportInitialize)secondaryAxisy1).EndInit();
             ((System.ComponentModel.ISupportInitialize)secondaryAxisy2).EndInit();
diff --git a/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/04-variable-speed-view/PumpVariableSpeedViewChart.cs b/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/04-run-view/PumpRunViewChart.cs
similarity index 69%
rename from WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/04-variable-speed-view/PumpVariableSpeedViewChart.cs
rename to WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/04-run-view/PumpRunViewChart.cs
index 9555024..8d4adc2 100644
--- a/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/04-variable-speed-view/PumpVariableSpeedViewChart.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/04-run-view/PumpRunViewChart.cs
@@ -5,11 +5,11 @@
 namespace Yw.WinFrmUI.Phart
 {
     /// <summary>
-    ///  娉靛彉閫熻鍥惧浘琛�
+    /// 娉佃繍琛岃鍥惧浘琛�
     /// </summary>
-    public partial class PumpVariableSpeedViewChart : DevExpress.XtraEditors.XtraUserControl
+    public partial class PumpRunViewChart : DevExpress.XtraEditors.XtraUserControl
     {
-        public PumpVariableSpeedViewChart()
+        public PumpRunViewChart()
         {
             InitializeComponent();
             InitialChart();
@@ -17,40 +17,36 @@
         }
 
         #region Private Variable 
-         
+
         private readonly string _tag_qh = "QH", _tag_qe = "QE", _tag_qp = "QP";
 
         private XYDiagram _diagram;
-        private XYDiagramDefaultPane _default_pane; 
+        private XYDiagramDefaultPane _default_pane;
         private XYDiagramPane _bottom_pane;
         private AxisX _axis_x_flow;
         private AxisY _axis_y_head;
-        private SecondaryAxisY _axis_y_eff, _axis_y_power; 
-         
+        private SecondaryAxisY _axis_y_eff, _axis_y_power;
+
         private PumpCoordinate _coordinate;
 
         private bool _qe_visible = true;
         private bool _qp_visible = true;
 
-        private bool _equip_visible = true;
-        private Yw.Geometry.CubicSpline2d _equip_line = null;
-        private Yw.Geometry.Point2d _equip_pt = null; 
-        private List<Tuple<string, Yw.Geometry.Point2d, Yw.Geometry.Point2d, Yw.Geometry.Point2d>> _equip_sect_pt_list;
+        private bool _run_visible = true; 
 
         private bool _initial_data = false;
 
-        private PumpVariableSpeedViewViewModel _vm = null;
+        private PumpRunViewViewModel _vm = null;
 
         #endregion
-         
+
         #region Public Evnet
 
         /// <summary>
         /// 鍧愭爣鍙樻崲浜嬩欢
         /// </summary>
         public event Action<PumpCoordinate> CoordinateChangedEvent = null;
-         
-  
+
         #endregion
 
         #region Initial
@@ -64,11 +60,11 @@
             this.chartControl1.Legend.Direction = DevExpress.XtraCharts.LegendDirection.TopToBottom;
 
             _diagram = (XYDiagram)this.chartControl1.Diagram;
-            _default_pane = _diagram.DefaultPane; 
+            _default_pane = _diagram.DefaultPane;
             _bottom_pane = (XYDiagramPane)_diagram.FindPaneByName("BottomPanel");
 
             _axis_x_flow = _diagram.AxisX;
-            _axis_x_flow.SetAxisXQDisplay();
+            _axis_x_flow.SetAxisXQDisplay(); 
             _axis_y_head = _diagram.AxisY;
             _axis_y_head.SetAxisYQHDisplay();
             _axis_y_eff = _diagram.SecondaryAxesY.GetAxisByName("AxisYQE");
@@ -77,7 +73,7 @@
             _axis_y_power = _diagram.SecondaryAxesY.GetAxisByName("AxisYQP");
             _axis_y_power.SetSecondaryAxisYQPDisplay();
 
-       
+            this.chartControl1.SetChartMonoColorDisplay(); 
 
             _axis_x_flow.Visibility = DefaultBoolean.False;
             _axis_x_flow.GridLines.Visible = false;
@@ -87,7 +83,7 @@
             _axis_y_eff.GridLines.Visible = false;
             _axis_y_power.Visibility = DefaultBoolean.False;
             _axis_y_power.GridLines.Visible = false;
-             
+
 
             this.chartControl1.CustomPaint += ChartControl1_CustomPaint;
         }
@@ -99,68 +95,34 @@
             if (_vm == null)
                 return;
 
-            if (_equip_line != null && _equip_sect_pt_list != null && _equip_sect_pt_list.Any() && _equip_visible)
+            if (_vm.Items!=null&&_vm.Items.Any()&& _run_visible)
             {
                 using Pen pen = new(Color.Black, 2);
                 pen.DashStyle = System.Drawing.Drawing2D.DashStyle.DashDotDot;
-                foreach (var tuple in _equip_sect_pt_list)
+                foreach (var vm in _vm.Items)
                 {
-                    DrawEquipPoint(dxArgs.Cache, pen, tuple.Item2, tuple.Item3, tuple.Item4);
+                    var color = vm.Color;
+                    var flow = vm.Q;
+                    var head = vm.H;
+                    var eff = vm.E;
+                    var power = vm.P;
+                    DrawWorkPoint(dxArgs.Cache, color, _axis_y_head, flow, head);
+                    if (eff.HasValue && _qe_visible)
+                        DrawWorkPoint(dxArgs.Cache, color, _axis_y_eff, flow, eff.Value);
+                    if (power.HasValue && _qp_visible)
+                        DrawWorkPoint(dxArgs.Cache, color, _axis_y_power, flow, power.Value);
                 }
-
-                DrawEquipLine(dxArgs.Cache, pen, _equip_line);
+                 
             }
         }
+         
 
-        private void DrawEquipLine(GraphicsCache cache, Pen pen, Yw.Geometry.CubicSpline2d qh)
+        private void DrawWorkPoint(GraphicsCache cache, Color color, AxisYBase axis_y, double x, double y)
         {
-            if (qh == null)
-                return;
-            var pt_list = qh.GetPointList().ToArray();
-            var pt_f_list = new List<PointF>();
-            foreach (var pt in pt_list)
-            {
-                var x = pt.X;
-                var y = pt.Y;
-                var c_pt = _diagram.DiagramToPoint(x, y, _axis_x_flow, _axis_y_head);
-                pt_f_list.Add(new PointF(c_pt.Point.X, c_pt.Point.Y));
-            }
-
-            using var path = new System.Drawing.Drawing2D.GraphicsPath();
-            path.AddCurve(pt_f_list.ToArray());
-            cache.DrawPath(pen, path);
+            var dg_pt = _diagram.DiagramToPoint(x, y, _axis_x_flow, axis_y);
+            cache.FillEllipse((int)(dg_pt.Point.X - 5), (int)(dg_pt.Point.Y - 5), 10, 10, color);
         }
-
-        private void DrawEquipPoint(GraphicsCache cache, Pen pen, Yw.Geometry.Point2d qh_sect_pt, Yw.Geometry.Point2d qe_sect_pt, Yw.Geometry.Point2d qp_sect_pt)
-        {
-            if (qh_sect_pt == null)
-                return;
-
-            var offset_size = 10;
-            var qh_x = qh_sect_pt.X;
-            var qh_pt = _diagram.DiagramToPoint(qh_sect_pt.X, qh_sect_pt.Y, _axis_x_flow, _axis_y_head);
-
-            var qh_pt_x = qh_pt.Point.X;
-            var qh_pt_y = qh_pt.Point.Y;
-            cache.DrawLine(pen, new Point(qh_pt_x, qh_pt_y - offset_size), new Point(qh_pt_x, qh_pt_y + offset_size));
-
-            if (qe_sect_pt != null && _qe_visible)
-            { 
-                var qe_pt = _diagram.DiagramToPoint(qe_sect_pt.X, qe_sect_pt.Y, _axis_x_flow, _axis_y_eff);
-                var qe_pt_x = qe_pt.Point.X;
-                var qe_pt_y = qe_pt.Point.Y;
-                cache.DrawLine(pen, new Point(qe_pt_x, qe_pt_y - offset_size), new Point(qe_pt_x, qe_pt_y + offset_size));
-            }
-            if (qp_sect_pt != null && _qp_visible)
-            {
-                var qp_pt = _diagram.DiagramToPoint(qp_sect_pt.X, qp_sect_pt.Y, _axis_x_flow, _axis_y_power);
-                var qp_pt_x = qp_pt.Point.X;
-                var qp_pt_y = qp_pt.Point.Y;
-                cache.DrawLine(pen, new Point(qp_pt_x, qp_pt_y - offset_size), new Point(qp_pt_x, qp_pt_y + offset_size));
-            }
-
-        }
-
+         
         /// <summary>
         /// 鍒濆鍖栧浘琛ㄦ暟鎹�
         /// </summary>
@@ -179,83 +141,14 @@
         /// <summary>
         /// 缁戝畾鏁版嵁
         /// </summary> 
-        public void SetBindingData(PumpVariableSpeedViewViewModel vm)
+        public void SetBindingData(PumpRunViewViewModel vm)
         {
             _vm = vm;
             _initial_data = vm != null;
             UpdateChart(true);
         }
 
-        /// <summary>
-        /// 璁剧疆璁捐鐐�
-        /// </summary> 
-        public void SetDesignPoint(double x, double y, double? start_head = null)
-        {
-            _equip_pt = new Geometry.Point2d(x, y);
-            _equip_line = null;
-            _equip_sect_pt_list = null;
-            if (_vm == null)
-            { 
-                return;
-            }
-
-            start_head ??= _coordinate.DispMinH();
-            
-            var equip_line = Yw.Geometry.EquipCurveHelper.CalcEquipCurve(_vm.CurveQH, _equip_pt, start_head.Value, out Yw.Geometry.Point2d sect_pt);
-            if (equip_line == null || sect_pt == null)
-                return;
-            _equip_line = equip_line;
-            _equip_sect_pt_list = new List<Tuple<string, Geometry.Point2d, Geometry.Point2d, Geometry.Point2d>>();
-
-            Yw.Geometry.Point2d sect_pt_eff=null, sect_pt_power = null;
-            if (_vm.CurveQE != null)
-            {
-                var eff = _vm.CurveQE.GetPointY(sect_pt.X);
-                sect_pt_eff = new Geometry.Point2d(sect_pt.X, eff);
-            }
-            if (_vm.CurveQP != null)
-            {
-                var power = _vm.CurveQP.GetPointY(sect_pt.X);
-                sect_pt_power = new Geometry.Point2d(sect_pt.X, power);
-            }
-
-            _equip_sect_pt_list.Add(new(_vm.Id, sect_pt,sect_pt_eff, sect_pt_power));
-            foreach (var vm in _vm.Items)
-            {
-                double flow = 0, head = 0;
-                double? eff = null, power = null;
-
-                var pump_equip_line = Yw.Geometry.EquipCurveHelper.CalcEquipCurve(vm.CurveQH, _equip_pt, start_head.Value, out Yw.Geometry.Point2d pump_sect_pt);
-                if (pump_equip_line == null || pump_sect_pt == null)
-                    return;
-                Yw.Geometry.Point2d pump_sect_pt_eff = null, pump_sect_pt_power = null;
-
-                flow = pump_sect_pt.X;
-                head = vm.CurveQH.GetPointYUnlimited(flow);
-                if (vm.CurveQP != null)
-                {
-                    power = vm.CurveQP.GetPointYUnlimited(flow);
-                    eff = PumpCalcHelper.CalculateE(flow, head, power.Value);
-
-                    pump_sect_pt_eff = new Geometry.Point2d(flow, eff.Value);
-                    pump_sect_pt_power = new Geometry.Point2d(flow, power.Value);
-                }
-                else if (vm.CurveQE != null)
-                {
-                    eff = vm.CurveQE.GetPointYUnlimited(flow);
-                    power = PumpCalcHelper.CalculateP(flow, head, eff.Value);
-
-                    pump_sect_pt_eff = new Geometry.Point2d(flow, eff.Value);
-                    pump_sect_pt_power = new Geometry.Point2d(flow, power.Value);
-                }
-
-                _equip_sect_pt_list.Add(new(vm.Id, new Geometry.Point2d(flow, head), pump_sect_pt_eff, pump_sect_pt_power));
-            }
-             
-            UpdateChart(true); 
-
-        }
-
+      
         /// <summary>
         /// 娓呯┖鏇茬嚎
         /// </summary> 
@@ -279,7 +172,7 @@
 
             CalcSeries();
 
-            CalcChartAxis(); 
+            CalcChartAxis();
         }
 
         #endregion
@@ -416,11 +309,9 @@
             _axis_y_eff.GridLines.Visible = false;
             _axis_y_power.Visibility = DefaultBoolean.False;
             _axis_y_power.GridLines.Visible = false;
-             
+
 
             _bottom_pane.Visibility = ChartElementVisibility.Hidden;
-
-
             _bottom_pane.Visibility = _qp_visible ? ChartElementVisibility.Visible : ChartElementVisibility.Hidden;
 
             //璁$畻鍒诲害 Q
@@ -471,7 +362,7 @@
             }
 
             //鍔熺巼
-            if (_max_power > _min_power)
+            if (_max_power > _min_power && _qp_visible)
             {
                 //璁$畻鍒诲害
                 var labels = new List<CustomAxisLabel>();
@@ -511,7 +402,7 @@
             var grid_count_power = _coordinate.EndLineNoP - _coordinate.StartLineNoP;
             var min_axis_power = _coordinate.CoordMinP + _coordinate.StartLineNoP * _coordinate.CoordSpaceP;
             var max_axis_power = min_axis_power + grid_count_power * _coordinate.CoordSpaceP;
-            _axis_y_power.SetAxisRange(min_axis_power, max_axis_power);  
+            _axis_y_power.SetAxisRange(min_axis_power, max_axis_power);
         }
 
         /// <summary>
@@ -521,36 +412,174 @@
         {
             this.chartControl1.BeginInit();
             this.chartControl1.Series.Clear();
-
-            var annotation_count = this.chartControl1.AnnotationRepository.Count;
-            for (int i = annotation_count - 1; i > 0; i--)
-            {
-                if (i == 0)
-                    break;
-                this.chartControl1.AnnotationRepository.RemoveAt(i);
-            }
-
+            this.chartControl1.AnnotationRepository.Clear();
             this.chartControl1.Legend.CustomItems.Clear();
+
             if (_vm != null)
             {
-                CreateLineSeries(_vm.Id, _vm.Name, _vm.CurveQH, _vm.CurveQE, _vm.CurveQP);
-                if (_vm.Items != null && _vm.Items.Any())
+                if (_vm.Items == null || !_vm.Items.Any())
                 {
-                    foreach (var vm in _vm.Items)
+                    CreateLineSeries(_vm.Id, _vm.Color, _vm.Name, _vm.CurveQH, _vm.CurveQE, _vm.CurveQP);
+                }
+                else
+                {
+                    if (_vm.Items != null && _vm.Items.Any())
                     {
-                        CreateLineSeries(vm.Id, vm.Name, vm.CurveQH, vm.CurveQE, vm.CurveQP);
+                        if (_vm.Items[0].Hz != 50)
+                            CreateLineSeries(_vm.Id, _vm.Color, _vm.Name, _vm.CurveQH, _vm.CurveQE, _vm.CurveQP);
+                        for (int i = 0; i < _vm.Items.Count; i++)
+                        {
+                            var vm = _vm.Items[i];
+                            CreateCurrentLineSeries(vm.Id, vm.Color, vm.CurveName, vm.CurveQH, vm.CurveQE, vm.CurveQP);
+                        }
                     }
-                } 
+                }
             }
 
             this.chartControl1.EndInit();
         }
-        銆�
+
 
         /// <summary>
         /// 鍒涘缓绾跨郴鍒�
         /// </summary> 
-        private void CreateLineSeries(string id, string curve_name, Yw.Geometry.CubicSpline2d qh, Yw.Geometry.CubicSpline2d qe, Yw.Geometry.CubicSpline2d qp)
+        private void CreateLineSeries(string id, Color color, string curve_name, Yw.Geometry.CubicSpline2d qh, Yw.Geometry.CubicSpline2d qe, Yw.Geometry.CubicSpline2d qp)
+        {
+            var series_qh = new DevExpress.XtraCharts.Series();
+            series_qh.ArgumentScaleType = DevExpress.XtraCharts.ScaleType.Numerical;
+            series_qh.LabelsVisibility = DevExpress.Utils.DefaultBoolean.False;
+            series_qh.Name = _tag_qh + id;
+            series_qh.ShowInLegend = false;
+            series_qh.CrosshairEnabled = DefaultBoolean.False;
+            series_qh.LegendTextPattern = curve_name;
+            
+            var series_qh_view = new DevExpress.XtraCharts.LineSeriesView();
+            series_qh_view.LineStyle.Thickness = 2;
+            series_qh_view.LineStyle.DashStyle = DashStyle.Dash;
+            series_qh_view.LineStyle.LineJoin = System.Drawing.Drawing2D.LineJoin.MiterClipped;
+            series_qh_view.Color = color;
+            series_qh_view.EnableAntialiasing = DefaultBoolean.True;
+
+            series_qh.SeriesPointsSorting = SortingMode.None;
+            series_qh.SeriesPointsSortingKey = SeriesPointKey.Value_1;
+            series_qh.View = series_qh_view;
+            series_qh.Visible = true;
+
+            var pt_qh_list = qh.GetPointList(100);
+            for (int i = 0; i < pt_qh_list.Count; i++)
+            {
+                series_qh.Points.Add(new SeriesPoint(pt_qh_list[i].X, new double[] { pt_qh_list[i].Y }));
+            }
+
+            var point_qh = pt_qh_list[pt_qh_list.Count - 1];
+            var anchor_qh_pt = new DevExpress.XtraCharts.PaneAnchorPoint();
+            anchor_qh_pt.Pane = _default_pane;
+            anchor_qh_pt.AxisXCoordinate.AxisValue = point_qh.X.ToString();
+            anchor_qh_pt.AxisYCoordinate.AxisValue = point_qh.Y.ToString();
+
+            var position_qh = new DevExpress.XtraCharts.RelativePosition();
+            position_qh.Angle = -50;
+            position_qh.ConnectorLength = 10;
+
+            var txt_qh = new TextAnnotation();
+            txt_qh.Border.Visibility = DefaultBoolean.False;
+            txt_qh.AnchorPoint = anchor_qh_pt;
+            txt_qh.AutoHeight = true;
+            txt_qh.AutoWidth = true;
+            txt_qh.BackColor = System.Drawing.Color.Transparent;
+            txt_qh.Border.Color = color;
+            txt_qh.ConnectorStyle = DevExpress.XtraCharts.AnnotationConnectorStyle.Line;
+            txt_qh.DXFont = PumpChartDisplay.AnnoFontQH;
+            txt_qh.Name = _tag_qh + id;
+            txt_qh.Padding.Bottom = 1;
+            txt_qh.Padding.Left = 1;
+            txt_qh.Padding.Right = 1;
+            txt_qh.Padding.Top = 1;
+            txt_qh.RuntimeAnchoring = false;
+            txt_qh.RuntimeMoving = true;
+            txt_qh.RuntimeResizing = false;
+            txt_qh.RuntimeRotation = false;
+            txt_qh.Text = curve_name;
+            txt_qh.TextColor = color;
+            txt_qh.ShapePosition = position_qh;
+            txt_qh.Visible = true;
+            this.chartControl1.AnnotationRepository.Add(txt_qh);
+            this.chartControl1.Series.Add(series_qh);
+
+            if (qe != null)
+            {
+                var series_qe = new DevExpress.XtraCharts.Series();
+                series_qe.ArgumentScaleType = DevExpress.XtraCharts.ScaleType.Numerical;
+                series_qe.LabelsVisibility = DevExpress.Utils.DefaultBoolean.False;
+                series_qe.Name = _tag_qe + id;
+                series_qe.ShowInLegend = false;
+                series_qe.CrosshairEnabled = DefaultBoolean.False;
+                series_qe.Tag = id;
+                 
+
+                var series_qe_view = new DevExpress.XtraCharts.LineSeriesView();
+                series_qe_view.LineStyle.Thickness = 2;
+                series_qe_view.LineStyle.DashStyle = DashStyle.Dash;
+                series_qe_view.LineStyle.LineJoin = System.Drawing.Drawing2D.LineJoin.MiterClipped;
+                series_qe_view.Color = color;
+                series_qe_view.AxisY = _axis_y_eff;
+                series_qe_view.Pane = _default_pane;
+                series_qe_view.EnableAntialiasing = DefaultBoolean.True; 
+
+                series_qe.SeriesPointsSorting = SortingMode.None;
+                series_qe.SeriesPointsSortingKey = SeriesPointKey.Value_1;
+                series_qe.View = series_qe_view;
+                series_qe.Visible = _qe_visible;
+
+                var pt_qe_list = qe.GetPointList(100);
+                for (int i = 0; i < pt_qe_list.Count; i++)
+                {
+                    series_qe.Points.Add(new SeriesPoint(pt_qe_list[i].X, new double[] { pt_qe_list[i].Y }));
+                }
+
+                this.chartControl1.Series.Add(series_qe);
+            }
+
+            if (qp != null)
+            {
+                var series_qp = new DevExpress.XtraCharts.Series();
+                series_qp.ArgumentScaleType = DevExpress.XtraCharts.ScaleType.Numerical;
+                series_qp.LabelsVisibility = DevExpress.Utils.DefaultBoolean.False;
+                series_qp.Name = _tag_qp + id;
+                series_qp.ShowInLegend = false;
+                series_qp.CrosshairEnabled = DefaultBoolean.False;
+                series_qp.Tag = id;
+
+                var series_qp_view = new DevExpress.XtraCharts.LineSeriesView();
+                series_qp_view.LineStyle.Thickness = 2;
+                series_qp_view.LineStyle.DashStyle = DashStyle.Dash;
+                series_qp_view.LineStyle.LineJoin = System.Drawing.Drawing2D.LineJoin.MiterClipped; 
+                series_qp_view.Color = color;
+                series_qp_view.AxisY = _axis_y_power;
+                series_qp_view.Pane = _bottom_pane;
+                series_qp_view.EnableAntialiasing = DefaultBoolean.True; 
+
+                series_qp.SeriesPointsSorting = SortingMode.None;
+                series_qp.SeriesPointsSortingKey = SeriesPointKey.Value_1;
+                series_qp.View = series_qp_view;
+                series_qp.Visible = _qp_visible;
+
+                var pt_qp_list = qp.GetPointList(100);
+                for (int i = 0; i < pt_qp_list.Count; i++)
+                {
+                    series_qp.Points.Add(new SeriesPoint(pt_qp_list[i].X, new double[] { pt_qp_list[i].Y }));
+                }
+
+                this.chartControl1.Series.Add(series_qp);
+            }
+
+        }
+
+
+        /// <summary>
+        /// 鍒涘缓绾跨郴鍒�
+        /// </summary> 
+        private void CreateCurrentLineSeries(string id, Color color, string curve_name, Yw.Geometry.CubicSpline2d qh, Yw.Geometry.CubicSpline2d qe, Yw.Geometry.CubicSpline2d qp)
         {
             var series_qh = new DevExpress.XtraCharts.Series();
             series_qh.ArgumentScaleType = DevExpress.XtraCharts.ScaleType.Numerical;
@@ -563,7 +592,7 @@
 
             var series_qh_view = new DevExpress.XtraCharts.SplineSeriesView();
             series_qh_view.LineStyle.Thickness = 2;
-            //series_qh_view.Color = vm.Color;
+            series_qh_view.Color = color;
             series_qh_view.EnableAntialiasing = DefaultBoolean.True;
             series_qh_view.LineTensionPercent = 50;
 
@@ -572,7 +601,7 @@
             series_qh.View = series_qh_view;
             series_qh.Visible = true;
 
-            var pt_qh_list = qh.GetPointList(12);
+            var pt_qh_list = qh.GetPointList(100);
             for (int i = 0; i < pt_qh_list.Count; i++)
             {
                 series_qh.Points.Add(new SeriesPoint(pt_qh_list[i].X, new double[] { pt_qh_list[i].Y }));
@@ -594,7 +623,7 @@
             txt_qh.AutoHeight = true;
             txt_qh.AutoWidth = true;
             txt_qh.BackColor = System.Drawing.Color.Transparent;
-            //txt_qh.Border.Color = vm.Color;
+            txt_qh.Border.Color = color;
             txt_qh.ConnectorStyle = DevExpress.XtraCharts.AnnotationConnectorStyle.Line;
             txt_qh.DXFont = PumpChartDisplay.AnnoFontQH;
             txt_qh.Name = _tag_qh + id;
@@ -607,7 +636,7 @@
             txt_qh.RuntimeResizing = false;
             txt_qh.RuntimeRotation = false;
             txt_qh.Text = curve_name;
-            //txt_qh.TextColor = vm.Color;
+            txt_qh.TextColor = color;
             txt_qh.ShapePosition = position_qh;
             txt_qh.Visible = true;
             this.chartControl1.AnnotationRepository.Add(txt_qh);
@@ -625,7 +654,7 @@
 
                 var series_qe_view = new DevExpress.XtraCharts.SplineSeriesView();
                 series_qe_view.LineStyle.Thickness = 2;
-                //series_qe_view.Color = vm.Color;
+                series_qe_view.Color = color;
                 series_qe_view.AxisY = _axis_y_eff;
                 series_qe_view.Pane = _default_pane;
                 series_qe_view.EnableAntialiasing = DefaultBoolean.True;
@@ -636,7 +665,7 @@
                 series_qe.View = series_qe_view;
                 series_qe.Visible = _qe_visible;
 
-                var pt_qe_list = qe.GetPointList(12);
+                var pt_qe_list = qe.GetPointList(100);
                 for (int i = 0; i < pt_qe_list.Count; i++)
                 {
                     series_qe.Points.Add(new SeriesPoint(pt_qe_list[i].X, new double[] { pt_qe_list[i].Y }));
@@ -657,7 +686,7 @@
 
                 var series_qp_view = new DevExpress.XtraCharts.SplineSeriesView();
                 series_qp_view.LineStyle.Thickness = 2;
-                //series_qp_view.Color = vm.Color;
+                series_qp_view.Color = color;
                 series_qp_view.AxisY = _axis_y_power;
                 series_qp_view.Pane = _bottom_pane;
                 series_qp_view.EnableAntialiasing = DefaultBoolean.True;
@@ -668,33 +697,32 @@
                 series_qp.View = series_qp_view;
                 series_qp.Visible = _qp_visible;
 
-                var pt_qp_list = qp.GetPointList(12);
+                var pt_qp_list = qp.GetPointList(100);
                 for (int i = 0; i < pt_qp_list.Count; i++)
                 {
                     series_qp.Points.Add(new SeriesPoint(pt_qp_list[i].X, new double[] { pt_qp_list[i].Y }));
                 }
 
                 this.chartControl1.Series.Add(series_qp);
-            } 
+            }
+
         }
 
-        
+
         #endregion
-
- 
-
+         
         #region Right Click Menu 
 
         #region Event
-       
+
         private void barBtnSetChartAxis_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
         {
             SetChartAxis();
-        } 
-      
+        }
+
         private void barCekCurveQEVisible_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
         {
-             _qe_visible = this.barCekCurveQEVisible.Checked;
+            _qe_visible = this.barCekCurveQEVisible.Checked;
             UpdateChart();
         }
 
@@ -702,17 +730,17 @@
         {
             _bottom_pane.Visibility = _bottom_pane.Visibility == ChartElementVisibility.Visible ? ChartElementVisibility.Hidden : ChartElementVisibility.Visible;
             _qp_visible = _bottom_pane.Visibility == ChartElementVisibility.Visible ? true : false;
-
+            UpdateChart();
         }
 
         private void barCekCurveEQVisible_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
         {
-            _equip_visible = this.barCekCurveEQVisible.Checked; 
+            _run_visible = this.barCekCurveEQVisible.Checked;
         }
 
         #endregion
- 
-  
+
+
         /// <summary>
         /// 璁剧疆鍧愭爣杞�
         /// </summary>
@@ -731,8 +759,8 @@
 
         #endregion
 
-       
-         
+
+
 
     }
 
diff --git a/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/04-variable-speed-view/PumpVariableSpeedViewChart.resx b/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/04-run-view/PumpRunViewChart.resx
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/04-variable-speed-view/PumpVariableSpeedViewChart.resx
rename to WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/04-run-view/PumpRunViewChart.resx
diff --git a/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/04-variable-speed-view/PumpVariableSpeedViewItemViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/04-run-view/PumpRunViewItemViewModel.cs
similarity index 81%
rename from WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/04-variable-speed-view/PumpVariableSpeedViewItemViewModel.cs
rename to WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/04-run-view/PumpRunViewItemViewModel.cs
index 6dd156b..ac01990 100644
--- a/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/04-variable-speed-view/PumpVariableSpeedViewItemViewModel.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/04-run-view/PumpRunViewItemViewModel.cs
@@ -1,16 +1,17 @@
 锘縩amespace Yw.WinFrmUI.Phart
 {
     /// <summary>
-    /// 娉靛彉閫� Item ViewModel
+    /// 娉佃繍琛岃鍥� Item ViewModel
     /// </summary>
-    public class PumpVariableSpeedViewItemViewModel
+    public class PumpRunViewItemViewModel
     {
-        public PumpVariableSpeedViewItemViewModel() { }
-        public PumpVariableSpeedViewItemViewModel(PumpVariableSpeedViewItemViewModel rhs)
+        public PumpRunViewItemViewModel() { }
+        public PumpRunViewItemViewModel(PumpRunViewItemViewModel rhs)
         {
             this.Id = rhs.Id;
             this.Name = rhs.Name;
             this.CurveName = rhs.CurveName;
+            this.Color = rhs.Color;
             this.Q = rhs.Q;
             this.H = rhs.H;
             this.P = rhs.P;
@@ -19,7 +20,7 @@
 
             this.CurveQH = rhs.CurveQH;
             this.CurveQE = rhs.CurveQE;
-            this.CurveQP = rhs.CurveQP; 
+            this.CurveQP = rhs.CurveQP;
         }
 
         /// <summary>
@@ -36,6 +37,11 @@
         /// 鍚嶇О
         /// </summary>
         public string CurveName { get; set; }
+
+        /// <summary>
+        /// 棰滆壊
+        /// </summary>
+        public Color Color { get; set; }
 
         /// <summary>
         /// 娴侀噺
@@ -81,6 +87,8 @@
         /// 娴侀噺鍔熺巼绾�
         /// </summary>
         public Yw.Geometry.CubicSpline2d CurveQP { get; set; }
+         
+  
 
 
     } 
diff --git a/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/04-variable-speed-view/PumpVariableSpeedViewViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/04-run-view/PumpRunViewViewModel.cs
similarity index 83%
rename from WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/04-variable-speed-view/PumpVariableSpeedViewViewModel.cs
rename to WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/04-run-view/PumpRunViewViewModel.cs
index 73c4457..6b65813 100644
--- a/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/04-variable-speed-view/PumpVariableSpeedViewViewModel.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/04-run-view/PumpRunViewViewModel.cs
@@ -1,16 +1,17 @@
 锘縩amespace Yw.WinFrmUI.Phart
 {
     /// <summary>
-    /// 娉靛彉閫烿iewModel
+    /// 娉佃繍琛岃鍥綱iewModel
     /// </summary>
-    public class PumpVariableSpeedViewViewModel
+    public class PumpRunViewViewModel
     {
-        public PumpVariableSpeedViewViewModel() { }
-        public PumpVariableSpeedViewViewModel(PumpVariableSpeedViewViewModel rhs)
+        public PumpRunViewViewModel() { }
+        public PumpRunViewViewModel(PumpRunViewViewModel rhs)
         {
             this.Id = rhs.Id;
             this.Name = rhs.Name;
             this.CurveName = rhs.CurveName;
+            this.Color= rhs.Color;
             this.RatedQ = rhs.RatedQ;
             this.RatedH = rhs.RatedH;
             this.RatedP = rhs.RatedP;
@@ -38,6 +39,11 @@
         /// 鍚嶇О
         /// </summary>
         public string CurveName { get; set; }
+
+        /// <summary>
+        /// 棰滆壊
+        /// </summary>
+        public Color Color { get; set; }
 
         /// <summary>
         /// 棰濆畾娴侀噺
@@ -83,8 +89,7 @@
         /// <summary>
         /// 鍙橀�熼」鍒楄〃
         /// </summary>
-        public List<PumpVariableSpeedViewItemViewModel> Items { get; set; }
-
+        public List<PumpRunViewItemViewModel> Items { get; set; }
     }
 
 }
diff --git a/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/09-edit/PumpEditChart.cs b/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/09-edit/PumpEditChart.cs
index dfa81f2..bafc46f 100644
--- a/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/09-edit/PumpEditChart.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/09-edit/PumpEditChart.cs
@@ -172,13 +172,13 @@
 
             List<Yw.Geometry.Point2d> qh_pt_list, qe_pt_list = null, qp_pt_list = null;
 
-            qh_pt_list = qh.GetPointList(12);
+            qh_pt_list = qh.GetPointList(100);
 
             if (qe != null)
-                qe_pt_list = qe.GetPointList(12);
+                qe_pt_list = qe.GetPointList(100);
 
             if (qp != null)
-                qp_pt_list = qp.GetPointList(12);
+                qp_pt_list = qp.GetPointList(100);
 
 
             SetBindingData(qh_pt_list, qe_pt_list, qp_pt_list, qh_pt_list, qe_pt_list, qp_pt_list, coordinate_paras, calc_coordinate);
diff --git a/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/09-edit/PumpEditChartCtrl.cs b/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/09-edit/PumpEditChartCtrl.cs
index 9b84283..b43eafa 100644
--- a/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/09-edit/PumpEditChartCtrl.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/09-edit/PumpEditChartCtrl.cs
@@ -52,13 +52,13 @@
                 return;
             List<Yw.Geometry.Point2d> qh_pt_list, qe_pt_list = null, qp_pt_list = null;
 
-            qh_pt_list = qh.GetPointList(12);
+            qh_pt_list = qh.GetPointList(100);
 
             if (qe != null)
-                qe_pt_list = qe.GetPointList(12);
+                qe_pt_list = qe.GetPointList(100);
 
             if (qp != null)
-                qp_pt_list = qp.GetPointList(12);
+                qp_pt_list = qp.GetPointList(100);
 
             SetBindingData(qh_pt_list, qe_pt_list, qp_pt_list, qh_pt_list, qe_pt_list, qp_pt_list);
 
diff --git a/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/02-multi/01-parallel/PumpParallelChart.cs b/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/02-multi/01-parallel/PumpParallelChart.cs
index 62178c3..a306f38 100644
--- a/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/02-multi/01-parallel/PumpParallelChart.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/02-multi/01-parallel/PumpParallelChart.cs
@@ -198,7 +198,7 @@
 
         private void DrawExpandLine(GraphicsCache cache, Pen pen, AxisYBase axis_y, Yw.Geometry.CubicSpline2d line, double x_max)
         {
-            var pt_list = line.GetPointList(12).ToList();
+            var pt_list = line.GetPointList(100).ToList();
             pt_list = pt_list?.Where(x => x.X > x_max).ToList();
             if (pt_list == null || !pt_list.Any())
                 return; 
@@ -584,7 +584,7 @@
             }
 
             //鍔熺巼
-            if (_max_power > _min_power)
+            if (_max_power > _min_power && _qp_visible)
             {
                 //璁$畻鍒诲害
                 var labels = new List<CustomAxisLabel>();
@@ -851,7 +851,7 @@
             series_qh.View = series_qh_view;
             series_qh.Visible = true;
 
-            var pt_qh_list = vm.CurrentCurveQH.GetPointList(12);
+            var pt_qh_list = vm.CurrentCurveQH.GetPointList(100);
             for (int i = 0; i < pt_qh_list.Count; i++)
             {
                 series_qh.Points.Add(new SeriesPoint(pt_qh_list[i].X, new double[] { pt_qh_list[i].Y }));
@@ -915,7 +915,7 @@
                 series_qe.View = series_qe_view;
                 series_qe.Visible = _qe_visible;
 
-                var pt_qe_list = vm.CurrentCurveQE.GetPointList(12);
+                var pt_qe_list = vm.CurrentCurveQE.GetPointList(100);
                 for (int i = 0; i < pt_qe_list.Count; i++)
                 {
                     series_qe.Points.Add(new SeriesPoint(pt_qe_list[i].X, new double[] { pt_qe_list[i].Y }));
@@ -947,7 +947,7 @@
                 series_qp.View = series_qp_view;
                 series_qp.Visible = _qp_visible;
 
-                var pt_qp_list = vm.CurrentCurveQP.GetPointList(12);
+                var pt_qp_list = vm.CurrentCurveQP.GetPointList(100);
                 for (int i = 0; i < pt_qp_list.Count; i++)
                 {
                     series_qp.Points.Add(new SeriesPoint(pt_qp_list[i].X, new double[] { pt_qp_list[i].Y }));
diff --git a/WinFrmUI/Yw.WinFrmUI.Phart.Core/02-valve/01-view/ValveViewChart.cs b/WinFrmUI/Yw.WinFrmUI.Phart.Core/02-valve/01-view/ValveViewChart.cs
index d7463d7..33cdd96 100644
--- a/WinFrmUI/Yw.WinFrmUI.Phart.Core/02-valve/01-view/ValveViewChart.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Phart.Core/02-valve/01-view/ValveViewChart.cs
@@ -169,7 +169,7 @@
                 return;
             }
             List<Yw.Geometry.Point2d> pt_ql_list;
-            pt_ql_list = cubic_spline_ql.GetPointList(12);
+            pt_ql_list = cubic_spline_ql.GetPointList(100);
             SetBindingData(cubic_spline_ql, pt_ql_list, null, coordinate_paras, calc_coordinate);
         }
 
diff --git a/WinFrmUI/Yw.WinFrmUI.Phart.Core/02-valve/02-edit/ValveEditChart.cs b/WinFrmUI/Yw.WinFrmUI.Phart.Core/02-valve/02-edit/ValveEditChart.cs
index 6826fbd..bca6cbb 100644
--- a/WinFrmUI/Yw.WinFrmUI.Phart.Core/02-valve/02-edit/ValveEditChart.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Phart.Core/02-valve/02-edit/ValveEditChart.cs
@@ -129,7 +129,7 @@
 
             List<Yw.Geometry.Point2d> pt_ql_list;
 
-            pt_ql_list = cubic_spline_ql.GetPointList(12);
+            pt_ql_list = cubic_spline_ql.GetPointList(100);
 
             SetBindingData(pt_ql_list, pt_ql_list, coordinate_paras, calc_coordinate);
         }
diff --git a/WinFrmUI/Yw.WinFrmUI.Phart.Core/02-valve/02-edit/ValveEditCtrl.cs b/WinFrmUI/Yw.WinFrmUI.Phart.Core/02-valve/02-edit/ValveEditCtrl.cs
index 593948b..a92511f 100644
--- a/WinFrmUI/Yw.WinFrmUI.Phart.Core/02-valve/02-edit/ValveEditCtrl.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Phart.Core/02-valve/02-edit/ValveEditCtrl.cs
@@ -42,7 +42,7 @@
                 return;
             List<Yw.Geometry.Point2d> pt_ql_list;
 
-            pt_ql_list = cubic_spline_ql.GetPointList(12);
+            pt_ql_list = cubic_spline_ql.GetPointList(100);
 
             SetBindingData(pt_ql_list, pt_ql_list);
         }
diff --git a/WinFrmUI/Yw.WinFrmUI.Phart.Core/Yw.WinFrmUI.Phart.Core.csproj b/WinFrmUI/Yw.WinFrmUI.Phart.Core/Yw.WinFrmUI.Phart.Core.csproj
index 5c78050..a3e2466 100644
--- a/WinFrmUI/Yw.WinFrmUI.Phart.Core/Yw.WinFrmUI.Phart.Core.csproj
+++ b/WinFrmUI/Yw.WinFrmUI.Phart.Core/Yw.WinFrmUI.Phart.Core.csproj
@@ -31,6 +31,8 @@
   </ItemGroup>
 
   <ItemGroup>
+    <Compile Remove="01-pump\01-single\03-variable-speed\PumpVariableSpeedViewItemViewModel.cs" />
+    <Compile Remove="01-pump\01-single\03-variable-speed\PumpVariableSpeedViewModel.cs" />
     <Compile Remove="Title - 澶嶅埗.cs" />
   </ItemGroup>
 
diff --git a/WinFrmUI/Yw.WinFrmUI.Phart.Core/Yw.WinFrmUI.Phart.Core.csproj.user b/WinFrmUI/Yw.WinFrmUI.Phart.Core/Yw.WinFrmUI.Phart.Core.csproj.user
index 49db179..8f72cdc 100644
--- a/WinFrmUI/Yw.WinFrmUI.Phart.Core/Yw.WinFrmUI.Phart.Core.csproj.user
+++ b/WinFrmUI/Yw.WinFrmUI.Phart.Core/Yw.WinFrmUI.Phart.Core.csproj.user
@@ -44,7 +44,7 @@
     <Compile Update="01-pump\01-single\02-operation\PumpOperationChart.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Update="01-pump\01-single\04-variable-speed-view\PumpVariableSpeedViewChart.cs">
+    <Compile Update="01-pump\01-single\04-run-view\PumpRunViewChart.cs">
       <SubType>UserControl</SubType>
     </Compile>
     <Compile Update="01-pump\01-single\09-edit\InputXYDlg.cs">

--
Gitblit v1.9.3