From ce65365b03d49fc6c6961e0c690768b93c4a4c7c Mon Sep 17 00:00:00 2001
From: Shuxia Ning <NingShuxia0927@outlook.com>
Date: 星期二, 03 十二月 2024 16:59:57 +0800
Subject: [PATCH] 曲线变速视图

---
 WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/04-variable-speed-view/PumpVariableSpeedViewChart.Designer.cs |  146 ------
 WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/02-operation/PumpOperationChart.cs                            |  144 +++---
 WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/03-variable-speed/PumpVariableSpeedChart.cs                   |    7 
 WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/04-variable-speed-view/PumpVariableSpeedViewChart.resx        |  245 -----------
 WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/02-multi/01-parallel/PumpParallelChart.cs                               |   75 +-
 WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-single/04-variable-speed-view/PumpVariableSpeedViewChart.cs          |  624 +++++++----------------------
 6 files changed, 271 insertions(+), 970 deletions(-)

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 b86bae2..861dd54 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
@@ -44,7 +44,7 @@
 
         private bool _initial_data = false; 
 
-        private PumpOperationViewModel _operation_vm = null;
+        private PumpOperationViewModel _vm = null;
 
         #endregion
 
@@ -154,7 +154,7 @@
         {
             if (e is not DXCustomPaintEventArgs dxArgs)
                 return;
-            if (_operation_vm == null)
+            if (_vm == null)
                 return;
 
             if (_equip_line != null && _equip_sect_pt != null && _equip_visible)
@@ -162,9 +162,9 @@
                 using Pen pen = new(Color.Black, 2);
                 pen.DashStyle = System.Drawing.Drawing2D.DashStyle.DashDotDot; 
 
-                DrawEquipPoint(dxArgs.Cache, pen, _equip_sect_pt, _operation_vm.CurveQE, _operation_vm.CurveQP);
+                DrawEquipPoint(dxArgs.Cache, pen, _equip_sect_pt, _vm.CurveQE, _vm.CurveQP);
                 if (_current_equip_sect_pt != null)
-                    DrawEquipPoint(dxArgs.Cache, pen, _current_equip_sect_pt, _operation_vm.CurrentCurveQE, _operation_vm.CurrentCurveQP);
+                    DrawEquipPoint(dxArgs.Cache, pen, _current_equip_sect_pt, _vm.CurrentCurveQE, _vm.CurrentCurveQP);
                 DrawEquipLine(dxArgs.Cache, pen, _equip_line); 
             }
 
@@ -212,7 +212,7 @@
             }
             if (qp != null && _qp_visible)
             {
-                var qp_y = qe.GetPointY(qh_x);
+                var qp_y = qp.GetPointY(qh_x);
                 var qp_pt = _diagram.DiagramToPoint(qh_x, qp_y, _axis_x_flow, _axis_y_power);
                 var qp_pt_x = qp_pt.Point.X;
                 var qp_pt_y = qp_pt.Point.Y;
@@ -240,7 +240,7 @@
         /// </summary> 
         public void SetBindingData(PumpOperationViewModel vm)
         {
-            _operation_vm = vm;
+            _vm = vm;
             _initial_data = vm != null;
             UpdateChart(true);
         }
@@ -254,14 +254,14 @@
             _equip_line = null;
             _equip_sect_pt = null;
             _current_equip_sect_pt = null;
-            if (_operation_vm == null)
+            if (_vm == null)
             {
                 this.DesignPointChangedEvent?.Invoke(null);
                 return;
             }
 
             start_head ??= _coordinate.DispMinH(); 
-            var equip_line = Yw.Geometry.EquipCurveHelper.CalcEquipCurve(_operation_vm.CurveQH, _equip_pt, start_head.Value, out Yw.Geometry.Point2d sect_pt);
+            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;
 
@@ -271,62 +271,62 @@
             double flow = 0, head = 0;
             double? eff = null, power = null;
             flow = sect_pt.X;
-            head = _operation_vm.CurveQH.GetPointY(flow);
-            if (_operation_vm.CurveQP != null)
+            head = _vm.CurveQH.GetPointY(flow);
+            if (_vm.CurveQP != null)
             {
-                power = _operation_vm.CurveQP.GetPointY(flow);
+                power = _vm.CurveQP.GetPointY(flow);
                 eff = PumpCalcHelper.CalculateE(flow, head, power.Value);
             }
-            else if (_operation_vm.CurveQE != null)
+            else if (_vm.CurveQE != null)
             {
-                eff = _operation_vm.CurveQE.GetPointY(flow);
+                eff = _vm.CurveQE.GetPointY(flow);
                 power = PumpCalcHelper.CalculateP(flow, head, eff.Value);
             }
              
             var design_pt_list = new List<PumpDesignPointViewModel>
             {
                 new() {
-                    Id = _operation_vm.Id + "棰濆畾",
-                    Name = _operation_vm.Name + "(棰濆畾)",
+                    Id = _vm.Id + "棰濆畾",
+                    Name = _vm.Name + "(棰濆畾)",
                     Q = flow,
                     H = head,
                     E = eff,
                     P = power,
-                    Hz = _operation_vm.RatedHz,
-                    N = _operation_vm.RatedN
+                    Hz = _vm.RatedHz,
+                    N = _vm.RatedN
                 }
             }; 
 
-            if (_operation_vm.CurrentStatus)
+            if (_vm.CurrentStatus)
             {
-                var current_equip_line = Yw.Geometry.EquipCurveHelper.CalcEquipCurve(_operation_vm.CurrentCurveQH, _equip_pt, start_head.Value, out Yw.Geometry.Point2d current_sect_pt);
+                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)
                     return;
                 double current_flow = 0, current_head = 0;
                 double? current_eff = null, current_power = null;
                 current_flow = current_sect_pt.X;
-                current_head = _operation_vm.CurrentCurveQH.GetPointY(current_flow);
-                if (_operation_vm.CurrentCurveQP != null)
+                current_head = _vm.CurrentCurveQH.GetPointY(current_flow);
+                if (_vm.CurrentCurveQP != null)
                 {
-                    current_power = _operation_vm.CurrentCurveQP.GetPointY(current_flow);
+                    current_power = _vm.CurrentCurveQP.GetPointY(current_flow);
                     current_eff = PumpCalcHelper.CalculateE(current_flow, current_head, current_power.Value);
                 }
-                else if (_operation_vm.CurrentCurveQE != null)
+                else if (_vm.CurrentCurveQE != null)
                 {
-                    current_eff = _operation_vm.CurrentCurveQE.GetPointY(current_flow);
+                    current_eff = _vm.CurrentCurveQE.GetPointY(current_flow);
                     current_power = PumpCalcHelper.CalculateP(current_flow, current_head, current_eff.Value);
                 } 
 
                 design_pt_list.Add(new()
                 {
-                    Id = _operation_vm.Id,
-                    Name = _operation_vm.Name,
+                    Id = _vm.Id,
+                    Name = _vm.Name,
                     Q = current_flow,
                     H = current_head,
                     E = current_eff,
                     P = current_power,
-                    Hz = _operation_vm.CurrentHz,
-                    N = _operation_vm.CurrentN
+                    Hz = _vm.CurrentHz,
+                    N = _vm.CurrentN
                 });
 
             } 
@@ -351,7 +351,7 @@
         {
             if (vm == null)
                 return;
-            _operation_vm = vm;
+            _vm = vm;
             _initial_data = true;
             UpdateChart(true);
         }
@@ -362,7 +362,7 @@
         /// </summary> 
         public void Delete()
         {
-            _operation_vm = null;
+            _vm = null;
             UpdateChart(true);
             _initial_data = false;
         }
