From 1dd0b6e81d70ac0968fbd4fb1f37c482234afc4c Mon Sep 17 00:00:00 2001 From: lixiaojun <1287241240@qq.com> Date: 星期一, 28 十月 2024 12:09:22 +0800 Subject: [PATCH] 流量计、压力表计算结果优化 --- WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.cs | 274 ++++++++++++++++++++++++++++++++++++++++-------------- 1 files changed, 203 insertions(+), 71 deletions(-) diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.cs index 6d27250..217d09e 100644 --- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.cs +++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.cs @@ -618,25 +618,111 @@ //闂峰ご this.barBtnSetBluntheadList.ItemClick += delegate { + if (_hydroInfo == null) + { + return; + } var dlg = new HydroBluntheadBulkSetListDlg(); dlg.ShowDialog(); }; //寮ご this.barBtnSetElbowsList.ItemClick += delegate { + if (_hydroInfo == null) + { + return; + } var dlg = new HydroElbowBulkSetListDlg(); + dlg.SetBindingData(_hydroInfo); dlg.ShowDialog(); }; //涓夐�� this.barBtnSetThreelinkList.ItemClick += delegate { + if (_hydroInfo == null) + { + return; + } var dlg = new HydroThreelinkBulkSetListDlg(); + dlg.SetBindingData(_hydroInfo); dlg.ShowDialog(); }; //鍥涢�� this.barBtnSetFourlinkList.ItemClick += delegate { - + if (_hydroInfo == null) + { + return; + } + var dlg = new HydroFourlinkBulkSetListDlg(); + dlg.SetBindingData(_hydroInfo); + dlg.ShowDialog(); + }; + //姘磋〃 + this.barBtnSetMeterList.ItemClick += delegate + { + if (_hydroInfo == null) + { + return; + } + var dlg = new HydroMeterBulkSetListDlg(); + dlg.SetBindingData(_hydroInfo); + dlg.ShowDialog(); + }; + //娴侀噺璁� + this.barBtnSetFlowmeterList.ItemClick += delegate + { + if (_hydroInfo == null) + { + return; + } + var dlg = new HydroFlowmeterBulkSetListDlg(); + dlg.SetBindingData(_hydroInfo); + dlg.ShowDialog(); + }; + //鍘嬪姏琛� + this.barBtnSetPressmeterList.ItemClick += delegate + { + if (_hydroInfo == null) + { + return; + } + var dlg = new HydroPressmeterBulkSetListDlg(); + dlg.SetBindingData(_hydroInfo); + dlg.ShowDialog(); + }; + //绠¢亾 + this.barBtnSetPipeList.ItemClick += delegate + { + if (_hydroInfo == null) + { + return; + } + var dlg = new HydroPipeBulkSetListDlg(); + dlg.SetBindingData(_hydroInfo); + dlg.ShowDialog(); + }; + //姘存车 + this.barBtnSetPumpList.ItemClick += delegate + { + if (_hydroInfo == null) + { + return; + } + var dlg = new HydroPumpBulkSetListDlg(); + dlg.SetBindingData(_hydroInfo); + dlg.ShowDialog(); + }; + //闃�闂� + this.barBtnSetValveList.ItemClick += delegate + { + if (_hydroInfo == null) + { + return; + } + var dlg = new HydroValveBulkSetListDlg(); + dlg.SetBindingData(_hydroInfo); + dlg.ShowDialog(); }; } @@ -1049,11 +1135,11 @@ #region 璁$畻缁撴灉 //鎵�鏈夎绠楃粨鏋滃垪琛� - private List<IHydroCalcuResult> _allCalcuResultList = null; + private List<HydroCalcuResult> _allCalcuResultList = null; //鑾峰彇璁$畻缁撴灉 //true 浣跨敤缂撳瓨锛宖alse 涓嶄娇鐢ㄧ紦瀛� - private List<IHydroCalcuResult> GetAllCalcuResultList(bool isCache = true) + private List<HydroCalcuResult> GetAllCalcuResultList(bool isCache = true) { if (_hydroInfo == null) { @@ -1072,97 +1158,143 @@ return _allCalcuResultList; } - _allCalcuResultList = new List<IHydroCalcuResult>(); + _allCalcuResultList = new List<HydroCalcuResult>(); + + //鑺傜偣 var allNodeList = _hydroInfo.GetAllNodes(); if (allNodeList != null && allNodeList.Count > 0) { - var allCalcuNodeList = _calcuResult.NodeList; - if (allCalcuNodeList != null && allCalcuNodeList.Count > 0) + foreach (var node in allNodeList) { - foreach (var node in allNodeList) + var calcuNode = _calcuResult.NodeList?.Find(x => x.Id == node.Code); + if (calcuNode != null) { - var calcuNode = allCalcuNodeList.Find(x => x.Id == node.Code); - if (calcuNode != null) + var calcuResult = new HydroCalcuNodeResult() { - var calcuResult = new HydroCalcuNodeResult() - { - Code = node.Code, - CalcuPress = calcuNode.Press, - CalcuHead = calcuNode.Head, - CalcuDemand = calcuNode.Demand - }; - _allCalcuResultList.Add(calcuResult); - } + Code = node.Code, + CalcuPress = calcuNode.Press, + CalcuHead = calcuNode.Head, + CalcuDemand = calcuNode.Demand + }; + _allCalcuResultList.Add(calcuResult); } } } + //绠℃ var allLinkList = _hydroInfo.GetAllLinks(); if (allLinkList != null && allLinkList.Count > 0) { - var allCalcuLinkList = _calcuResult.LinkList; - if (allCalcuLinkList != null && allCalcuLinkList.Count > 0) + foreach (var link in allLinkList) { - foreach (var link in allLinkList) + var calcuLink = _calcuResult.LinkList?.Find(x => x.Id == link.Code); + if (calcuLink != null) { - var calcuLink = allCalcuLinkList.Find(x => x.Id == link.Code); - if (calcuLink != null) + var calcuResult = new HydroCalcuLinkResult() { - if (link is Yw.Model.HydroPumpInfo pump) - { - var calcuResult = new HydroCalcuPumpResult() - { - Code = link.Code, - CalcuFlow = calcuLink.Flow, - CalcuVelocity = calcuLink.Velocity, - CalcuHeadLoss = calcuLink.Headloss, - CalcuQ = calcuLink.Flow - }; - if (calcuResult.CalcuQ > 0) - { - var startCalcuNode = _calcuResult.NodeList?.Find(x => x.Id == link.StartCode); - var endCalcuNode = _calcuResult.NodeList?.Find(x => x.Id == link.EndCode); - if (startCalcuNode != null && endCalcuNode != null) - { - calcuResult.CalcuH = Math.Abs(startCalcuNode.Press - endCalcuNode.Press); - } + Code = link.Code, + CalcuFlow = calcuLink.Flow, + CalcuVelocity = calcuLink.Velocity, + CalcuHeadLoss = calcuLink.Headloss + }; + _allCalcuResultList.Add(calcuResult); + } + } + } - if (pump.RatedN.HasValue) + //娴侀噺璁� + var allFlowmeterList = _hydroInfo.Flowmeters; + if (allFlowmeterList != null && allFlowmeterList.Count > 0) + { + foreach (var flowmeter in allFlowmeterList) + { + var calcuFlowmeterResult = _allCalcuResultList.Find(x => x.Code == flowmeter.Code) as HydroCalcuNodeResult; + if (calcuFlowmeterResult != null) + { + var calcuFlowmeterNewResult = new HydroCalcuFlowmeterResult(calcuFlowmeterResult); + var calcuFlowmeterLinkResultList = new List<HydroCalcuLinkResult>(); + var flowmeterLinkList = allLinkList?.Where(x => x.StartCode == flowmeter.Code || x.EndCode == flowmeter.Code).ToList(); + if (flowmeterLinkList != null && flowmeterLinkList.Count > 0) + { + foreach (var flowmeterLink in flowmeterLinkList) + { + var calcuFlowmeterLinkResult = _allCalcuResultList.Find(x => x.Code == flowmeterLink.Code) as HydroCalcuLinkResult; + if (calcuFlowmeterLinkResult != null) + { + calcuFlowmeterLinkResultList.Add(calcuFlowmeterLinkResult); + } + } + } + if (calcuFlowmeterLinkResultList.Exists(x => x.CalcuFlow.HasValue)) + { + calcuFlowmeterNewResult.CalcuQ = calcuFlowmeterLinkResultList.Where(x => x.CalcuFlow.HasValue).Average(x => x.CalcuFlow.Value); + } + _allCalcuResultList.Remove(calcuFlowmeterResult); + _allCalcuResultList.Add(calcuFlowmeterNewResult); + } + } + } + + //鍘嬪姏琛� + var allPressmeterList = _hydroInfo.Pressmeters; + if (allPressmeterList != null && allPressmeterList.Count > 0) + { + foreach (var pressmeter in allPressmeterList) + { + var calcuPressmeterResult = _allCalcuResultList.Find(x => x.Code == pressmeter.Code) as HydroCalcuNodeResult; + if (calcuPressmeterResult != null) + { + var calcuPressmeterNewResult = new HydroCalcuPressmeterResult(calcuPressmeterResult); + calcuPressmeterNewResult.CalcuPr = calcuPressmeterResult.CalcuPress; + _allCalcuResultList.Remove(calcuPressmeterResult); + _allCalcuResultList.Add(calcuPressmeterNewResult); + } + } + } + + //姘存车 + var allPumpList = _hydroInfo.Pumps; + if (allPumpList != null && allPumpList.Count > 0) + { + foreach (var pump in allPumpList) + { + var calcuPumpResult = _allCalcuResultList.Find(x => x.Code == pump.Code) as HydroCalcuLinkResult; + if (calcuPumpResult != null) + { + var calcuPumpNewResult = new HydroCalcuPumpResult(calcuPumpResult); + calcuPumpNewResult.CalcuQ = calcuPumpResult.CalcuFlow; + if (calcuPumpNewResult.CalcuQ.HasValue) + { + var calcuNodeStartResult = _allCalcuResultList.Find(x => x.Code == pump.StartCode) as HydroCalcuNodeResult; + var calcuNodeEndResult = _allCalcuResultList.Find(x => x.Code == pump.EndCode) as HydroCalcuNodeResult; + if (calcuNodeStartResult != null && calcuNodeEndResult != null) + { + if (calcuNodeStartResult.CalcuPress.HasValue && calcuNodeEndResult.CalcuPress.HasValue) + { + calcuPumpNewResult.CalcuH = Math.Abs(calcuNodeStartResult.CalcuPress.Value - calcuNodeEndResult.CalcuPress.Value); + } + if (pump.RatedN.HasValue) + { + var curveqp = _hydroInfo.Curves?.Find(x => x.Code == pump.CurveQP); + if (curveqp != null) { - var curveqp = _hydroInfo.Curves?.Find(x => x.Code == pump.CurveQP); - if (curveqp != null) + if (curveqp.CurveData != null && curveqp.CurveData.Count > 3) { - if (curveqp.CurveData != null && curveqp.CurveData.Count > 3) - { - var point2dList = curveqp.CurveData.Select(x => new Yw.Geometry.Point2d(x.X, x.Y)).ToList(); - var point2dSimularList = point2dList.GetQPPointListByN(pump.RatedN.Value, pump.RatedN.Value * pump.SpeedRatio); - var pumpCurveQp = new Yw.Pump.CurveQP(eFeatType.Cubic, point2dSimularList); - calcuResult.CalcuP = pumpCurveQp.FeatCurve.GetPointY(calcuResult.CalcuQ.Value); - } + var point2dList = curveqp.CurveData.Select(x => new Yw.Geometry.Point2d(x.X, x.Y)).ToList(); + var point2dSimularList = point2dList.GetQPPointListByN(pump.RatedN.Value, pump.RatedN.Value * pump.SpeedRatio); + var pumpCurveQp = new Yw.Pump.CurveQP(eFeatType.Cubic, point2dSimularList); + calcuPumpNewResult.CalcuP = pumpCurveQp.FeatCurve.GetPointY(calcuPumpNewResult.CalcuQ.Value); } } - if (calcuResult.CalcuH.HasValue && calcuResult.CalcuP.HasValue) - { - calcuResult.CalcuE = Yw.Pump.CalculationHelper.CalcuE(calcuResult.CalcuQ.Value, calcuResult.CalcuH.Value, calcuResult.CalcuP.Value); - } } - - - _allCalcuResultList.Add(calcuResult); - } - else - { - var calcuResult = new HydroCalcuLinkResult() + if (calcuPumpNewResult.CalcuH.HasValue && calcuPumpNewResult.CalcuP.HasValue) { - Code = link.Code, - CalcuFlow = calcuLink.Flow, - CalcuVelocity = calcuLink.Velocity, - CalcuHeadLoss = calcuLink.Headloss - }; - _allCalcuResultList.Add(calcuResult); + calcuPumpNewResult.CalcuE = Yw.Pump.CalculationHelper.CalcuE(calcuPumpNewResult.CalcuQ.Value, calcuPumpNewResult.CalcuH.Value, calcuPumpNewResult.CalcuP.Value); + } } - } + _allCalcuResultList.Remove(calcuPumpResult); + _allCalcuResultList.Add(calcuPumpNewResult); } } } @@ -1388,12 +1520,12 @@ { _allGradingCodeList = obj?.Select(x => x.Code).Distinct().ToList(); var objGroupList = obj?.GroupBy(x => x.Color).ToList(); - objGroupList.ForEach(async x => + objGroupList?.ForEach(async x => { await _bimfaceCtrl?.OverrideComponentsColor(x.Select(t => t.Code).Distinct().ToList(), x.Key, 1); }); }; - if (dlg.ShowDialog() != DialogResult.OK) + if (dlg.ShowDialog() == DialogResult.Cancel) { await _bimfaceCtrl?.RestoreComponentsColor(_allGradingCodeList); } -- Gitblit v1.9.3