duheng
2024-12-04 3886a51f03ec14650e5b7127539104ad40e496da
WinFrmUI/Yw.WinFrmUI.Hydro.Core/18-loss/01-curve/HydroSingleWorkingLossCurveCtrl.cs
@@ -14,6 +14,7 @@
using Yw.Hydro;
using Yw.EPAnet;
using DevExpress.Mvvm.POCO;
using DevExpress.Utils;
namespace Yw.WinFrmUI
{
@@ -38,6 +39,7 @@
            {
                return;
            }
            var allVisualDict = hydroInfo.GetVisualDict();
            var network = hydroInfo.ToNetwork();
            if (network == null)
            {
@@ -48,12 +50,17 @@
            {
                return;
            }
            var epaCalcuResult = network.Calcu(Yw.EPAnet.CalcuMode.MinorLoss);
            var allPathList = network.AnalyzeDownstreamPath(node, epaCalcuResult);
            var allEpaLossList = network.GetChartNodeByPathLinks(allPathList, epaCalcuResult);
            var lossNode = allEpaLossList.Where(x => x.Head > 45.417 && x.Head < 45.418).First();
            var nextLossNode = allEpaLossList.Where(x => x.Head > 41.065 && x.Head < 41.066).First();
            var allNodeLossList = allEpaLossList?.Select(x => new HydroNodeLossViewModel(x)).ToList();
            var allPathList = network.AnalyzeDownstreamPath(node, calcuResult.EPAnetCalcuResult);
            var allEpaLossList = network.GetChartNodeByPathLinks(allPathList, calcuResult.EPAnetCalcuResult);
            var allNodeLossList = new List<HydroNodeLossViewModel>();
            allEpaLossList?.ForEach(x =>
            {
                var visualNode = allVisualDict?.GetValue(x.Id);
                if (visualNode != null)
                {
                    allNodeLossList.Add(new HydroNodeLossViewModel(x, visualNode));
                }
            });
            SetBindingData(allNodeLossList);
        }
@@ -63,13 +70,13 @@
        public void SetBindingData(List<HydroNodeLossViewModel> allNodeLossList)
        {
            AutoFitAxises(allNodeLossList);
            var allElevList = allNodeLossList?.Select(x => new HydroLossCurvePointVieModel(x.Distance, x.Elev)).ToList();
            var allElevList = allNodeLossList?.Select(x => new HydroLossCurvePointVieModel(x.Code, x.Name, x.Distance, x.Elev)).ToList();
            this.elevBindingSource.DataSource = allElevList;
            var allLossList = new List<HydroLossCurvePointVieModel>();
            allNodeLossList?.ForEach(x =>
            {
                allLossList.Add(new HydroLossCurvePointVieModel(x.Distance, x.StartHead));
                allLossList.Add(new HydroLossCurvePointVieModel(x.Distance, x.EndHead));
                allLossList.Add(new HydroLossCurvePointVieModel(x.Code, x.Name, x.Distance, x.StartHead));
                allLossList.Add(new HydroLossCurvePointVieModel(x.Code, x.Name, x.Distance, x.EndHead));
            });
            this.lossBindingSource.DataSource = allLossList;
        }
@@ -232,7 +239,23 @@
        }
        //提示
        private void toolTipController1_GetActiveObjectInfo(object sender, DevExpress.Utils.ToolTipControllerGetActiveObjectInfoEventArgs e)
        {
            if (e.SelectedControl == this.chartControl1)
            {
                ChartHitInfo hitInfo = this.chartControl1.CalcHitInfo(e.ControlMousePosition);
                if (hitInfo.SeriesPoint != null)
                {
                    var vm = hitInfo.SeriesPoint.Tag as HydroLossCurvePointVieModel;
                    if (vm != null)
                    {
                        e.Info = new ToolTipControlInfo(hitInfo.SeriesPoint, $"{vm.Name}:{vm.Y}");
                        return;
                    }
                }
                e.Info = null;
            }
        }
    }
}