@@ -403,7 +403,7 @@
         /// </summary>
         private void CalcCoordinate()
         {
-            if (_operation_vm == null )
+            if (_vm == null )
             {
                 //璁剧疆鎴愮櫧鏉垮潗鏍�
                 _coordinate = new PumpCoordinate();
@@ -431,10 +431,10 @@
 
             double _scaleMinH = 1, _scaleMaxH = 1; 
             {
-                var qh_pt_list = _operation_vm.CurveQH.GetPointList();
-                if (_operation_vm.CurrentStatus)
+                var qh_pt_list = _vm.CurveQH.GetPointList();
+                if (_vm.CurrentStatus)
                 { 
-                    qh_pt_list.AddRange(_operation_vm.CurrentCurveQH.GetPointList());
+                    qh_pt_list.AddRange(_vm.CurrentCurveQH.GetPointList());
                 }
 
                 var xxx = qh_pt_list.Select(x => x.X);
@@ -448,24 +448,24 @@
             }
 
 
-            if (_operation_vm.CurveQE != null)
+            if (_vm.CurveQE != null)
             {
-                var yyy = _operation_vm.CurveQE.GetPointList().Select(x => x.Y).ToList();
-                if (_operation_vm.CurrentStatus)
+                var yyy = _vm.CurveQE.GetPointList().Select(x => x.Y).ToList();
+                if (_vm.CurrentStatus)
                 {
-                    yyy.AddRange(_operation_vm.CurrentCurveQE.GetPointList().Select(x => x.Y)); 
+                    yyy.AddRange(_vm.CurrentCurveQE.GetPointList().Select(x => x.Y)); 
                 }
                 _min_eff = Math.Min(_min_eff, yyy.Min());
                 _max_eff = Math.Max(_max_eff, yyy.Max());
             }
 
 
-            if (_operation_vm.CurveQP != null)
+            if (_vm.CurveQP != null)
             {
-                var yyy = _operation_vm.CurveQP.GetPointList().Select(x => x.Y).ToList();
-                if (_operation_vm.CurrentStatus)
+                var yyy = _vm.CurveQP.GetPointList().Select(x => x.Y).ToList();
+                if (_vm.CurrentStatus)
                 {
-                    yyy.AddRange(_operation_vm.CurrentCurveQP.GetPointList().Select(x => x.Y));
+                    yyy.AddRange(_vm.CurrentCurveQP.GetPointList().Select(x => x.Y));
                 }
                 _min_power = Math.Min(_min_power, yyy.Min());
                 _max_power = Math.Max(_max_power, yyy.Max());
@@ -621,12 +621,12 @@
 
             this.chartControl1.Legend.CustomItems.Clear();
 
-            if (_operation_vm!=null)
+            if (_vm!=null)
             {
-                CreateLineSeries(_operation_vm);
-                if (_operation_vm.CurrentStatus)
+                CreateLineSeries(_vm);
+                if (_vm.CurrentStatus)
                 {
-                    CreateCurrentLineSeries(_operation_vm);
+                    CreateCurrentLineSeries(_vm);
                 }
             }
 
@@ -664,19 +664,19 @@
                 _anno_txt_query_info.Visible = true;
             }
 
-            if (_operation_vm == null)
+            if (_vm == null)
                 return;
 
-            if (_operation_vm.CurrentStatus)
+            if (_vm.CurrentStatus)
             {
-                x_flow ??= _operation_vm.CurrentCurveQH.MaxX * 0.8;
-                if (x_flow < _operation_vm.CurrentCurveQH.MinX || x_flow > _operation_vm.CurrentCurveQH.MaxX)
+                x_flow ??= _vm.CurrentCurveQH.MaxX * 0.8;
+                if (x_flow < _vm.CurrentCurveQH.MinX || x_flow > _vm.CurrentCurveQH.MaxX)
                     return;
             }
             else
             {
-                x_flow ??= _operation_vm.CurveQH.MaxX * 0.8;
-                if (x_flow < _operation_vm.CurveQH.MinX || x_flow > _operation_vm.CurveQH.MaxX)
+                x_flow ??= _vm.CurveQH.MaxX * 0.8;
+                if (x_flow < _vm.CurveQH.MinX || x_flow > _vm.CurveQH.MaxX)
                     return;
             }
            
@@ -685,54 +685,54 @@
             double? eff = null,  power = null;
 
             flow = x_flow.Value;
-            head = _operation_vm.CurveQH.GetPointY(flow);
-            if (_operation_vm.CurveQP != null)
+            head = _vm.CurveQH.GetPointY(flow);
+            if (_vm.CurveQP != null)
             {
-                power = _operation_vm.CurveQP.GetPointY(flow);
+                power = _vm.CurveQP.GetPointY(flow);
                 eff = PumpCalcHelper.CalculateE(flow, head, power.Value);
             }
-            else if (_operation_vm.CurveQE != null)
+            else if (_vm.CurveQE != null)
             {
-                eff = _operation_vm.CurveQE.GetPointY(flow);
+                eff = _vm.CurveQE.GetPointY(flow);
                 power = PumpCalcHelper.CalculateP(flow, head, eff.Value);
             }
              
             query_pt_list.Add(new PumpQueryPointViewModel
             {
-                Id = _operation_vm.Id,
-                Name = _operation_vm.Name + "棰濆畾",
+                Id = _vm.Id,
+                Name = _vm.Name + "棰濆畾",
                 Q = flow,
                 H = head,
                 E = eff,
                 P = power,
-                Hz = _operation_vm.RatedHz,
-                N = _operation_vm.RatedN
+                Hz = _vm.RatedHz,
+                N = _vm.RatedN
             });
 
-            if (_operation_vm.CurrentStatus)
+            if (_vm.CurrentStatus)
             {
                 flow = x_flow.Value;
-                head = _operation_vm.CurrentCurveQH.GetPointY(flow);
-                if (_operation_vm.CurrentCurveQP != null)
+                head = _vm.CurrentCurveQH.GetPointY(flow);
+                if (_vm.CurrentCurveQP != null)
                 {
-                    power = _operation_vm.CurrentCurveQP.GetPointY(flow);
+                    power = _vm.CurrentCurveQP.GetPointY(flow);
                     eff = PumpCalcHelper.CalculateE(flow, head, power.Value);
                 }
-                else if (_operation_vm.CurrentCurveQE != null)
+                else if (_vm.CurrentCurveQE != null)
                 {
-                    eff = _operation_vm.CurrentCurveQE.GetPointY(flow);
+                    eff = _vm.CurrentCurveQE.GetPointY(flow);
                     power = PumpCalcHelper.CalculateP(flow, head, eff.Value);
                 }
                 query_pt_list.Add(new PumpQueryPointViewModel()
                 {
-                    Id = _operation_vm.Id,
-                    Name = _operation_vm.Name,
+                    Id = _vm.Id,
+                    Name = _vm.Name,
                     Q = flow,
                     H = head,
                     E = eff,
                     P = power,
-                    Hz = _operation_vm.CurrentHz,
-                    N = _operation_vm.CurrentN
+                    Hz = _vm.CurrentHz,
+                    N = _vm.CurrentN
                 });
             }
 
@@ -1117,7 +1117,7 @@
         #region Event
         private void barBtnSetAxisQValue_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
         {
-            if (_operation_vm == null)
+            if (_vm == null)
                 return;
             var dlg = new PumpAxisValueDlg();
             dlg.SetBindingData();
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 bda8a37..41b466b 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
@@ -224,7 +224,7 @@
             }
             if (qp != null && _qp_visible)
             {
-                var qp_y = qe.GetPointY(qh_x);
+                var qp_y = qp.GetPointY(qh_x);
                 var qp_pt = _diagram.DiagramToPoint(qh_x, qp_y, _axis_x_flow, _axis_y_power);
                 var qp_pt_x = qp_pt.Point.X;
                 var qp_pt_y = qp_pt.Point.Y;
@@ -414,6 +414,7 @@
                     continue;
                 var qe_pt_list = vm.CurrentCurveQE.GetPointList();
                 var yyy = qe_pt_list.Select(x => x.Y);
+                _min_eff = Math.Min(_min_eff, yyy.Min());
                 _max_eff = Math.Max(_max_eff, yyy.Max());
             }
 
@@ -564,8 +565,8 @@
             this.chartControl1.BeginInit();
             this.chartControl1.Series.Clear();
 
-            var annotationCount = this.chartControl1.AnnotationRepository.Count;
-            for (int i = annotationCount - 1; i > 0; i--)
+            var annotation_count = this.chartControl1.AnnotationRepository.Count;
+            for (int i = annotation_count - 1; i > 0; i--)
             {
                 if (i == 0)
                     break;
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-variable-speed-view/PumpVariableSpeedViewChart.Designer.cs
index c01e778..194ced6 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-variable-speed-view/PumpVariableSpeedViewChart.Designer.cs
@@ -48,30 +48,17 @@
             DevExpress.XtraCharts.SplineSeriesView splineSeriesView3 = new DevExpress.XtraCharts.SplineSeriesView();
             System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(PumpVariableSpeedViewChart));
             chartControl1 = new DevExpress.XtraCharts.ChartControl();
-            popMenuChart = new DevExpress.XtraBars.PopupMenu(components);
             barBtnSetChartAxis = new DevExpress.XtraBars.BarButtonItem();
             barCekCurveQEVisible = new DevExpress.XtraBars.BarCheckItem();
             barCekCurveQPVisible = new DevExpress.XtraBars.BarCheckItem();
             barCekCurveEQVisible = new DevExpress.XtraBars.BarCheckItem();
-            barCekLineVisible = new DevExpress.XtraBars.BarCheckItem();
-            barCekCurveNameVisible = new DevExpress.XtraBars.BarCheckItem();
-            barCekSetAxisNameVisible = new DevExpress.XtraBars.BarCheckItem();
-            barCekLegendVisible = new DevExpress.XtraBars.BarCheckItem();
             barManager1 = new DevExpress.XtraBars.BarManager(components);
             barMenu = new DevExpress.XtraBars.Bar();
             barSubMenuVisible = new DevExpress.XtraBars.BarSubItem();
-            barSubMenuEdit = new DevExpress.XtraBars.BarSubItem();
-            barSubMenuQuery = new DevExpress.XtraBars.BarSubItem();
-            barBtnSetAxisQValue = new DevExpress.XtraBars.BarButtonItem();
-            barSubAdd = new DevExpress.XtraBars.BarSubItem();
-            barBtnAddBySpeed = new DevExpress.XtraBars.BarButtonItem();
-            barBtnAddByHz = new DevExpress.XtraBars.BarButtonItem();
-            barBtnAddByPoint = new DevExpress.XtraBars.BarButtonItem();
             barDockControlTop = new DevExpress.XtraBars.BarDockControl();
             barDockControlBottom = new DevExpress.XtraBars.BarDockControl();
             barDockControlLeft = new DevExpress.XtraBars.BarDockControl();
             barDockControlRight = new DevExpress.XtraBars.BarDockControl();
-            popMenuLine = new DevExpress.XtraBars.PopupMenu(components);
             bar1 = new DevExpress.XtraBars.Bar();
             ((System.ComponentModel.ISupportInitialize)chartControl1).BeginInit();
             ((System.ComponentModel.ISupportInitialize)textAnnotation1).BeginInit();
@@ -86,9 +73,7 @@
             ((System.ComponentModel.ISupportInitialize)splineSeriesView2).BeginInit();
             ((System.ComponentModel.ISupportInitialize)series3).BeginInit();
             ((System.ComponentModel.ISupportInitialize)splineSeriesView3).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)popMenuChart).BeginInit();
             ((System.ComponentModel.ISupportInitialize)barManager1).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)popMenuLine).BeginInit();
             SuspendLayout();
             // 
             // chartControl1
@@ -197,12 +182,6 @@
             chartControl1.Size = new Size(1023, 823);
             chartControl1.TabIndex = 0;
             // 
-            // popMenuChart
-            // 
-            popMenuChart.LinksPersistInfo.AddRange(new DevExpress.XtraBars.LinkPersistInfo[] { new DevExpress.XtraBars.LinkPersistInfo(barBtnSetChartAxis), new DevExpress.XtraBars.LinkPersistInfo(barCekCurveQEVisible), new DevExpress.XtraBars.LinkPersistInfo(barCekCurveQPVisible), new DevExpress.XtraBars.LinkPersistInfo(barCekCurveEQVisible), new DevExpress.XtraBars.LinkPersistInfo(barCekLineVisible, true), new DevExpress.XtraBars.LinkPersistInfo(barCekCurveNameVisible), new DevExpress.XtraBars.LinkPersistInfo(barCekSetAxisNameVisible), new DevExpress.XtraBars.LinkPersistInfo(barCekLegendVisible) });
-            popMenuChart.Manager = barManager1;
-            popMenuChart.Name = "popMenuChart";
-            // 
             // barBtnSetChartAxis
             // 
             barBtnSetChartAxis.Caption = "淇敼鍧愭爣";
@@ -241,43 +220,6 @@
             barCekCurveEQVisible.Name = "barCekCurveEQVisible";
             barCekCurveEQVisible.CheckedChanged += barCekCurveEQVisible_CheckedChanged;
             // 
-            // barCekLineVisible
-            // 
-            barCekLineVisible.Caption = "宸ヤ綔鐐�";
-            barCekLineVisible.Id = 9;
-            barCekLineVisible.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barCekLineVisible.ImageOptions.SvgImage");
-            barCekLineVisible.Name = "barCekLineVisible";
-            barCekLineVisible.CheckedChanged += barCekLineVisible_CheckedChanged;
-            // 
-            // barCekCurveNameVisible
-            // 
-            barCekCurveNameVisible.BindableChecked = true;
-            barCekCurveNameVisible.Caption = "鏇茬嚎鍚�";
-            barCekCurveNameVisible.Checked = true;
-            barCekCurveNameVisible.Id = 21;
-            barCekCurveNameVisible.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barCekCurveNameVisible.ImageOptions.SvgImage");
-            barCekCurveNameVisible.Name = "barCekCurveNameVisible";
-            barCekCurveNameVisible.CheckedChanged += barCekCurveNameVisible_CheckedChanged;
-            // 
-            // barCekSetAxisNameVisible
-            // 
-            barCekSetAxisNameVisible.BindableChecked = true;
-            barCekSetAxisNameVisible.Caption = "杞村悕绉�";
-            barCekSetAxisNameVisible.Checked = true;
-            barCekSetAxisNameVisible.Id = 15;
-            barCekSetAxisNameVisible.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barCekSetAxisNameVisible.ImageOptions.SvgImage");
-            barCekSetAxisNameVisible.Name = "barCekSetAxisNameVisible";
-            barCekSetAxisNameVisible.CheckedChanged += barCekSetAxisNameVisible_CheckedChanged;
-            // 
-            // barCekLegendVisible
-            // 
-            barCekLegendVisible.Caption = "鍥句緥";
-            barCekLegendVisible.Id = 10;
-            barCekLegendVisible.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barCekLegendVisible.ImageOptions.SvgImage");
-            barCekLegendVisible.Name = "barCekLegendVisible";
-            barCekLegendVisible.Visibility = DevExpress.XtraBars.BarItemVisibility.Never;
-            barCekLegendVisible.CheckedChanged += barCekLegendVisible_CheckedChanged;
-            // 
             // barManager1
             // 
             barManager1.Bars.AddRange(new DevExpress.XtraBars.Bar[] { barMenu });
@@ -286,7 +228,7 @@
             barManager1.DockControls.Add(barDockControlLeft);
             barManager1.DockControls.Add(barDockControlRight);
             barManager1.Form = this;
-            barManager1.Items.AddRange(new DevExpress.XtraBars.BarItem[] { barBtnSetChartAxis, barCekLineVisible, barCekLegendVisible, barBtnSetAxisQValue, barCekSetAxisNameVisible, barCekCurveQEVisible, barCekCurveQPVisible, barCekCurveNameVisible, barCekCurveEQVisible, barSubMenuVisible, barSubMenuEdit, barSubMenuQuery, barSubAdd, barBtnAddBySpeed, barBtnAddByHz, barBtnAddByPoint });
+            barManager1.Items.AddRange(new DevExpress.XtraBars.BarItem[] { barBtnSetChartAxis, barCekCurveQEVisible, barCekCurveQPVisible, barCekCurveEQVisible, barSubMenuVisible });
             barManager1.MainMenu = barMenu;
             barManager1.MaxItemId = 30;
             barManager1.ShowFullMenus = true;
@@ -298,7 +240,7 @@
             barMenu.DockCol = 0;
             barMenu.DockRow = 0;
             barMenu.DockStyle = DevExpress.XtraBars.BarDockStyle.Top;
