From 7b4b2eb7dd57c29a4b3a75de8234ff9afcbe18d4 Mon Sep 17 00:00:00 2001 From: Shuxia Ning <NingShuxia0927@outlook.com> Date: 星期三, 08 一月 2025 15:13:33 +0800 Subject: [PATCH] 水力业务图表 根据运行点延长 --- WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/04-special/03-run-view/PumpRunViewChart.cs | 77 +++++++++++++++++++++++++++++++++++--- 1 files changed, 71 insertions(+), 6 deletions(-) diff --git a/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/04-special/03-run-view/PumpRunViewChart.cs b/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/04-special/03-run-view/PumpRunViewChart.cs index 11bf637..11466e8 100644 --- a/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/04-special/03-run-view/PumpRunViewChart.cs +++ b/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/04-special/03-run-view/PumpRunViewChart.cs @@ -380,12 +380,13 @@ } if (_vm.Items != null && _vm.Items.Any()) - { - + { foreach (var vm in _vm.Items) { + var qh_pt_list = vm.CurveQH.GetPointList(_feat_type_qh); + var max_ratio = vm.Q / qh_pt_list.Max(x => x.X) * 1.05; { - var qh_pt_list = vm.CurveQH.GetPointList(_feat_type_qh); + qh_pt_list = qh_pt_list.GetExpandPointList(_feat_type_qh, 1, max_ratio); var xxx = qh_pt_list.Select(x => x.X); var yyy = qh_pt_list.Select(x => x.Y); @@ -398,13 +399,15 @@ if (vm.CurveQE != null) { - var yyy = _vm.CurveQE.GetYList(_feat_type_qe); + var qe_pt_list = vm.CurveQE.GetExpandPointList(_feat_type_qe, 1, max_ratio); + 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.GetYList(_feat_type_qp); + var qp_pt_list = vm.CurveQP.GetExpandPointList(_feat_type_qp, 1, max_ratio); + 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()); } @@ -565,9 +568,39 @@ for (int i = 0; i < _vm.Items.Count; i++) { var vm = _vm.Items[i]; - Yw.Geometry.Point2d run_pt = new Geometry.Point2d(vm.Q, vm.H); + var qh = vm.CurveQH.GetFeatCurve(_feat_type_qh); + if (qh.IsInvalid()) + continue; + var max_pt = qh.GetPointList().LastOrDefault(); + Yw.Geometry.Point2d run_pt = new Geometry.Point2d(vm.Q, vm.H); CreateCurrentLineSeries(vm.Id, vm.Color, vm.CurveName, vm.CurveQH, vm.CurveQE, vm.CurveQP, run_pt); + + + if (max_pt.X < vm.Q) + { + var max_ratio = vm.Q / max_pt.X * 1.05; + var qh_pt_ex_list = qh.GetPointListByXRatioRange(1, max_ratio, 100); + qh_pt_ex_list = qh_pt_ex_list.Where(x => x.X >= max_pt.X).ToList(); + qh_pt_ex_list.Add(max_pt); + CreateLineSeries(vm.Id + "qh", vm.Color, qh_pt_ex_list, _default_pane, _axis_y_head, DashStyle.Dot); + + if (vm.CurveQE != null && vm.CurveQE.Any() && _qe_visible) + { + var qe = vm.CurveQE.GetFeatCurve(_feat_type_qe); + var qe_pt_ex_list = vm.CurveQE.GetExpandPointList(_feat_type_qe, 1, max_ratio, 100); + qe_pt_ex_list = qe_pt_ex_list.Where(x => x.X >= max_pt.X * 0.8).ToList(); + CreateLineSeries(vm.Id + "qe", vm.Color, qe_pt_ex_list, _default_pane, _axis_y_eff, DashStyle.Dot); + } + + if (vm.CurveQP != null && vm.CurveQP.Any() && _qp_visible) + { + var qp = vm.CurveQP.GetFeatCurve(_feat_type_qp); + var qp_pt_ex_list = vm.CurveQP.GetExpandPointList(_feat_type_qp, 1, max_ratio, 100); + qp_pt_ex_list = qp_pt_ex_list.Where(x => x.X >= max_pt.X * 0.8).ToList(); + CreateLineSeries(vm.Id + "qp", vm.Color, qp_pt_ex_list, _bottom_pane, _axis_y_power, DashStyle.Dot); + } + } } } } @@ -861,6 +894,38 @@ } + /// <summary> + /// 鍒涘缓绾跨郴鍒� + /// </summary> + private void CreateLineSeries(string id, Color color, List<Yw.Geometry.Point2d> pt_list, XYDiagramPaneBase pane, AxisYBase axiy, DashStyle dash = DashStyle.Solid) + { + var series = new DevExpress.XtraCharts.Series(); + series.ArgumentScaleType = DevExpress.XtraCharts.ScaleType.Numerical; + series.LabelsVisibility = DevExpress.Utils.DefaultBoolean.False; + series.Name = id; + series.ShowInLegend = false; + series.CrosshairEnabled = DefaultBoolean.False; + + var series_view = new DevExpress.XtraCharts.LineSeriesView(); + series_view.LineStyle.Thickness = 2; + series_view.Color = color; + series_view.EnableAntialiasing = DefaultBoolean.True; + series_view.LineStyle.DashStyle = dash; + series_view.Pane = pane; + series_view.AxisY = axiy; + + series.SeriesPointsSorting = SortingMode.None; + series.SeriesPointsSortingKey = SeriesPointKey.Value_1; + series.View = series_view; + series.Visible = true; + + for (int i = 0; i < pt_list.Count; i++) + { + series.Points.Add(new SeriesPoint(pt_list[i].X, new double[] { pt_list[i].Y })); + } + this.chartControl1.Series.Add(series); + } + #endregion -- Gitblit v1.9.3