From 9886c494da5adcc9a670e2b7ff2c657a98f27b96 Mon Sep 17 00:00:00 2001
From: lixiaojun <1287241240@qq.com>
Date: 星期四, 28 十一月 2024 14:23:30 +0800
Subject: [PATCH] 导入优化

---
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/18-loss/01-curve/HydroSingleLossCurveCtrl.cs |  100 ++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 73 insertions(+), 27 deletions(-)

diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/18-loss/01-curve/HydroSingleLossCurveCtrl.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/18-loss/01-curve/HydroSingleLossCurveCtrl.cs
index 0df5a3f..9326ff2 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/18-loss/01-curve/HydroSingleLossCurveCtrl.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/18-loss/01-curve/HydroSingleLossCurveCtrl.cs
@@ -47,38 +47,69 @@
             }
             var diagram = this.chartControl1.Diagram as XYDiagram;
 
+            #region X杞�
+
             var allDistances = allNodeLossList.Select(x => x.Distance).Distinct().ToList();
             var distanceMax = allDistances.Max();
             diagram.AxisX.Tickmarks.MinorVisible = false;
             diagram.AxisX.WholeRange.SideMarginsValue = 0;
             if (distanceMax <= 10)
             {
+                var maxValue = Math.Ceiling(distanceMax);
                 diagram.AxisX.WholeRange.MinValue = 0;
-                diagram.AxisX.WholeRange.MaxValue = 10;
+                diagram.AxisX.WholeRange.MaxValue = maxValue;
                 diagram.AxisX.NumericScaleOptions.GridSpacing = 1;
+            }
+            else if (distanceMax <= 50)
+            {
+                var maxValue = Math.Ceiling(distanceMax / 10);
+                diagram.AxisX.WholeRange.MinValue = 0;
+                diagram.AxisX.WholeRange.MaxValue = maxValue * 10;
+                diagram.AxisX.NumericScaleOptions.GridSpacing = 5;
             }
             else if (distanceMax <= 100)
             {
+                var maxValue = Math.Ceiling(distanceMax / 10);
                 diagram.AxisX.WholeRange.MinValue = 0;
-                diagram.AxisX.WholeRange.MaxValue = 100;
+                diagram.AxisX.WholeRange.MaxValue = maxValue * 10;
                 diagram.AxisX.NumericScaleOptions.GridSpacing = 10;
             }
-            else if (distanceMax <= 1000)
+            else if (distanceMax <= 500)
             {
+                var maxValue = Math.Ceiling(distanceMax / 100);
                 diagram.AxisX.WholeRange.MinValue = 0;
-                diagram.AxisX.WholeRange.MaxValue = 1000;
+                diagram.AxisX.WholeRange.MaxValue = maxValue * 100;
+                diagram.AxisX.NumericScaleOptions.GridSpacing = 50;
+            }
+            else if (distanceMax <= 3000)
+            {
+                var maxValue = Math.Ceiling(distanceMax / 100);
+                diagram.AxisX.WholeRange.MinValue = 0;
+                diagram.AxisX.WholeRange.MaxValue = maxValue * 100;
                 diagram.AxisX.NumericScaleOptions.GridSpacing = 100;
+            }
+            else if (distanceMax <= 5000)
+            {
+                var maxValue = Math.Ceiling(distanceMax / 1000);
+                diagram.AxisX.WholeRange.MinValue = 0;
+                diagram.AxisX.WholeRange.MaxValue = maxValue * 1000;
+                diagram.AxisX.NumericScaleOptions.GridSpacing = 200;
             }
             else if (distanceMax <= 10000)
             {
+                var maxValue = Math.Ceiling(distanceMax / 1000);
                 diagram.AxisX.WholeRange.MinValue = 0;
-                diagram.AxisX.WholeRange.MaxValue = 10000;
+                diagram.AxisX.WholeRange.MaxValue = maxValue * 1000;
                 diagram.AxisX.NumericScaleOptions.GridSpacing = 1000;
             }
             else
             {
 
             }
+
+            #endregion
+
+            #region 鎬绘按澶磞杞�
 
             var allHeads = allNodeLossList.Select(x => Math.Max(x.StartHead, x.EndHead)).ToList();
             var headMax = allHeads.Max();
@@ -91,61 +122,76 @@
                 diagram.AxisY.NumericScaleOptions.GridSpacing = 1;
                 diagram.AxisY.VisualRange.SetMinMaxValues(0, 10);
             }