-            barMenu.LinksPersistInfo.AddRange(new DevExpress.XtraBars.LinkPersistInfo[] { new DevExpress.XtraBars.LinkPersistInfo(barSubMenuVisible), new DevExpress.XtraBars.LinkPersistInfo(barSubMenuEdit), new DevExpress.XtraBars.LinkPersistInfo(barSubMenuQuery), new DevExpress.XtraBars.LinkPersistInfo(barSubAdd) });
+            barMenu.LinksPersistInfo.AddRange(new DevExpress.XtraBars.LinkPersistInfo[] { new DevExpress.XtraBars.LinkPersistInfo(barSubMenuVisible), new DevExpress.XtraBars.LinkPersistInfo(barBtnSetChartAxis) });
             barMenu.OptionsBar.DrawBorder = false;
             barMenu.OptionsBar.MinHeight = 30;
             barMenu.OptionsBar.MultiLine = true;
@@ -310,68 +252,9 @@
             barSubMenuVisible.Caption = "鏄剧ず";
             barSubMenuVisible.Id = 23;
             barSubMenuVisible.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barSubMenuVisible.ImageOptions.SvgImage");
-            barSubMenuVisible.LinksPersistInfo.AddRange(new DevExpress.XtraBars.LinkPersistInfo[] { new DevExpress.XtraBars.LinkPersistInfo(barCekCurveQPVisible), new DevExpress.XtraBars.LinkPersistInfo(barCekCurveQEVisible), new DevExpress.XtraBars.LinkPersistInfo(barCekCurveEQVisible), new DevExpress.XtraBars.LinkPersistInfo(barCekCurveNameVisible, true), new DevExpress.XtraBars.LinkPersistInfo(barCekLegendVisible), new DevExpress.XtraBars.LinkPersistInfo(barCekSetAxisNameVisible) });
+            barSubMenuVisible.LinksPersistInfo.AddRange(new DevExpress.XtraBars.LinkPersistInfo[] { new DevExpress.XtraBars.LinkPersistInfo(barCekCurveQPVisible), new DevExpress.XtraBars.LinkPersistInfo(barCekCurveQEVisible), new DevExpress.XtraBars.LinkPersistInfo(barCekCurveEQVisible) });
             barSubMenuVisible.Name = "barSubMenuVisible";
             barSubMenuVisible.PaintStyle = DevExpress.XtraBars.BarItemPaintStyle.CaptionGlyph;
-            // 
-            // barSubMenuEdit
-            // 
-            barSubMenuEdit.Caption = "缂栬緫";
-            barSubMenuEdit.Id = 24;
-            barSubMenuEdit.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barSubMenuEdit.ImageOptions.SvgImage");
-            barSubMenuEdit.LinksPersistInfo.AddRange(new DevExpress.XtraBars.LinkPersistInfo[] { new DevExpress.XtraBars.LinkPersistInfo(barBtnSetChartAxis) });
-            barSubMenuEdit.Name = "barSubMenuEdit";
-            barSubMenuEdit.PaintStyle = DevExpress.XtraBars.BarItemPaintStyle.CaptionGlyph;
-            // 
-            // barSubMenuQuery
-            // 
-            barSubMenuQuery.Caption = "鏌ヨ";
-            barSubMenuQuery.Id = 25;
-            barSubMenuQuery.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barSubMenuQuery.ImageOptions.SvgImage");
-            barSubMenuQuery.LinksPersistInfo.AddRange(new DevExpress.XtraBars.LinkPersistInfo[] { new DevExpress.XtraBars.LinkPersistInfo(barCekLineVisible), new DevExpress.XtraBars.LinkPersistInfo(barBtnSetAxisQValue) });
-            barSubMenuQuery.Name = "barSubMenuQuery";
-            barSubMenuQuery.PaintStyle = DevExpress.XtraBars.BarItemPaintStyle.CaptionGlyph;
-            // 
-            // barBtnSetAxisQValue
-            // 
-            barBtnSetAxisQValue.Caption = "瀹氫綅娴侀噺鐐�";
-            barBtnSetAxisQValue.Id = 13;
-            barBtnSetAxisQValue.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnSetAxisQValue.ImageOptions.SvgImage");
-            barBtnSetAxisQValue.Name = "barBtnSetAxisQValue";
-            barBtnSetAxisQValue.ItemClick += barBtnSetAxisQValue_ItemClick;
-            // 
-            // barSubAdd
-            // 
-            barSubAdd.Caption = "娣诲姞";
-            barSubAdd.Id = 26;
-            barSubAdd.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barSubAdd.ImageOptions.SvgImage");
-            barSubAdd.LinksPersistInfo.AddRange(new DevExpress.XtraBars.LinkPersistInfo[] { new DevExpress.XtraBars.LinkPersistInfo(barBtnAddBySpeed), new DevExpress.XtraBars.LinkPersistInfo(barBtnAddByHz), new DevExpress.XtraBars.LinkPersistInfo(barBtnAddByPoint) });
-            barSubAdd.Name = "barSubAdd";
-            barSubAdd.PaintStyle = DevExpress.XtraBars.BarItemPaintStyle.CaptionGlyph;
-            // 
-            // barBtnAddBySpeed
-            // 
-            barBtnAddBySpeed.Caption = "杞��";
-            barBtnAddBySpeed.Id = 27;
-            barBtnAddBySpeed.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnAddBySpeed.ImageOptions.SvgImage");
-            barBtnAddBySpeed.Name = "barBtnAddBySpeed";
-            barBtnAddBySpeed.ItemClick += barBtnAddBySpeed_ItemClick;
-            // 
-            // barBtnAddByHz
-            // 
-            barBtnAddByHz.Caption = "棰戠巼";
-            barBtnAddByHz.Id = 28;
-            barBtnAddByHz.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnAddByHz.ImageOptions.SvgImage");
-            barBtnAddByHz.Name = "barBtnAddByHz";
-            barBtnAddByHz.ItemClick += barBtnAddByHz_ItemClick;
-            // 
-            // barBtnAddByPoint
-            // 
-            barBtnAddByPoint.Caption = "鍗曠偣";
-            barBtnAddByPoint.Id = 29;
-            barBtnAddByPoint.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnAddByPoint.ImageOptions.SvgImage");
-            barBtnAddByPoint.Name = "barBtnAddByPoint";
-            barBtnAddByPoint.ItemClick += barBtnAddByPoint_ItemClick;
             // 
             // barDockControlTop
             // 
@@ -405,19 +288,13 @@
             barDockControlRight.Manager = barManager1;
             barDockControlRight.Size = new Size(0, 823);
             // 
-            // popMenuLine
-            // 
-            popMenuLine.LinksPersistInfo.AddRange(new DevExpress.XtraBars.LinkPersistInfo[] { new DevExpress.XtraBars.LinkPersistInfo(barBtnSetAxisQValue) });
-            popMenuLine.Manager = barManager1;
-            popMenuLine.Name = "popMenuLine";
-            // 
             // bar1
             // 
             bar1.BarName = "Custom 2";
             bar1.DockCol = 0;
             bar1.DockRow = 0;
             bar1.DockStyle = DevExpress.XtraBars.BarDockStyle.Top;
-            bar1.LinksPersistInfo.AddRange(new DevExpress.XtraBars.LinkPersistInfo[] { new DevExpress.XtraBars.LinkPersistInfo(barBtnSetChartAxis), new DevExpress.XtraBars.LinkPersistInfo(barCekCurveQPVisible), new DevExpress.XtraBars.LinkPersistInfo(barCekCurveQEVisible), new DevExpress.XtraBars.LinkPersistInfo(barCekSetAxisNameVisible), new DevExpress.XtraBars.LinkPersistInfo(barCekLegendVisible) });
+            bar1.LinksPersistInfo.AddRange(new DevExpress.XtraBars.LinkPersistInfo[] { new DevExpress.XtraBars.LinkPersistInfo(barBtnSetChartAxis), new DevExpress.XtraBars.LinkPersistInfo(barCekCurveQPVisible), new DevExpress.XtraBars.LinkPersistInfo(barCekCurveQEVisible) });
             bar1.OptionsBar.MultiLine = true;
             bar1.OptionsBar.UseWholeRow = true;
             bar1.Text = "Custom 2";
@@ -446,9 +323,7 @@
             ((System.ComponentModel.ISupportInitialize)splineSeriesView3).EndInit();
             ((System.ComponentModel.ISupportInitialize)series3).EndInit();
             ((System.ComponentModel.ISupportInitialize)chartControl1).EndInit();
-            ((System.ComponentModel.ISupportInitialize)popMenuChart).EndInit();
             ((System.ComponentModel.ISupportInitialize)barManager1).EndInit();
-            ((System.ComponentModel.ISupportInitialize)popMenuLine).EndInit();
             ResumeLayout(false);
             PerformLayout();
         }
@@ -456,30 +331,17 @@
         #endregion
 
         private DevExpress.XtraCharts.ChartControl chartControl1;
-        private DevExpress.XtraBars.PopupMenu popMenuChart;
         private DevExpress.XtraBars.BarManager barManager1;
         private DevExpress.XtraBars.BarDockControl barDockControlTop;
         private DevExpress.XtraBars.BarDockControl barDockControlBottom;
         private DevExpress.XtraBars.BarDockControl barDockControlLeft;
         private DevExpress.XtraBars.BarDockControl barDockControlRight;
         private DevExpress.XtraBars.BarButtonItem barBtnSetChartAxis;
-        private DevExpress.XtraBars.BarCheckItem barCekLineVisible;
-        private DevExpress.XtraBars.BarCheckItem barCekLegendVisible;
-        private DevExpress.XtraBars.PopupMenu popMenuLine;
-        private DevExpress.XtraBars.BarButtonItem barBtnSetAxisQValue;
-        private DevExpress.XtraBars.BarCheckItem barCekSetAxisNameVisible;
         private DevExpress.XtraBars.BarCheckItem barCekCurveQEVisible;
         private DevExpress.XtraBars.BarCheckItem barCekCurveQPVisible;
-        private DevExpress.XtraBars.BarCheckItem barCekCurveNameVisible;
         private DevExpress.XtraBars.BarCheckItem barCekCurveEQVisible;
         private DevExpress.XtraBars.Bar bar1;
         private DevExpress.XtraBars.Bar barMenu;
         private DevExpress.XtraBars.BarSubItem barSubMenuVisible;
-        private DevExpress.XtraBars.BarSubItem barSubMenuEdit;
-        private DevExpress.XtraBars.BarSubItem barSubMenuQuery;
-        private DevExpress.XtraBars.BarSubItem barSubAdd;
-        private DevExpress.XtraBars.BarButtonItem barBtnAddBySpeed;
-        private DevExpress.XtraBars.BarButtonItem barBtnAddByHz;
-        private DevExpress.XtraBars.BarButtonItem barBtnAddByPoint;
     }
 }
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-variable-speed-view/PumpVariableSpeedViewChart.cs
index af5e08c..9555024 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-variable-speed-view/PumpVariableSpeedViewChart.cs
@@ -17,8 +17,7 @@
         }
 
         #region Private Variable 
-
-        private List<PumpVariableSpeedViewModel> _vm_list = new List<PumpVariableSpeedViewModel>();
+         
         private readonly string _tag_qh = "QH", _tag_qe = "QE", _tag_qp = "QP";
 
         private XYDiagram _diagram;
@@ -26,10 +25,8 @@
         private XYDiagramPane _bottom_pane;
         private AxisX _axis_x_flow;
         private AxisY _axis_y_head;
-        private SecondaryAxisY _axis_y_eff, _axis_y_power;
-        private ConstantLine _query_flow_line;
-
-        private TextAnnotation _anno_txt_query_info;
+        private SecondaryAxisY _axis_y_eff, _axis_y_power; 
+         
         private PumpCoordinate _coordinate;
 
         private bool _qe_visible = true;
@@ -38,72 +35,22 @@
         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 _initial_data = false;
 
