From aabff7f27021a23a433d50a74daba4f3888f82d5 Mon Sep 17 00:00:00 2001 From: lixiaojun <1287241240@qq.com> Date: 星期二, 10 十二月 2024 20:43:30 +0800 Subject: [PATCH] 优化工况问题 --- WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/11-pump/01-parallel/SimulationPumpParallelCtrl.cs | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 158 insertions(+), 3 deletions(-) diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/11-pump/01-parallel/SimulationPumpParallelCtrl.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/11-pump/01-parallel/SimulationPumpParallelCtrl.cs index b7b9ffa..9115df9 100644 --- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/11-pump/01-parallel/SimulationPumpParallelCtrl.cs +++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/11-pump/01-parallel/SimulationPumpParallelCtrl.cs @@ -9,6 +9,9 @@ using System.Text; using System.Threading.Tasks; using System.Windows.Forms; +using Yw.Geometry; +using Yw.Pump; +using Yw.WinFrmUI.Phart; namespace HStation.WinFrmUI { @@ -19,12 +22,21 @@ InitializeComponent(); this.layoutControl1.SetupLayoutControl(); this.hydroPumpListExtendGridCtrl1.StateChangedEvent += HydroPumpListExtendGridCtrl1_StateChangedEvent; + this.pumpParallelChart1.DesignPointChangedEvent += PumpParallelChart1_DesignPointChangedEvent; + this.pumpParallelChart1.QueryPointChangedEvent += PumpParallelChart1_QueryPointChangedEvent; + this.pumpParallelChart1.ParallelStatusChangedEvent += PumpParallelChart1_ParallelStatusChangedEvent; } + /// <summary> /// 淇濆瓨浜嬩欢 /// </summary> public event Action<List<SimulationPumpParallelSaveItemViewModel>> SaveEvent; + /// <summary> + /// 骞惰仈鐘舵�佹敼鍙樹簨浠� + /// </summary> + public event Action<bool, string> ParallelStatusChangedEvent; + /// <summary> /// 缁戝畾鍒楄〃 @@ -32,18 +44,22 @@ public void SetBindingData(Yw.Model.HydroModelInfo hydroInfo) { this.hydroPumpListExtendGridCtrl1.SetBindingData(hydroInfo); + var allStateList = this.hydroPumpListExtendGridCtrl1.GetStateList(); + var allVmList = CreateParallelViewModels(allStateList); + this.pumpParallelChart1.SetBindingData(allVmList); } //鐘舵�佹敼鍙樹簨浠� - private void HydroPumpListExtendGridCtrl1_StateChangedEvent(List<HydroPumpListItemExtendViewModel> allPumpStateList) + private void HydroPumpListExtendGridCtrl1_StateChangedEvent(List<HydroPumpListItemExtendViewModel> allStateList) { - + var allVmList = CreateParallelViewModels(allStateList); + this.pumpParallelChart1.SetBindingData(allVmList); } //淇濆瓨 private void btnSave_Click(object sender, EventArgs e) { - var result = XtraMessageBox.Show("鏄惁灏嗙幇鏈夋按娉电姸鎬佹洿鏂版ā鍨嬶紵", "璇㈤棶", MessageBoxButtons.YesNo) == DialogResult.Yes; + var result = XtraMessageBox.Show("鏄惁浣跨敤鐜版湁姘存车鐘舵�佹洿鏂版ā鍨嬶紵", "璇㈤棶", MessageBoxButtons.YesNo) == DialogResult.Yes; if (!result) { return; @@ -62,6 +78,145 @@ this.SaveEvent?.Invoke(allSaveList); } + //鍒涘缓 + private List<PumpParallelViewModel> CreateParallelViewModels(List<HydroPumpListItemExtendViewModel> allStateList) + { + var allRunList = allStateList?.Where(x => x.RunStatus).ToList(); + if (allRunList == null || allRunList.Count < 1) + { + return default; + } + var vmList = new List<PumpParallelViewModel>(); + foreach (var item in allRunList) + { + var vm = new PumpParallelViewModel(); + vm.Id = item.Code; + vm.Name = item.Name; + vm.RatedQ = item.Vmo.RatedQ.HasValue ? item.Vmo.RatedQ.Value : 0; + vm.RatedH = item.Vmo.RatedH.HasValue ? item.Vmo.RatedH.Value : 0; + vm.RatedP = item.Vmo.RatedP; + vm.RatedN = item.Vmo.RatedN.HasValue ? item.Vmo.RatedN.Value : 0; + vm.RatedHz = item.Vmo.RatedHz; + vm.CurrentHz = item.Hz; + vm.CurrentN = Math.Round(item.Hz / item.Vmo.RatedHz * vm.RatedN, 1); + vm.CurrentColor = item.Color; + + double extend = 1; + + var curveqh = item.HydroInfo.Curves?.Find(x => x.Code == item.Vmo.CurveQH); + if (curveqh != null) + { + var qh_pts = curveqh.CurveData?.Select(x => new Yw.Geometry.Point2d(x.X, x.Y)).ToList(); + if (qh_pts != null && qh_pts.Count > 3) + { + vm.CurveQH = new CubicSpline2d(qh_pts); + var qh_current_pts = qh_pts.GetQHPointListByN(item.Vmo.RatedHz, item.Hz); + vm.CurrentCurveQH = new CubicSpline2d(qh_current_pts); + if (item.Extend > 100) + { + vm.CurrentExtendFlow = vm.CurrentCurveQH.MaxX; + extend = item.Extend / 100; + var qh_current_extend_pts = vm.CurrentCurveQH.GetPointListByXRatioRange(1, extend, 20); + vm.CurrentCurveQH = new CubicSpline2d(qh_current_extend_pts); + } + } + } + + var curveqp = item.HydroInfo.Curves?.Find(x => x.Code == item.Vmo.CurveQP); + if (curveqp != null) + { + var qppts = curveqp.CurveData?.Select(x => new Yw.Geometry.Point2d(x.X, x.Y)).ToList(); + if (qppts != null && qppts.Count > 3) + { + vm.CurveQP = new CubicSpline2d(qppts); + var sqppts = qppts.GetQHPointListByN(item.Vmo.RatedHz, item.Hz); + vm.CurrentCurveQP = new CubicSpline2d(sqppts); + if (extend > 1) + { + var qp_current_extend_pts = vm.CurrentCurveQP.GetPointListByXRatioRange(1, extend, 20); + vm.CurrentCurveQP = new CubicSpline2d(qp_current_extend_pts); + } + } + } + + var curveqe = item.HydroInfo.Curves?.Find(x => x.Code == item.Vmo.CurveQE); + if (curveqe != null) + { + var qepts = curveqe.CurveData?.Select(x => new Yw.Geometry.Point2d(x.X, x.Y)).ToList(); + if (qepts != null && qepts.Count > 3) + { + vm.CurveQE = new CubicSpline2d(qepts); + var sqepts = qepts.GetQHPointListByN(item.Vmo.RatedHz, item.Hz); + vm.CurrentCurveQE = new CubicSpline2d(sqepts); + if (extend > 1) + { + var qe_current_extend_pts = vm.CurrentCurveQE.GetPointListByXRatioRange(1, extend, 20); + vm.CurrentCurveQE = new CubicSpline2d(qe_current_extend_pts); + } + } + } + + vmList.Add(vm); + } + + return vmList; + } + + //璁捐鐐规敼鍙� + private void PumpParallelChart1_DesignPointChangedEvent(List<PumpDesignPointViewModel> obj) + { + var vmList = obj?.Select(x => new HydroPumpDesignPointViewModel() + { + Code = x.Id, + Name = x.Name, + DesignQ = Math.Round(x.Q, 1), + DesignH = Math.Round(x.H, 2), + DesignP = x.P.HasValue ? Math.Round(x.P.Value, 1) : null, + DesignE = x.E.HasValue ? Math.Round(x.E.Value, 1) : null, + }).ToList(); + this.hydroPumpDesignPointListGridCtrl1.SetBindingData(vmList); + } + + //鏌ヨ鐐规敼鍙� + private void PumpParallelChart1_QueryPointChangedEvent(List<PumpQueryPointViewModel> obj) + { + var vmList = obj?.Select(x => new HydroPumpQueryPointViewModel() + { + Code = x.Id, + Name = x.Name, + QueryQ = Math.Round(x.Q, 1), + QueryH = Math.Round(x.H, 2), + QueryP = x.P.HasValue ? Math.Round(x.P.Value, 1) : null, + QueryE = x.E.HasValue ? Math.Round(x.E.Value, 1) : null, + }).ToList(); + this.hydroPumpQueryPointListGridCtrl1.SetBindingData(vmList); + } + + //骞惰仈鐘舵�佹敼鍙樹簨浠� + private void PumpParallelChart1_ParallelStatusChangedEvent(bool status, string msg) + { + this.ParallelStatusChangedEvent?.Invoke(status, msg); + } + + //璁捐鐐� + private void btnDesign_Click(object sender, EventArgs e) + { + var qtext = this.txtDesignQ.Text.Trim(); + if (string.IsNullOrEmpty(qtext)) + { + TipFormHelper.ShowWarn("璇疯緭鍏ヨ璁$偣娴侀噺锛�"); + return; + } + var htext = this.txtDesignH.Text.Trim(); + if (string.IsNullOrEmpty(htext)) + { + TipFormHelper.ShowWarn("璇疯緭鍏ヨ璁$偣鎵▼锛�"); + return; + } + var q = double.Parse(qtext); + var h = double.Parse(htext); + this.pumpParallelChart1.SetDesignPoint(q, h); + } } } -- Gitblit v1.9.3