-            else if (distanceMax <= 100)
+            else if (headMax <= 100)
             {
+                var maxValue = Math.Ceiling(headMax / 10);
                 diagram.AxisY.WholeRange.MinValue = 0;
-                diagram.AxisY.WholeRange.MaxValue = 100;
-                diagram.AxisY.NumericScaleOptions.GridSpacing = 10;
-                diagram.AxisY.VisualRange.SetMinMaxValues(0, 100);
+                diagram.AxisY.WholeRange.MaxValue = maxValue * 10;
+                diagram.AxisY.NumericScaleOptions.GridSpacing = 5;
+                diagram.AxisY.VisualRange.SetMinMaxValues(0, maxValue * 10);
             }
-            else if (distanceMax <= 1000)
+            else if (headMax <= 3000)
             {
+                var maxValue = Math.Ceiling(headMax / 100);
                 diagram.AxisY.WholeRange.MinValue = 0;
-                diagram.AxisY.WholeRange.MaxValue = 1000;
+                diagram.AxisY.WholeRange.MaxValue = maxValue * 100;
+                diagram.AxisY.NumericScaleOptions.GridSpacing = 50;
+                diagram.AxisY.VisualRange.SetMinMaxValues(0, maxValue * 100);
+            }
+            else if (headMax <= 6000)
+            {
+                var maxValue = Math.Ceiling(headMax / 1000);
+                diagram.AxisY.WholeRange.MinValue = 0;
+                diagram.AxisY.WholeRange.MaxValue = maxValue * 1000;
                 diagram.AxisY.NumericScaleOptions.GridSpacing = 100;
-                diagram.AxisY.VisualRange.SetMinMaxValues(0, 1000);
-            }
-            else if (distanceMax <= 10000)
-            {
-                diagram.AxisY.WholeRange.MinValue = 0;
-                diagram.AxisY.WholeRange.MaxValue = 10000;
-                diagram.AxisY.NumericScaleOptions.GridSpacing = 1000;
-                diagram.AxisY.VisualRange.SetMinMaxValues(0, 10000);
+                diagram.AxisY.VisualRange.SetMinMaxValues(0, maxValue * 1000);
             }
             else
             {
 
             }
 
+            #endregion
+
+            #region 鏍囬珮y杞�
+
             var allElevs = allNodeLossList.Select(x => x.Elev).ToList();
             var elevMax = allElevs.Max();
             diagram.SecondaryAxesY[0].Tickmarks.MinorVisible = false;
             diagram.SecondaryAxesY[0].WholeRange.SideMarginsValue = 0;
-            if (elevMax <= 30)
+            if (elevMax <= 10)
             {
                 diagram.SecondaryAxesY[0].WholeRange.MinValue = 0;
-                diagram.SecondaryAxesY[0].WholeRange.MaxValue = 100;
-                diagram.SecondaryAxesY[0].NumericScaleOptions.GridSpacing = 10;
-                diagram.SecondaryAxesY[0].VisualRange.SetMinMaxValues(0, 100);
+                diagram.SecondaryAxesY[0].WholeRange.MaxValue = 50;
+                diagram.SecondaryAxesY[0].NumericScaleOptions.GridSpacing = 5;
+                diagram.SecondaryAxesY[0].VisualRange.SetMinMaxValues(0, 50);
             }
-            else if (distanceMax <= 300)
+            else if (elevMax <= 100)
             {
                 diagram.SecondaryAxesY[0].WholeRange.MinValue = 0;
                 diagram.SecondaryAxesY[0].WholeRange.MaxValue = 1000;
-                diagram.SecondaryAxesY[0].NumericScaleOptions.GridSpacing = 100;
+                diagram.SecondaryAxesY[0].NumericScaleOptions.GridSpacing = 50;
                 diagram.SecondaryAxesY[0].VisualRange.SetMinMaxValues(0, 1000);
             }
-            else if (distanceMax <= 3000)
+            else if (distanceMax <= 500)
+            {
+                diagram.SecondaryAxesY[0].WholeRange.MinValue = 0;
+                diagram.SecondaryAxesY[0].WholeRange.MaxValue = 5000;
+                diagram.SecondaryAxesY[0].NumericScaleOptions.GridSpacing = 100;
+                diagram.SecondaryAxesY[0].VisualRange.SetMinMaxValues(0, 5000);
+            }
+            else if (distanceMax <= 1000)
             {
                 diagram.SecondaryAxesY[0].WholeRange.MinValue = 0;
                 diagram.SecondaryAxesY[0].WholeRange.MaxValue = 10000;
-                diagram.SecondaryAxesY[0].NumericScaleOptions.GridSpacing = 1000;
+                diagram.SecondaryAxesY[0].NumericScaleOptions.GridSpacing = 500;
                 diagram.SecondaryAxesY[0].VisualRange.SetMinMaxValues(0, 10000);
             }
             else
             {
 
             }
+            #endregion
 
 
         }

--
Gitblit v1.9.3