-        #endregion
-
-        #region Public Variable 
-
-        /// <summary>
-        /// 宸ヤ綔绾挎槸鍚﹀彲瑙�
-        /// </summary>
-        public bool LineVisible
-        {
-            get => _line_visible;
-            set
-            {
-                _line_visible = value;
-                this.barCekLineVisible.Checked = _line_visible;
-                this.barBtnSetAxisQValue.Enabled = _line_visible;
-            }
-        }
-        private bool _line_visible = false;
-
-        /// <summary>
-        /// 鏇茬嚎鍚嶆槸鍚﹀彲瑙�
-        /// </summary>
-        public bool LineNameVisible
-        {
-            get => _line_name_visible;
-            set
-            {
-                _line_name_visible = value;
-                this.barCekCurveNameVisible.Checked = _line_name_visible;
-            }
-        }
-        private bool _line_name_visible = true;
+        private PumpVariableSpeedViewViewModel _vm = null;
 
         #endregion
-
+         
         #region Public Evnet
 
         /// <summary>
         /// 鍧愭爣鍙樻崲浜嬩欢
         /// </summary>
         public event Action<PumpCoordinate> CoordinateChangedEvent = null;
-
-        /// <summary>
-        /// 骞惰仈鐘舵�佸彉鎹簨浠�
-        /// </summary>
-        public event Action<bool, string> ParallelStatusChangedEvent = null;
-
-        /// <summary>
-        /// 鏌ヨ鐐瑰彉鎹簨浠�
-        /// </summary>
-        public event Action<List<PumpQueryPointViewModel>> QueryPointChangedEvent = null;
-
-        /// <summary>
-        /// 璁捐鐐瑰彉鎹簨浠�
-        /// </summary>
-        public event Action<List<PumpDesignPointViewModel>> DesignPointChangedEvent = null;
-
-        public event Action AddBySpeedEvent = null;
-
-        public event Action AddByHzEvent = null;
-
-        public event Action AddByPointEvent = null;
-
+         
+  
         #endregion
 
         #region Initial
@@ -130,11 +77,7 @@
             _axis_y_power = _diagram.SecondaryAxesY.GetAxisByName("AxisYQP");
             _axis_y_power.SetSecondaryAxisYQPDisplay();
 
-            _query_flow_line = (ConstantLine)_diagram.AxisX.ConstantLines.GetElementByName("WorkPointLine");
-            _query_flow_line.SetWorkPointLineDisplay();
-
-            _anno_txt_query_info = this.chartControl1.AnnotationRepository[0] as TextAnnotation;
-            _anno_txt_query_info.SetTextAnnoWorkPointDisplay();
+       
 
             _axis_x_flow.Visibility = DefaultBoolean.False;
             _axis_x_flow.GridLines.Visible = false;
@@ -144,15 +87,7 @@
             _axis_y_eff.GridLines.Visible = false;
             _axis_y_power.Visibility = DefaultBoolean.False;
             _axis_y_power.GridLines.Visible = false;
-
-
-            _query_flow_line.Visible = false;
-            _anno_txt_query_info.Visible = false;
-
-            this.chartControl1.MouseMove += new System.Windows.Forms.MouseEventHandler(this.chartControl1_MouseMove);
-            this.chartControl1.MouseUp += new System.Windows.Forms.MouseEventHandler(this.chartControl1_MouseUp);
-            this.chartControl1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.chartControl1_MouseDown);
-            this.chartControl1.Resize += new System.EventHandler(this.chartControl1_Resize);
+             
 
             this.chartControl1.CustomPaint += ChartControl1_CustomPaint;
         }
@@ -161,19 +96,16 @@
         {
             if (e is not DXCustomPaintEventArgs dxArgs)
                 return;
-            if (_vm_list == null || !_vm_list.Any())
+            if (_vm == null)
                 return;
 
-            if (_equip_line != null && _equip_visible)
+            if (_equip_line != null && _equip_sect_pt_list != null && _equip_sect_pt_list.Any() && _equip_visible)
             {
                 using Pen pen = new(Color.Black, 2);
-                pen.DashStyle = System.Drawing.Drawing2D.DashStyle.DashDotDot; 
-                foreach (var vm in _vm_list)
+                pen.DashStyle = System.Drawing.Drawing2D.DashStyle.DashDotDot;
+                foreach (var tuple in _equip_sect_pt_list)
                 {
-                    var sect_pt = vm.EquipPoint;
-                    if (sect_pt == null)
-                        continue;
-                    DrawEquipPoint(dxArgs.Cache, pen, sect_pt, vm.CurrentCurveQE, vm.CurrentCurveQP);
+                    DrawEquipPoint(dxArgs.Cache, pen, tuple.Item2, tuple.Item3, tuple.Item4);
                 }
 
                 DrawEquipLine(dxArgs.Cache, pen, _equip_line);
@@ -199,7 +131,7 @@
             cache.DrawPath(pen, path);
         }
 
-        private void DrawEquipPoint(GraphicsCache cache, Pen pen, Yw.Geometry.Point2d qh_sect_pt, Yw.Geometry.CubicSpline2d qe, Yw.Geometry.CubicSpline2d qp)
+        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;
@@ -212,22 +144,21 @@
             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 != null && _qe_visible)
-            {
-                var qe_y = qe.GetPointY(qh_x);
-                var qe_pt = _diagram.DiagramToPoint(qh_x, qe_y, _axis_x_flow, _axis_y_eff);
+            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 != null && _qp_visible)
+            if (qp_sect_pt != null && _qp_visible)
             {
-                var qp_y = qe.GetPointY(qh_x);
-                var qp_pt = _diagram.DiagramToPoint(qh_x, qp_y, _axis_x_flow, _axis_y_power);
+                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>
@@ -248,10 +179,10 @@
         /// <summary>
         /// 缁戝畾鏁版嵁
         /// </summary> 
-        public void SetBindingData(List<PumpVariableSpeedViewModel> list)
+        public void SetBindingData(PumpVariableSpeedViewViewModel vm)
         {
-            _vm_list = list;
-            _initial_data = list != null && list.Any();
+            _vm = vm;
+            _initial_data = vm != null;
             UpdateChart(true);
         }
 
@@ -261,78 +192,83 @@
         public void SetDesignPoint(double x, double y, double? start_head = null)
         {
             _equip_pt = new Geometry.Point2d(x, y);
-            _equip_line = null; 
-            if (_vm_list == null || !_vm_list.Any())
-            {
-                this.DesignPointChangedEvent?.Invoke(null);
+            _equip_line = null;
+            _equip_sect_pt_list = null;
+            if (_vm == null)
+            { 
                 return;
-            } 
+            }
 
             start_head ??= _coordinate.DispMinH();
-            var max_hz_vm = _vm_list.OrderBy(x => x.CurrentHz).FirstOrDefault();
-
-            var equip_line = Yw.Geometry.EquipCurveHelper.CalcEquipCurve(max_hz_vm.CurrentCurveQH, _equip_pt, start_head.Value, out Yw.Geometry.Point2d sect_pt);
+            
+            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_line = equip_line;
+            _equip_sect_pt_list = new List<Tuple<string, Geometry.Point2d, Geometry.Point2d, Geometry.Point2d>>();
 
-            var design_pt_list = new List<PumpDesignPointViewModel>();
-            foreach (var vm in _vm_list)
+            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.CurrentCurveQH, _equip_pt, start_head.Value, out Yw.Geometry.Point2d pump_sect_pt);
+                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; 
-
-                vm.EquipPoint = pump_sect_pt;
+                    return;
+                Yw.Geometry.Point2d pump_sect_pt_eff = null, pump_sect_pt_power = null;
 
                 flow = pump_sect_pt.X;
-                head = vm.CurrentCurveQH.GetPointYUnlimited(flow);
-                if (vm.CurrentCurveQP != null)
+                head = vm.CurveQH.GetPointYUnlimited(flow);
+                if (vm.CurveQP != null)
                 {
-                    power = vm.CurrentCurveQP.GetPointYUnlimited(flow);
+                    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.CurrentCurveQE != null)
+                else if (vm.CurveQE != null)
                 {
-                    eff = vm.CurrentCurveQE.GetPointYUnlimited(flow);
+                    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);
                 }
 
-                design_pt_list.Add(new PumpDesignPointViewModel
-                {
-                    Id = vm.Id,
-                    Name = vm.Name,
-                    Q = flow,
-                    H = head,
-                    E = eff,
-                    P = power,
-                    Hz = vm.CurrentHz,
-                    N = vm.CurrentN
-                });
-
+                _equip_sect_pt_list.Add(new(vm.Id, new Geometry.Point2d(flow, head), pump_sect_pt_eff, pump_sect_pt_power));
             }
+             
+            UpdateChart(true); 
 
-            this.DesignPointChangedEvent?.Invoke(design_pt_list);
-            UpdateChart(true);
-
-        }  
+        }
 
         /// <summary>
         /// 娓呯┖鏇茬嚎
         /// </summary> 
         public void Clear()
         {
-            _vm_list = new List<PumpVariableSpeedViewModel>();
+            _vm = null;
             _initial_data = false;
             UpdateChart(true);
         }
 
         /// <summary>
         /// 鏇存柊鍥捐〃
-        /// </summary>s
+        /// </summary>
         public void UpdateChart(bool calc_coordinate = false)
         {
             if (calc_coordinate || _coordinate == null)
@@ -343,11 +279,7 @@
 
             CalcSeries();
 
-            CalcChartAxis();
-
-            CalcWorkPointByQ();
-
-            //CalcTextAnchorPoint();
+            CalcChartAxis(); 
         }
 
         #endregion
@@ -364,7 +296,7 @@
         /// </summary>
         private void CalcCoordinate()
         {
-            if (_vm_list == null || !_vm_list.Any())
+            if (_vm == null)
             {
                 //璁剧疆鎴愮櫧鏉垮潗鏍�
                 _coordinate = new PumpCoordinate();
@@ -392,9 +324,8 @@
 
             double _scaleMinH = 1, _scaleMaxH = 1;
 
-            foreach (var vm in _vm_list)
             {
-                var qh_pt_list = vm.CurrentCurveQH.GetPointList();
+                var qh_pt_list = _vm.CurveQH.GetPointList();
                 var xxx = qh_pt_list.Select(x => x.X);
                 var yyy = qh_pt_list.Select(x => x.Y);
 
@@ -405,23 +336,52 @@
                 _max_head = Math.Max(_max_head, yyy.Max());
             }
 
-
-            foreach (PumpVariableSpeedViewModel vm in _vm_list)
+            if (_vm.CurveQE != null)
             {
-                if (vm.CurrentCurveQE == null)
-                    continue;
-                var qe_pt_list = vm.CurrentCurveQE.GetPointList();
+                var qe_pt_list = _vm.CurveQE.GetPointList();
                 var yyy = qe_pt_list.Select(x => x.Y);
+                _min_eff = Math.Min(_min_eff, yyy.Min());
                 _max_eff = Math.Max(_max_eff, yyy.Max());
             }
-
-            foreach (PumpVariableSpeedViewModel vm in _vm_list)
+            if (_vm.CurveQP != null)
             {
-                if (vm.CurrentCurveQP == null)
-                    continue;
-                var yyy = vm.CurrentCurveQP.GetPointList().Select(x => x.Y);
+                var yyy = _vm.CurveQP.GetPointList().Select(x => x.Y);
                 _min_power = Math.Min(_min_power, yyy.Min());
                 _max_power = Math.Max(_max_power, yyy.Max());
+            }
+
+            if (_vm.Items != null && _vm.Items.Any())
+            {
+
+                foreach (var vm in _vm.Items)
+                {
+                    {
+                        var qh_pt_list = vm.CurveQH.GetPointList();
+                        var xxx = qh_pt_list.Select(x => x.X);
+                        var yyy = qh_pt_list.Select(x => x.Y);
+
+                        _min_flow = Math.Min(_min_flow, xxx.Min());
+                        _max_flow = Math.Max(_max_flow, xxx.Max());
+
+                        _min_head = Math.Min(_min_head, yyy.Min());
+                        _max_head = Math.Max(_max_head, yyy.Max());
+                    }
+
+                    if (vm.CurveQE != null)
+                    {
+                        var qe_pt_list = vm.CurveQE.GetPointList();
+                        var yyy = qe_pt_list.Select(x => x.Y);
+                        _min_eff = Math.Min(_min_eff, yyy.Min());
+                        _max_eff = Math.Max(_max_eff, yyy.Max());
+                    }
+                    if (vm.CurveQP != null)
+                    {
+                        var yyy = vm.CurveQP.GetPointList().Select(x => x.Y);
+                        _min_power = Math.Min(_min_power, yyy.Min());
+                        _max_power = Math.Max(_max_power, yyy.Max());
+                    }
+                }
+
             }
 
             _coordinate = PumpCoordinate.CalcCoordinate(_min_flow,
@@ -440,6 +400,7 @@
             {
                 _coordinate.GridNumberX++;
             }
+
         }
 
         /// <summary>
@@ -455,8 +416,7 @@
             _axis_y_eff.GridLines.Visible = false;
             _axis_y_power.Visibility = DefaultBoolean.False;
             _axis_y_power.GridLines.Visible = false;
-
-            _query_flow_line.Visible = false;
+             
 
             _bottom_pane.Visibility = ChartElementVisibility.Hidden;
 
@@ -562,8 +522,8 @@
             this.chartControl1.BeginInit();
             this.chartControl1.Series.Clear();
 
-            var annotationCount = this.chartControl1.AnnotationRepository.Count;
-            for (int i = annotationCount - 1; i > 0; i--)
+            var annotation_count = this.chartControl1.AnnotationRepository.Count;
+            for (int i = annotation_count - 1; i > 0; i--)
             {
                 if (i == 0)
                     break;
@@ -571,111 +531,39 @@
             }
 
             this.chartControl1.Legend.CustomItems.Clear();
-            if (_vm_list.Count > 0)
+            if (_vm != null)
             {
-                foreach (var vm in _vm_list)
+                CreateLineSeries(_vm.Id, _vm.Name, _vm.CurveQH, _vm.CurveQE, _vm.CurveQP);
+                if (_vm.Items != null && _vm.Items.Any())
                 {
-                    CreateLineSeries(vm);
-                }
-            } 
+                    foreach (var vm in _vm.Items)
+                    {
+                        CreateLineSeries(vm.Id, vm.Name, vm.CurveQH, vm.CurveQE, vm.CurveQP);
+                    }
+                } 
+            }
+
             this.chartControl1.EndInit();
         }
