From bfd1b73be85fd66ee37031eadcd4d09e7dafb52f Mon Sep 17 00:00:00 2001 From: lixiaojun <1287241240@qq.com> Date: 星期四, 13 二月 2025 18:51:40 +0800 Subject: [PATCH] 开始增加构件分组功能 --- WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/11-pump/01-parallel/SimulationPumpParallelCtrl.cs | 172 ++++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 158 insertions(+), 14 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..c2ab351 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 @@ -1,14 +1,6 @@ -锘縰sing DevExpress.PivotGrid.PivotTable; -using DevExpress.XtraEditors; -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Windows.Forms; +锘縰sing System.Data; +using Yw.Pump; +using Yw.WinFrmUI.Phart; namespace HStation.WinFrmUI { @@ -19,12 +11,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 +33,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 +67,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; + vm.RatedH = item.Vmo.RatedH; + vm.RatedP = item.Vmo.RatedP; + vm.RatedN = item.Vmo.RatedN; + 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 = qh_pts; + var qh_current_pts = qh_pts.GetQHPointListByN(item.Vmo.RatedHz, item.Hz); + vm.CurrentCurveQH = qh_current_pts; + if (item.Extend > 100) + { + vm.CurrentExtendFlow = vm.CurrentCurveQH.Max(x => x.X); + extend = item.Extend / 100; + var qh_current_extend_pts = vm.CurrentCurveQH.GetExpandPointList(Yw.Ahart.eFeatType.Cubic, 1, extend, 20); + vm.CurrentCurveQH = qh_current_extend_pts; + } + } + } + + var curveqp = item.HydroInfo.Curves?.Find(x => x.Code == item.Vmo.CurveQP); + if (curveqp != null) + { + var qp_pts = curveqp.CurveData?.Select(x => new Yw.Geometry.Point2d(x.X, x.Y)).ToList(); + if (qp_pts != null && qp_pts.Count > 3) + { + vm.CurveQP = qp_pts; + var qp_current_pts = qp_pts.GetQPPointListByN(item.Vmo.RatedHz, item.Hz); + vm.CurrentCurveQP = qp_current_pts; + if (extend > 1) + { + var qp_current_extend_pts = vm.CurrentCurveQP.GetExpandPointList(Yw.Ahart.eFeatType.Cubic, 1, extend, 20); + vm.CurrentCurveQP = qp_current_extend_pts; + } + } + } + + var curveqe = item.HydroInfo.Curves?.Find(x => x.Code == item.Vmo.CurveQE); + if (curveqe != null) + { + var qe_pts = curveqe.CurveData?.Select(x => new Yw.Geometry.Point2d(x.X, x.Y)).ToList(); + if (qe_pts != null && qe_pts.Count > 3) + { + vm.CurveQE = qe_pts; + var qe_current_pts = qe_pts.GetQEPointListByN(item.Vmo.RatedHz, item.Hz); + vm.CurrentCurveQE = qe_current_pts; + if (extend > 1) + { + var qe_current_extend_pts = vm.CurrentCurveQE.GetExpandPointList(Yw.Ahart.eFeatType.Cubic, 1, extend, 20); + vm.CurrentCurveQE = 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