-
-        /// <summary>
-        /// 璁$畻娉ㄩ噴瀹氫綅
-        /// </summary>
-        private void CalcTextAnchorPoint()
-        {
-            var x = this.chartControl1.Location.X + this.chartControl1.Width ;
-            var y = this.chartControl1.Location.Y;
-
-            (_anno_txt_query_info.AnchorPoint as ChartAnchorPoint).X = x;
-            (_anno_txt_query_info.AnchorPoint as ChartAnchorPoint).Y = y;
-        }
-         
-
-        /// <summary>
-        /// 璁$畻宸ヤ綔鐐�
-        /// </summary> 
-        public void CalcWorkPointByQ(double? x_flow = null)
-        {
-            if (!_line_visible)
-            {
-                _query_flow_line.Visible = false;
-                _query_flow_line.Title.Visible = false;
-                return;
-            }
-            else
-            {
-                _query_flow_line.Visible = true;
-                _query_flow_line.Title.Visible = true;
-            }
-             
-            if (_vm_list == null || !_vm_list.Any())
-                return;
-             
-
-            x_flow ??= _equip_pt?.X ?? _max_flow * 0.8;
-            if (x_flow < _min_flow || x_flow > _max_flow)
-                return; 
-
-            var query_pt_list = new List<PumpQueryPointViewModel>();
-            foreach (var vm in _vm_list)
-            {
-                double flow = 0, head = 0;
-                double? eff = null, power = null;
-
-                flow = x_flow.Value;
-                head = vm.CurrentCurveQH.GetPointY(flow);
-                if (vm.CurrentCurveQP != null)
-                {
-                    power = vm.CurrentCurveQP.GetPointYUnlimited(flow);
-                    eff = PumpCalcHelper.CalculateE(flow, head, power.Value);
-                }
-                else if (vm.CurrentCurveQE != null)
-                {
-                    eff = vm.CurrentCurveQE.GetPointYUnlimited(flow);
-                    power = PumpCalcHelper.CalculateP(flow, head, eff.Value);
-                }
-
-                query_pt_list.Add(new()
-                {
-                    Id = vm.Id,
-                    Name = vm.Name,
-                    Q = flow,
-                    H = head,
-                    E = eff,
-                    P = power,
-                    Hz = vm.CurrentHz,
-                    N = vm.CurrentN
-                });
-            }  
-
-            _query_flow_line.AxisValue = x_flow;
-            _query_flow_line.Title.Text = $"{x_flow:N1}";
-               
-            this.QueryPointChangedEvent?.Invoke(query_pt_list);
-        }
-
+        銆�
 
         /// <summary>
         /// 鍒涘缓绾跨郴鍒�
         /// </summary> 
-        private void CreateLineSeries(PumpVariableSpeedViewModel vm)
+        private void CreateLineSeries(string id, 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 + vm.Id.ToString();
+            series_qh.Name = _tag_qh + id;
             series_qh.ShowInLegend = false;
             series_qh.CrosshairEnabled = DefaultBoolean.False;
-            series_qh.Tag = vm.Id.ToString(); 
-            series_qh.LegendTextPattern = vm.Name;
+            series_qh.LegendTextPattern = curve_name;
 
 
             var series_qh_view = new DevExpress.XtraCharts.SplineSeriesView();
             series_qh_view.LineStyle.Thickness = 2;
-            series_qh_view.Color = vm.CurrentColor;
+            //series_qh_view.Color = vm.Color;
             series_qh_view.EnableAntialiasing = DefaultBoolean.True;
             series_qh_view.LineTensionPercent = 50;
 
@@ -684,7 +572,7 @@
             series_qh.View = series_qh_view;
             series_qh.Visible = true;
 
-            var pt_qh_list = vm.CurrentCurveQH.GetPointList(12);
+            var pt_qh_list = qh.GetPointList(12);
             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 }));
@@ -706,10 +594,10 @@
             txt_qh.AutoHeight = true;
             txt_qh.AutoWidth = true;
             txt_qh.BackColor = System.Drawing.Color.Transparent;
-            txt_qh.Border.Color = vm.CurrentColor;
+            //txt_qh.Border.Color = vm.Color;
             txt_qh.ConnectorStyle = DevExpress.XtraCharts.AnnotationConnectorStyle.Line;
             txt_qh.DXFont = PumpChartDisplay.AnnoFontQH;
-            txt_qh.Name = _tag_qh + vm.Id.ToString();
+            txt_qh.Name = _tag_qh + id;
             txt_qh.Padding.Bottom = 1;
             txt_qh.Padding.Left = 1;
             txt_qh.Padding.Right = 1;
@@ -718,26 +606,26 @@
             txt_qh.RuntimeMoving = true;
             txt_qh.RuntimeResizing = false;
             txt_qh.RuntimeRotation = false;
-            txt_qh.Text = vm.Name;
-            txt_qh.TextColor = vm.CurrentColor;
+            txt_qh.Text = curve_name;
+            //txt_qh.TextColor = vm.Color;
             txt_qh.ShapePosition = position_qh;
-            txt_qh.Visible = _line_name_visible;
+            txt_qh.Visible = true;
             this.chartControl1.AnnotationRepository.Add(txt_qh);
             this.chartControl1.Series.Add(series_qh);
 
-            if (vm.CurrentCurveQE != null)
+            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 + vm.Id.ToString();
+                series_qe.Name = _tag_qe + id;
                 series_qe.ShowInLegend = false;
                 series_qe.CrosshairEnabled = DefaultBoolean.False;
-                series_qe.Tag = vm.Id.ToString();
+                series_qe.Tag = id;
 
                 var series_qe_view = new DevExpress.XtraCharts.SplineSeriesView();
                 series_qe_view.LineStyle.Thickness = 2;
-                series_qe_view.Color = vm.CurrentColor;
+                //series_qe_view.Color = vm.Color;
                 series_qe_view.AxisY = _axis_y_eff;
                 series_qe_view.Pane = _default_pane;
                 series_qe_view.EnableAntialiasing = DefaultBoolean.True;
@@ -748,7 +636,7 @@
                 series_qe.View = series_qe_view;
                 series_qe.Visible = _qe_visible;
 
-                var pt_qe_list = vm.CurrentCurveQE.GetPointList(12);
+                var pt_qe_list = qe.GetPointList(12);
                 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 }));
@@ -757,19 +645,19 @@
                 this.chartControl1.Series.Add(series_qe);
             }
 
-            if (vm.CurrentCurveQP != null)
+            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 + vm.Id.ToString();
+                series_qp.Name = _tag_qp + id;
                 series_qp.ShowInLegend = false;
                 series_qp.CrosshairEnabled = DefaultBoolean.False;
-                series_qp.Tag = vm.Id.ToString();
+                series_qp.Tag = id;
 
                 var series_qp_view = new DevExpress.XtraCharts.SplineSeriesView();
                 series_qp_view.LineStyle.Thickness = 2;
-                series_qp_view.Color = vm.CurrentColor;
+                //series_qp_view.Color = vm.Color;
                 series_qp_view.AxisY = _axis_y_power;
                 series_qp_view.Pane = _bottom_pane;
                 series_qp_view.EnableAntialiasing = DefaultBoolean.True;
@@ -780,155 +668,30 @@
                 series_qp.View = series_qp_view;
                 series_qp.Visible = _qp_visible;
 
-                var pt_qp_list = vm.CurrentCurveQP.GetPointList(12);
+                var pt_qp_list = qp.GetPointList(12);
                 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 ChartEvent
-
-        // 鍙抽敭瀵硅薄 
-        private object _rightClickObj = null;
-        private bool _onMoveWorkPointLine = false;
-        private void chartControl1_MouseDown(object sender, MouseEventArgs e)
-        {
-            if (!_initial_data)
-                return;
-            var hitInfo = chartControl1.CalcHitInfo(e.Location);
-            if (e.Button == MouseButtons.Left)
-            {
-                if (hitInfo.InSeries)
-                {
-                    _rightClickObj = hitInfo.Series;
-
-                }
-                else if (hitInfo.InAxis)
-                {
-                    _rightClickObj = hitInfo.Axis;
-                }
-                else if (hitInfo.InConstantLine)
-                {
-                    if (hitInfo.ConstantLine == _query_flow_line)
-                    {
-                        _onMoveWorkPointLine = true;
-                    }
-
-
-                }
-                else if (hitInfo.InAnnotation)
-                {
-                    _rightClickObj = hitInfo.Annotation;
-                }
-                else
-                {
-                    _rightClickObj = null;
-                }
-            } 
-        }
-
-        private void chartControl1_MouseMove(object sender, MouseEventArgs e)
-        {
-            if (!_initial_data)
-                return;
-            if (_onMoveWorkPointLine)
-            {
-                var diagramCoordinates = _diagram.PointToDiagram(e.Location);
-                var axisValue = diagramCoordinates.GetAxisValue(_axis_x_flow);
-                if (axisValue == null)
-                    return;
-                double chartQ = axisValue.NumericalValue;
-                CalcWorkPointByQ(chartQ);
-            }
-            else
-            {
-                var hitInfo = chartControl1.CalcHitInfo(e.Location);
-                if (hitInfo.InConstantLine)
-                {
-                    this.chartControl1.Cursor = Cursors.Hand;
-                }
-                else if (hitInfo.InAnnotation)
-                {
-                    this.chartControl1.Cursor = Cursors.SizeAll;
-                }
-                else
-                {
-                    this.chartControl1.Cursor = Cursors.Default;
-                }
-            }
-        }
-
-        private void chartControl1_MouseUp(object sender, MouseEventArgs e)
-        {
-            if (!_initial_data)
-                return;
-            _onMoveWorkPointLine = false;
-        }
-
-        private void chartControl1_Resize(object sender, EventArgs e)
-        {
-            CalcTextAnchorPoint();
-        }
-        #endregion
+ 
 
         #region Right Click Menu 
 
         #region Event
-        private void barBtnSetAxisQValue_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
-        {
-            if (_vm_list == null || !_vm_list.Any())
-                return;
-            var dlg = new PumpAxisValueDlg();
-            dlg.SetBindingData();
-            dlg.VerifyValueChanged += (value) =>
-            {
-                if (value < _min_flow || value > _max_flow)
-                    return false;
-                CalcWorkPointByQ(value);
-                return true;
-            };
-            dlg.ShowDialog();
-        }
-
-        private void barCekLineVisible_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
-        {
-            SetLineVisible(this.barCekLineVisible.Checked);
-        }
-
-        private void barCekCurveNameVisible_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
-        {
-            SetCurveNameVisible(this.barCekCurveNameVisible.Checked);
-        }
-
-
-        private void barCekLegendVisible_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
-        {
-            SetLegendVisible(this.barCekLegendVisible.Checked);
-        }
-
-        private void barCekSetAxisNameVisible_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
-        {
-            SetAxisNameVisible(this.barCekSetAxisNameVisible.Checked);
-        }
-
+       
         private void barBtnSetChartAxis_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
         {
             SetChartAxis();
-        }
-
-        private void barCekCurveQHVisible_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
-        {
-            _default_pane.Visibility = _default_pane.Visibility == ChartElementVisibility.Visible ? ChartElementVisibility.Hidden : ChartElementVisibility.Visible;
-        }
-
+        } 
+      
         private void barCekCurveQEVisible_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
         {
              _qe_visible = this.barCekCurveQEVisible.Checked;
@@ -948,71 +711,8 @@
         }
 
         #endregion
-
-        /// <summary>
-        /// 璁剧疆宸ヤ綔鐐规樉绀�
-        /// </summary>
-        public void SetLineVisible(bool visible)
-        {
-            if (!_initial_data)
-                return;
-            LineVisible = visible;
-            CalcWorkPointByQ();
-        }
-
-        /// <summary>
-        /// 璁剧疆瑁呯疆鏇茬嚎鏄剧ず
-        /// </summary>
-        public void SetEquipVisible(bool visible)
-        {
-            if (!_initial_data)
-                return;
-            _equip_visible = visible;
-            UpdateChart(true);
-        }
-
-        /// <summary>
-        /// 璁剧疆鏁堢巼鏇茬嚎鏄剧ず
-        /// </summary>
-        public void SetQeVisible(bool visible)
-        { 
-            this.barCekCurveQEVisible.Checked = visible;
-        }
-
-        /// <summary>
-        /// 璁剧疆鏇茬嚎鍚�
-        /// </summary>
-        public void SetCurveNameVisible(bool visible)
-        {
-            if (!_initial_data)
-                return;
-            _line_name_visible = visible;
-            for (int i = 1; i < this.chartControl1.AnnotationRepository.Count; i++)
-            {
-                var anno = this.chartControl1.AnnotationRepository[i];
-                anno.Visible = _line_name_visible;
-            }
-        }
-
-        /// <summary>
-        /// 璁剧疆鍥句緥鏄剧ず
-        /// </summary>
-        public void SetLegendVisible(bool visible)
-        {
-            this.chartControl1.Legend.Visibility = visible ? DefaultBoolean.True : DefaultBoolean.False;
-        }
-
-        /// <summary>
-        /// 璁剧疆杞村悕绉版樉绀�
-        /// </summary>
-        public void SetAxisNameVisible(bool visible)
-        {
-            _axis_x_flow.Title.Visibility = visible ? DefaultBoolean.True : DefaultBoolean.False;
-            _axis_y_head.Title.Visibility = visible ? DefaultBoolean.True : DefaultBoolean.False;
-            _axis_y_eff.Title.Visibility = visible ? DefaultBoolean.True : DefaultBoolean.False;
-            _axis_y_power.Title.Visibility = visible ? DefaultBoolean.True : DefaultBoolean.False;
-        }
-
+ 
+  
         /// <summary>
         /// 璁剧疆鍧愭爣杞�
         /// </summary>
@@ -1031,25 +731,7 @@
 
         #endregion
 
-        #region Add Event
-
-        private void barBtnAddBySpeed_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
-        {
-            this.AddBySpeedEvent?.Invoke();
-        }
-
-        private void barBtnAddByHz_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
-        {
-            this.AddByHzEvent?.Invoke();
-
-        }
-
-        private void barBtnAddByPoint_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
-        {
-            this.AddByPointEvent?.Invoke();
-        }
-
-        #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-variable-speed-view/PumpVariableSpeedViewChart.resx
index d3f14dc..9b3f9c9 100644
--- 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-variable-speed-view/PumpVariableSpeedViewChart.resx
@@ -117,9 +117,6 @@
   <resheader name="writer">
     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
-  <metadata name="popMenuChart.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
-    <value>200, 17</value>
-  </metadata>
   <assembly alias="DevExpress.Data.v23.2" name="DevExpress.Data.v23.2, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
   <data name="barBtnSetChartAxis.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
@@ -202,108 +199,6 @@
         Pg0KPC9zdmc+Cw==
 </value>
   </data>
-  <data name="barCekLineVisible.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
-    <value>
-        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
-        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
-        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAADgFAAAC77u/
-        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
-        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
-        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
-        Y2U9InByZXNlcnZlIiBpZD0iVmVydGljYWxfQXhpc19Mb2dfU2NhbGUiIHN0eWxlPSJlbmFibGUtYmFj
-        a2dyb3VuZDpuZXcgMCAwIDMyIDMyIj4NCiAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5CbGFja3tm
-        aWxsOiM3MjcyNzI7fQoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5zdDB7b3BhY2l0eTowLjU7fQo8L3N0
-        eWxlPg0KICA8ZyBjbGFzcz0ic3QwIj4NCiAgICA8cmVjdCB4PSI0IiB5PSIyNiIgd2lkdGg9IjI2IiBo
-        ZWlnaHQ9IjIiIGNsYXNzPSJCbGFjayIgLz4NCiAgPC9nPg0KICA8cG9seWdvbiBwb2ludHM9IjQsMiA0
-        LDQgMiw0IDIsNiA0LDYgNCw4IDIsOCAyLDEwIDQsMTAgNCwxMiAyLDEyIDIsMTQgNCwxNCA0LDE2IDIs
-        MTYgMiwxOCA0LDE4IDQsMjAgMiwyMCAyLDIyICAgNCwyMiA0LDI0IDIsMjQgMiwyNiA0LDI2IDQsMjgg
-        NiwyOCA2LDIgIiBjbGFzcz0iQmxhY2siIC8+DQogIDxwYXRoIGQ9Ik0xNC42LDEwSDEwVjJoMS43djYu
-        NWgyLjlWMTB6IE0xOC42LDEwYy0xLjEsMC0yLTAuNC0yLjctMS4xYy0wLjctMC43LTEtMS43LTEtMi44
-        YzAtMS4yLDAuNC0yLjIsMS4xLTMgIEMxNi42LDIuNCwxNy42LDIsMTguNywyYzEuMSwwLDIsMC40LDIu
-        NywxLjFzMSwxLjcsMSwyLjljMCwxLjItMC40LDIuMi0xLjEsMi45UzE5LjcsMTAsMTguNiwxMHogTTE4
-        LjcsMy41Yy0wLjYsMC0xLjEsMC4yLTEuNCwwLjcgIGMtMC40LDAuNS0wLjUsMS4xLTAuNSwxLjhjMCww
-        LjgsMC4yLDEuNCwwLjUsMS44YzAuNCwwLjQsMC44LDAuNywxLjQsMC43YzAuNiwwLDEuMS0wLjIsMS40
-        LTAuN3MwLjUtMSwwLjUtMS44ICBjMC0wLjgtMC4yLTEuNC0wLjUtMS45QzE5LjcsMy43LDE5LjMsMy41
-        LDE4LjcsMy41eiBNMzAsOS4zYy0wLjgsMC40LTEuNywwLjctMi44LDAuN0MyNiwxMCwyNSw5LjcsMjQu
-        Myw5cy0xLjEtMS42LTEuMS0yLjggIGMwLTEuMiwwLjQtMi4yLDEuMi0zUzI2LjIsMiwyNy41LDJjMC44
-        LDAsMS41LDAuMSwyLjIsMC4zVjRjLTAuNi0wLjMtMS4zLTAuNS0yLjItMC41Yy0wLjcsMC0xLjMsMC4y
-        LTEuOCwwLjdDMjUuMyw0LjYsMjUsNS4zLDI1LDYgIGMwLDAuOCwwLjIsMS40LDAuNiwxLjhzMSwwLjcs
-        MS42LDAuN2MwLjQsMCwwLjctMC4xLDEtMC4yVjYuOGgtMS41VjUuNUgzMFY5LjN6IiBjbGFzcz0iQmx1
-        ZSIgLz4NCjwvc3ZnPgs=
-</value>
-  </data>
-  <data name="barCekCurveNameVisible.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
-    <value>
-        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
-        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
-        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAALUDAAAC77u/
-        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
-        IHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
-        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
-        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
-        MTYgMTYiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkdyZWVue2ZpbGw6IzExOUI0OTt9Cgku
-        Qmx1ZXtmaWxsOiMzNDc1QkE7fQoJLkJsYWNre2ZpbGw6IzczNzM3Mzt9Cjwvc3R5bGU+DQogIDxyZWN0
-        IHg9IjAiIHk9IjEiIHdpZHRoPSIxNiIgaGVpZ2h0PSIzIiBjbGFzcz0iR3JlZW4iIC8+DQogIDxwb2x5
-        Z29uIHBvaW50cz0iMTUsNCAxNSwxNCAxLDE0IDEsNCAwLDQgMCwxNSAxNiwxNSAxNiw0ICIgY2xhc3M9
-        IkJsYWNrIiAvPg0KICA8cGF0aCBkPSJNOSw2SDhWNWgydjIuMkMxMC4zLDcuMSwxMC42LDcsMTEuMSw3
-        QzEyLjYsNywxMyw3LjksMTMsOXYxYzAsMC45LTAuMiwyLTIsMmMtMC40LDAtMS4yLDAtMi0wLjFWNnog
-        TTEwLDExICBjMC4zLDAsMC44LDAuMSwxLDAuMWMwLjgsMCwwLjktMC4zLDAuOS0xLjFWOWMwLTAuOC0w
-        LjMtMS4xLTAuOS0xLjFjLTAuMywwLTAuOCwwLjEtMSwwLjFWMTF6IiBjbGFzcz0iQmx1ZSIgLz4NCiAg
-        PHBhdGggZD0iTTcsMTFWNy4zQzYuNCw3LjEsNS44LDcsNS4xLDdDMy4xLDcsMyw4LjMsMyw5djFjMCww
-        LjksMC4yLDIsMS45LDJjMC4yLDAsMC43LDAsMS4zLTAuM1YxMkg3aDF2LTFIN3ogTTYsMTEgIGMtMC4z
-        LDAuMS0wLjcsMC4xLTAuOSwwLjFjLTAuOCwwLTEtMC4zLTEtMVY5YzAtMC43LDAuMi0xLjEsMS0xLjFD
-        NS4zLDcuOSw1LjcsOCw2LDhWMTF6IiBjbGFzcz0iQmx1ZSIgLz4NCjwvc3ZnPgs=
-</value>
-  </data>
-  <data name="barCekSetAxisNameVisible.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
-    <value>
-        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
-        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
-        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAEMEAAAC77u/
-        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
-        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
-        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
-        Y2U9InByZXNlcnZlIiBpZD0iVmVydGljYWxfVGl0bGUiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpu
-        ZXcgMCAwIDMyIDMyIj4NCiAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5CbGFja3tmaWxsOiM3Mjcy
-        NzI7fQoJLlllbGxvd3tmaWxsOiNGRkIxMTU7fQoJLnN0MHtvcGFjaXR5OjAuNTt9Cjwvc3R5bGU+DQog
-        IDxwb2x5Z29uIHBvaW50cz0iMTQsMjggMTQsMiAxMiwyIDEyLDMwIDMyLDMwIDMyLDI4ICIgY2xhc3M9
-        IkJsYWNrIiAvPg0KICA8ZyBjbGFzcz0ic3QwIj4NCiAgICA8cG9seWdvbiBwb2ludHM9IjMwLDIgMTQs
-        MiAxNCw0IDMwLDQgMzAsMjggMzIsMjggMzIsNCAzMiwyICAiIGNsYXNzPSJCbGFjayIgLz4NCiAgPC9n
-        Pg0KICA8cGF0aCBkPSJNMTAsMTRINy41bC0wLjctMi4ySDMuMkwyLjUsMTRIMEwzLjcsNGgyLjdMMTAs
-        MTR6IE02LjMsMTBMNS4yLDYuN0M1LjEsNi40LDUsNi4xLDUsNS44SDUgIGMwLDAuMy0wLjEsMC42LTAu
-        MiwwLjlMMy43LDEwSDYuM3ogTTIsMjZWMTZoMy42YzEuMSwwLDIsMC4yLDIuNiwwLjZjMC42LDAuNCww
-        LjksMSwwLjksMS43YzAsMC41LTAuMiwxLTAuNSwxLjRzLTAuOCwwLjctMS40LDAuOCAgdjBjMC43LDAu
-        MSwxLjMsMC40LDEuNywwLjhzMC42LDEsMC42LDEuNmMwLDAuOS0wLjMsMS42LTEsMi4yQzcuOSwyNS43
-        LDcsMjYsNS44LDI2SDJ6IE00LjMsMTcuN1YyMGgxYzAuNSwwLDAuOC0wLjEsMS4xLTAuMyAgYzAuMy0w
-        LjIsMC40LTAuNSwwLjQtMC45YzAtMC43LTAuNS0xLjEtMS42LTEuMUg0LjN6IE00LjMsMjEuN3YyLjZo
-        MS4yYzAuNSwwLDAuOS0wLjEsMS4yLTAuNGMwLjMtMC4yLDAuNC0wLjYsMC40LTEgIGMwLTAuNC0wLjEt
-        MC43LTAuNC0wLjljLTAuMy0wLjItMC43LTAuMy0xLjItMC4zSDQuM3oiIGNsYXNzPSJZZWxsb3ciIC8+
-        DQo8L3N2Zz4L
-</value>
-  </data>
-  <data name="barCekLegendVisible.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
-    <value>
-        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
-        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
-        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAALgDAAAC77u/
-        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
-        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
-        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
-        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
-        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLlllbGxvd3tmaWxsOiNGRkIxMTU7fQoJ
-        LlJlZHtmaWxsOiNEMTFDMUM7fQoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9CgkuQmx1ZXtmaWxsOiMxMTc3
-        RDc7fQoJLldoaXRle2ZpbGw6I0ZGRkZGRjt9CgkuR3JlZW57ZmlsbDojMDM5QzIzO30KCS5zdDB7b3Bh
-        Y2l0eTowLjc1O30KCS5zdDF7b3BhY2l0eTowLjU7fQoJLnN0MntvcGFjaXR5OjAuMjU7fQoJLnN0M3tm
-        aWxsOiNGRkIxMTU7fQo8L3N0eWxlPg0KICA8ZyBpZD0iU2hvd0xlZ2VuZCI+DQogICAgPGcgY2xhc3M9
-        InN0MSI+DQogICAgICA8cG9seWdvbiBwb2ludHM9IjMwLDAgNCwwIDQsMiAzMCwyIDMwLDI4IDMyLDI4
-        IDMyLDIgMzIsMCAgICIgY2xhc3M9IkJsYWNrIiAvPg0KICAgIDwvZz4NCiAgICA8cmVjdCB4PSI2IiB5
-        PSI0IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0iUmVkIiAvPg0KICAgIDxyZWN0IHg9IjYiIHk9
-        IjEyIiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0iQmx1ZSIgLz4NCiAgICA8cmVjdCB4PSI2IiB5
-        PSIyMCIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9IlllbGxvdyIgLz4NCiAgICA8cGF0aCBkPSJN
-        NCwyOFYwSDJ2MzBoMzB2LTJINHogTTI2LDhIMTZWNmgxMFY4eiBNMjYsMTRIMTZ2MmgxMFYxNHogTTI2
-        LDIySDE2djJoMTBWMjJ6IiBjbGFzcz0iQmxhY2siIC8+DQogIDwvZz4NCjwvc3ZnPgs=
-</value>
-  </data>
   <metadata name="barManager1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
     <value>17, 17</value>
   </metadata>
@@ -325,144 +220,4 @@
         Pg0KPC9zdmc+Cw==
 </value>
   </data>
-  <data name="barSubMenuEdit.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
-    <value>
-        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
-        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
-        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAAQDAAAC77u/
-        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
-        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
-        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
-        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
-        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9Cgku
-        Qmx1ZXtmaWxsOiMxMTc3RDc7fQoJLkdyZWVue2ZpbGw6IzAzOUMyMzt9CgkuWWVsbG93e2ZpbGw6I0ZG
-        QjExNTt9CgkuUmVke2ZpbGw6I0QxMUMxQzt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh
-        Y2l0eTowLjU7fQoJLnN0MXtvcGFjaXR5OjAuNzU7fQo8L3N0eWxlPg0KICA8cGF0aCBkPSJNMjQsMjQu
-        OFYyOEg0VjRoMjB2Ny4ybDItMlYzYzAtMC41LTAuNS0xLTEtMUgzQzIuNSwyLDIsMi41LDIsM3YyNmMw
-        LDAuNSwwLjUsMSwxLDFoMjJjMC41LDAsMS0wLjUsMS0xdi02LjIgIEwyNCwyNC44eiIgY2xhc3M9IkJs
-        YWNrIiAvPg0KICA8cGF0aCBkPSJNMjksMTdsLTgsOGwtNC00bDgtOEwyOSwxN3ogTTMwLDE2bDEuNy0x
-        LjdjMC40LTAuNCwwLjQtMSwwLTEuM0wyOSwxMC4zYy0wLjQtMC40LTEtMC40LTEuMywwTDI2LDEyTDMw
-        LDE2eiAgIE0xNiwyMnY0aDRMMTYsMjJ6IiBjbGFzcz0iQmx1ZSIgLz4NCjwvc3ZnPgs=
-</value>
-  </data>
-  <data name="barSubMenuQuery.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
-    <value>
-        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
-        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
-        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAANoCAAAC77u/
-        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
-        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
-        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
-        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
-        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5Z
-        ZWxsb3d7ZmlsbDojRkZCMTE1O30KCS5CbGFja3tmaWxsOiM3MjcyNzI7fQoJLkdyZWVue2ZpbGw6IzAz
-        OUMyMzt9CgkuUmVke2ZpbGw6I0QxMUMxQzt9Cgkuc3Qwe29wYWNpdHk6MC43NTt9Cgkuc3Qxe29wYWNp
-        dHk6MC41O30KPC9zdHlsZT4NCiAgPGcgaWQ9Ilpvb20iPg0KICAgIDxwYXRoIGQ9Ik0yNy43LDI1LjNM
-        MjAuNSwxOGMxLTEuNCwxLjUtMy4yLDEuNS01YzAtNS00LTktOS05cy05LDQtOSw5YzAsNSw0LDksOSw5
-        YzEuOSwwLDMuNi0wLjYsNS0xLjVsNy4zLDcuMyAgIGMwLjMsMC4zLDAuOSwwLjMsMS4yLDBsMS4yLTEu
-        MkMyOC4xLDI2LjIsMjguMSwyNS42LDI3LjcsMjUuM3ogTTYsMTNjMC0zLjksMy4xLTcsNy03czcsMy4x
-        LDcsN2MwLDMuOS0zLjEsNy03LDdTNiwxNi45LDYsMTN6IiBjbGFzcz0iQmxhY2siIC8+DQogIDwvZz4N
-        Cjwvc3ZnPgs=
-</value>
-  </data>
-  <data name="barBtnSetAxisQValue.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
-    <value>
-        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
-        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
-        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAO8CAAAC77u/
-        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
-        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
-        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
-        Y2U9InByZXNlcnZlIiBpZD0iSG9yaXpvbnRhbF9BeGlzX0xlZnRfdG9fUmlnaHQiIHN0eWxlPSJlbmFi
-        bGUtYmFja2dyb3VuZDpuZXcgMCAwIDMyIDMyIj4NCiAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5C
-        bGFja3tmaWxsOiM3MjcyNzI7fQoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5zdDB7b3BhY2l0eTowLjU7
-        fQo8L3N0eWxlPg0KICA8ZyBjbGFzcz0ic3QwIj4NCiAgICA8cmVjdCB4PSI0IiB5PSIyIiB3aWR0aD0i
-        MiIgaGVpZ2h0PSIxOCIgY2xhc3M9IkJsYWNrIiAvPg0KICA8L2c+DQogIDxwb2x5Z29uIHBvaW50cz0i
-        MzAsMjcgMjYsMjQgMjYsMjYgNCwyNiA0LDI4IDI2LDI4IDI2LDMwICIgY2xhc3M9IkJsdWUiIC8+DQog
-        IDxwb2x5Z29uIHBvaW50cz0iNCwxOCA0LDIwIDYsMjAgNiwyMiA4LDIyIDgsMjAgMTAsMjAgMTAsMjIg
-        MTIsMjIgMTIsMjAgMTQsMjAgMTQsMjIgMTYsMjIgMTYsMjAgMTgsMjAgMTgsMjIgMjAsMjIgICAyMCwy
-        MCAyMiwyMCAyMiwyMiAyNCwyMiAyNCwyMCAyNiwyMCAyNiwyMiAyOCwyMiAyOCwyMCAzMCwyMCAzMCwx
-        OCAiIGNsYXNzPSJCbGFjayIgLz4NCjwvc3ZnPgs=
-</value>
-  </data>
-  <data name="barSubAdd.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
-    <value>
-        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
-        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
-        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAGICAAAC77u/
-        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
-        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
-        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
-        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
-        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5Z
-        ZWxsb3d7ZmlsbDojRkZCMTE1O30KCS5CbGFja3tmaWxsOiM3MjcyNzI7fQoJLkdyZWVue2ZpbGw6IzAz
-        OUMyMzt9CgkuUmVke2ZpbGw6I0QxMUMxQzt9Cgkuc3Qwe29wYWNpdHk6MC43NTt9Cgkuc3Qxe29wYWNp
-        dHk6MC41O30KPC9zdHlsZT4NCiAgPGcgaWQ9IkFkZENpcmNsZWQiPg0KICAgIDxwYXRoIGQ9Ik0xNiw0
-        QzkuNCw0LDQsOS40LDQsMTZzNS40LDEyLDEyLDEyczEyLTUuNCwxMi0xMlMyMi42LDQsMTYsNHogTTI0
-        LDE4aC02djZoLTR2LTZIOHYtNGg2VjhoNHY2aDZWMTh6IiBjbGFzcz0iR3JlZW4iIC8+DQogIDwvZz4N
-        Cjwvc3ZnPgs=
-</value>
-  </data>
-  <data name="barBtnAddBySpeed.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
-    <value>
-        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
-        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
-        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAHgDAAAC77u/
-        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
-        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
-        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
-        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
-        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLlllbGxvd3tmaWxsOiNGRkIxMTU7fQoJ
-        LlJlZHtmaWxsOiNEMTFDMUM7fQoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5HcmVlbntmaWxsOiMwMzlD
-        MjM7fQoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh
-        Y2l0eTowLjU7fQoJLnN0MXtkaXNwbGF5Om5vbmU7fQoJLnN0MntkaXNwbGF5OmlubGluZTtmaWxsOiMw
-        MzlDMjM7fQoJLnN0M3tkaXNwbGF5OmlubGluZTtmaWxsOiNEMTFDMUM7fQoJLnN0NHtkaXNwbGF5Omlu
-        bGluZTtmaWxsOiM3MjcyNzI7fQo8L3N0eWxlPg0KICA8ZyBpZD0iRXhwYW5kQ29sbGFwc2UiPg0KICAg
-        IDxwYXRoIGQ9Ik05LDBDNCwwLDAsNCwwLDlzNCw5LDksOWMwLjUsMCwxLTAuMSwxLjUtMC4xYzEuMS0z
-        LjYsMy45LTYuNCw3LjQtNy40YzAtMC41LDAuMS0xLDAuMS0xLjVDMTgsNCwxNCwwLDksMHogICAgTTE0
-        LDEwaC00djRIOHYtNEg0VjhoNFY0aDJ2NGg0VjEweiIgY2xhc3M9IkdyZWVuIiAvPg0KICAgIDxwYXRo
-        IGQ9Ik0yMSwxMmMtNSwwLTksNC05LDlzNCw5LDksOXM5LTQsOS05UzI2LDEyLDIxLDEyeiBNMjYsMjJI
-        MTZ2LTJoMTBWMjJ6IiBjbGFzcz0iQmx1ZSIgLz4NCiAgPC9nPg0KPC9zdmc+Cw==
-</value>
-  </data>
-  <data name="barBtnAddByHz.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
-    <value>
-        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
-        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
-        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAALUDAAAC77u/
-        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
-        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
-        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
-        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
-        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLlJlZHtmaWxsOiNEMTFDMUM7fQoJLlll
-        bGxvd3tmaWxsOiNGRkIxMTU7fQoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5HcmVlbntmaWxsOiMwMzlD
-        MjM7fQoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh
-        Y2l0eTowLjU7fQoJLnN0MXtvcGFjaXR5OjAuNzU7fQoJLnN0MntvcGFjaXR5OjAuMzU7fQoJLnN0M3tv
-        cGFjaXR5OjAuNjU7fQo8L3N0eWxlPg0KICA8ZyBpZD0iU3dpZnRQbG90Ij4NCiAgICA8cG9seWdvbiBw
-        b2ludHM9IjMwLDQgMzAsOCAyOCw4IDI4LDExIDI2LDExIDI2LDYgMjQsNiAyNCwyIDIyLDIgMjIsOCAy
-        MCw4IDIwLDE0IDE4LDE0IDE4LDEyIDE2LDEyIDE2LDE2IDE0LDE2ICAgIDE0LDIyIDEyLDIyIDEyLDE4
-        IDEwLDE4IDEwLDE0IDgsMTQgOCwyMCA2LDIwIDYsMTYgNCwxNiA0LDEyIDIsMTIgMiwxNiAwLDE2IDAs
-        MjIgMiwyMiAyLDE4IDQsMTggNCwyMiA2LDIyIDYsMjQgOCwyNCA4LDIyIDEwLDIyICAgIDEwLDI0IDEy
-        LDI0IDEyLDI4IDE0LDI4IDE0LDI0IDE2LDI0IDE2LDE4IDE4LDE4IDE4LDIwIDIwLDIwIDIwLDE2IDIy
-        LDE2IDIyLDEwIDI0LDEwIDI0LDE0IDI2LDE0IDI2LDE4IDI4LDE4IDI4LDE0IDMwLDE0IDMwLDEwICAg
-        IDMyLDEwIDMyLDQgICIgY2xhc3M9IkJsdWUiIC8+DQogIDwvZz4NCjwvc3ZnPgs=
-</value>
-  </data>
-  <data name="barBtnAddByPoint.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
-    <value>
-        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
-        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
-        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAIsBAAAC77u/
-        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
-        IHZpZXdCb3g9IjAgMCAxNSAxNSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
-        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
-        Y2U9InByZXNlcnZlIiBpZD0iQmxhY2tDaXJjbGVfMV8iIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpu
-        ZXcgMCAwIDE1IDE1Ij4NCiAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5CbGFja3tmaWxsOiM3Mjcy
-        NzI7fQo8L3N0eWxlPg0KICA8Y2lyY2xlIGN4PSI3LjUiIGN5PSI3LjUiIHI9IjcuNSIgaWQ9IkJsYWNr
-        Q2lyY2xlIiBjbGFzcz0iQmxhY2siIC8+DQo8L3N2Zz4L
-</value>
-  </data>
-  <metadata name="popMenuLine.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
-    <value>397, 17</value>
-  </metadata>
 </root>
\ No newline at end of file
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 03e3294..62178c3 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
@@ -44,7 +44,7 @@
 
         private bool _initial_data = false;
 
-        private PumpParallelViewModel _paralle_vm = null;
+        private PumpParallelViewModel _vm = null;
 
         #endregion
 
@@ -170,7 +170,7 @@
                 using Pen pen = new(Color.Black, 2);
                 pen.DashStyle = System.Drawing.Drawing2D.DashStyle.DashDotDot;
 
-                DrawEquipPoint(dxArgs.Cache, pen, _equip_sect_pt, _paralle_vm.CurrentCurveQE, _paralle_vm.CurrentCurveQP);
+                DrawEquipPoint(dxArgs.Cache, pen, _equip_sect_pt, _vm.CurrentCurveQE, _vm.CurrentCurveQP);
                 DrawEquipLine(dxArgs.Cache, pen, _equip_line);
             }
 
@@ -263,7 +263,7 @@
             }
             if (qp != null && _qp_visible)
             {
-                var qp_y = qe.GetPointY(qh_x);
+                var qp_y = qp.GetPointY(qh_x);
                 var qp_pt = _diagram.DiagramToPoint(qh_x, qp_y, _axis_x_flow, _axis_y_power);
                 var qp_pt_x = qp_pt.Point.X;
                 var qp_pt_y = qp_pt.Point.Y;
@@ -304,14 +304,14 @@
             _equip_pt = new Geometry.Point2d(x, y);
             _equip_line = null;
             _equip_sect_pt = null;
-            if (_paralle_vm == null || (_vm_list == null || !_vm_list.Any()))
+            if (_vm == null || (_vm_list == null || !_vm_list.Any()))
             {
                 this.DesignPointChangedEvent?.Invoke(null);
                 return;
             }
 
             start_head ??= _coordinate.DispMinH();
-            var equip_line = Yw.Geometry.EquipCurveHelper.CalcEquipCurve(_paralle_vm.CurrentCurveQH, _equip_pt, start_head.Value, out Yw.Geometry.Point2d sect_pt);
+            var equip_line = Yw.Geometry.EquipCurveHelper.CalcEquipCurve(_vm.CurrentCurveQH, _equip_pt, start_head.Value, out Yw.Geometry.Point2d sect_pt);
             if (equip_line == null || sect_pt == null)
                 return;
 
@@ -465,10 +465,10 @@
                 _max_power = Math.Max(_max_power, yyy.Max());
             }
 
-            if (_paralle_vm != null)
+            if (_vm != null)
             {
                 {
-                    var qh_pt_list = _paralle_vm.CurveQH.GetPointList();
+                    var qh_pt_list = _vm.CurveQH.GetPointList();
 
                     var xxx = qh_pt_list.Select(x => x.X);
                     var yyy = qh_pt_list.Select(x => x.Y);
@@ -480,17 +480,17 @@
                     _max_head = Math.Max(_max_head, yyy.Max());
                 }
 
-                if (_paralle_vm.CurveQE != null)
+                if (_vm.CurveQE != null)
                 {
-                    var qe_pt_list = _paralle_vm.CurveQE.GetPointList();
+                    var qe_pt_list = _vm.CurveQE.GetPointList();
                     var yyy = qe_pt_list.Select(x => x.Y);
                     _min_eff = Math.Max(_min_eff, yyy.Min());
                     _max_eff = Math.Max(_max_eff, yyy.Max());
                 }
 
-                if (_paralle_vm.CurveQP != null)
+                if (_vm.CurveQP != null)
                 {
-                    var qp_pt_list = _paralle_vm.CurveQP.GetPointList();
+                    var qp_pt_list = _vm.CurveQP.GetPointList();
                     var yyy = qp_pt_list.Select(x => x.Y);
                     _min_power = Math.Min(_min_power, yyy.Min());
                     _max_power = Math.Max(_max_power, yyy.Max());
@@ -635,8 +635,8 @@
             this.chartControl1.BeginInit();
             this.chartControl1.Series.Clear();
 
-            var annotationCount = this.chartControl1.AnnotationRepository.Count;
-            for (int i = annotationCount - 1; i > 0; i--)
+            var annotation_count = this.chartControl1.AnnotationRepository.Count;
+            for (int i = annotation_count - 1; i > 0; i--)
             {
                 if (i == 0)
                     break;
@@ -650,7 +650,7 @@
                 {
                     CreateLineSeries(vm);
                 }
-                CalcParallelSeries(_vm_list);
+                CalcParallelSeries(_vm_list.Count >= 2 ? _vm_list : null);
             }
             this.chartControl1.EndInit();
         }
@@ -660,11 +660,12 @@
         /// </summary>
         private void CalcParallelSeries(List<PumpParallelViewModel> list)
         {
-            _paralle_vm = null;
+            _vm = null;
             this.barCekLineVisible.Enabled = false;
             if (list == null || !list.Any())
             {
                 LineVisible = false;
+                this.ParallelStatusChangedEvent?.Invoke(false, "骞惰仈澶辫触!"); 
                 return;
             }
 
@@ -693,22 +694,22 @@
             var qe = new Yw.Geometry.CubicSpline2d(calc_pt_qe_list);
             var qp = new Yw.Geometry.CubicSpline2d(calc_pt_qp_list);
 
-            _paralle_vm = new Yw.WinFrmUI.Phart.PumpParallelViewModel();
-            _paralle_vm.Id = "parallel";
-            _paralle_vm.Name = "骞惰仈绾�";
-            _paralle_vm.CurrentColor = Color.Black;
-            _paralle_vm.CurveQH = qh;
-            _paralle_vm.CurveQE = qe;
-            _paralle_vm.CurveQP = qp;
-            _paralle_vm.CurrentCurveQH = qh;
-            _paralle_vm.CurrentCurveQE = qe;
-            _paralle_vm.CurrentCurveQP = qp;
+            _vm = new Yw.WinFrmUI.Phart.PumpParallelViewModel();
+            _vm.Id = "parallel";
+            _vm.Name = "骞惰仈绾�";
+            _vm.CurrentColor = Color.Black;
+            _vm.CurveQH = qh;
+            _vm.CurveQE = qe;
+            _vm.CurveQP = qp;
+            _vm.CurrentCurveQH = qh;
+            _vm.CurrentCurveQE = qe;
+            _vm.CurrentCurveQP = qp;
 
-            _paralle_vm.CurveQH = qh;
-            _paralle_vm.CurveQE = qe;
-            _paralle_vm.CurveQP = qp;
+            _vm.CurveQH = qh;
+            _vm.CurveQE = qe;
+            _vm.CurveQP = qp;
 
-            CreateLineSeries(_paralle_vm);
+            CreateLineSeries(_vm);
             this.barCekLineVisible.Enabled = true;
 
             this.ParallelStatusChangedEvent?.Invoke(true, "骞惰仈鎴愬姛!");  
@@ -745,13 +746,13 @@
                 _anno_txt_query_info.Visible = true;
             }
 
-            if (_paralle_vm==null)
+            if (_vm==null)
                 return;
             if (_vm_list == null || !_vm_list.Any())
                 return;
              
-            var min_flow = _paralle_vm.CurveQH.MinX;
-            var max_flow = _paralle_vm.CurveQH.MaxX;
+            var min_flow = _vm.CurveQH.MinX;
+            var max_flow = _vm.CurveQH.MaxX;
 
             x_flow ??= _equip_pt?.X ?? max_flow *0.8;
             if (x_flow < min_flow || x_flow > max_flow)
@@ -761,16 +762,16 @@
             double? paralle_eff = null, paralle_power = null;
 
             paralle_flow = x_flow.Value;
-            paralle_head = _paralle_vm.CurrentCurveQH.GetPointYUnlimited(paralle_flow);
+            paralle_head = _vm.CurrentCurveQH.GetPointYUnlimited(paralle_flow);
 
-            if (_paralle_vm.CurrentCurveQP != null)
+            if (_vm.CurrentCurveQP != null)
             {
-                paralle_power = _paralle_vm.CurrentCurveQP.GetPointYUnlimited(paralle_flow);
+                paralle_power = _vm.CurrentCurveQP.GetPointYUnlimited(paralle_flow);
                 paralle_eff = PumpCalcHelper.CalculateE(paralle_flow, paralle_head, paralle_power.Value);
             }
-            else if (_paralle_vm.CurrentCurveQE != null)
+            else if (_vm.CurrentCurveQE != null)
             {
-                paralle_eff = _paralle_vm.CurrentCurveQE.GetPointYUnlimited(paralle_flow);
+                paralle_eff = _vm.CurrentCurveQE.GetPointYUnlimited(paralle_flow);
                 paralle_power = PumpCalcHelper.CalculateP(paralle_flow, paralle_head, paralle_eff.Value);
             }
 

--
Gitblit v1.9.3