From 5fe67195f9623cc6e19354bb55b31f46055a1e2e Mon Sep 17 00:00:00 2001 From: Shuxia Ning <NingShuxia0927@outlook.com> Date: 星期一, 14 十月 2024 11:20:57 +0800 Subject: [PATCH] 变速曲线1 --- WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.cs | 229 ++++++++++++++++++++++++++++++++++++++++----------------- 1 files changed, 160 insertions(+), 69 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 5c0b8ea..68f67d0 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 @@ -1,4 +1,5 @@ 锘縢lobal using Yw.EPAnet; +using NetTaste; namespace HStation.WinFrmUI { @@ -12,8 +13,6 @@ this.docPnlBottom.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden; } - - private HStation.Vmo.XhsProjectVmo _project = null;//椤圭洰 private HStation.Vmo.XhsProjectSiteVmo _projectSite = null;//椤圭洰绔� @@ -63,61 +62,53 @@ return; } this.PageTitle.Caption = $"{_project.Name}\r\n姘村姏妯℃嫙"; - await this.xhsProjectSimulationBimfaceCtrl1.SetBindingData(_project, _projectSite, () => _hydroInfo); + var bimfaceCtrl = GetBimfaceCtrl(); + this.tabPageBimface.Controls.Clear(); + this.tabPageBimface.Controls.Add(bimfaceCtrl); + await bimfaceCtrl.InitialData(_project, _projectSite, () => _hydroInfo); this.xhsProjectSimulationQ3dCtrl1.SetBindingData(_hydroInfo); this.xhsProjectSimulationPropertyCtrl1.InitialData(() => _hydroInfo); } - #region INP瀵煎嚭 - - //瀵煎嚭姘村姏INP鏂囦欢 - private void barBtnHydroExportInp_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) - { - if (_hydroInfo == null) - { - return; - } - var fileName = Yw.WinFrmUI.FileDialogHelper.SaveInp("瀵煎嚭Inp鏂囦欢"); - if (string.IsNullOrEmpty(fileName)) - { - return; - } - var netWork = Yw.Hydro.ParseHelper.ToNetwork(_hydroInfo); - var result = netWork.ToInpString(); - File.WriteAllText(fileName, result); - TipFormHelper.ShowSucceed("瀵煎嚭鎴愬姛"); - } - - #endregion - #region Bimface - //bimface 鍔犺浇瀹屾垚浜嬩欢 - private async void xhsProjectSimulationBimfaceCtrl1_LoadCompletedEvent() + //鑾峰彇 bimface 鎺т欢 + private XhsProjectSimulationBimfaceCtrl GetBimfaceCtrl() { - if (_hydroInfo == null) + if (_bimfaceCtrl == null) { - return; + _bimfaceCtrl = new XhsProjectSimulationBimfaceCtrl(); + _bimfaceCtrl.Dock = DockStyle.Fill; + _bimfaceCtrl.LoadCompletedEvent += async () => + {//view鍔犺浇瀹屾垚浜嬩欢 + if (_hydroInfo == null) + { + return; + } + var elementIds = new List<string>(); + var pumps = _hydroInfo.Pumps?.Where(x => x.LinkStatus == Yw.Hydro.PumpStatus.Open).ToList(); + pumps?.ForEach(x => elementIds.Add(x.Code)); + var valves = _hydroInfo.Valves?.Where(x => x.LinkStatus == Yw.Hydro.ValveStatus.Open).ToList(); + valves?.ForEach(x => elementIds.Add(x.Code)); + await _bimfaceCtrl?.SetOpenComponentsColor(elementIds); + }; + _bimfaceCtrl.HydroMouseLeftClickEvent += (obj) => + {//榧犳爣宸﹂敭鐐瑰嚮浜嬩欢 + if (_hydroInfo == null) + { + return; + } + _parter = obj; + ShowProperty(); + SetBimfaceLinkColor(); + }; } - var elementIds = new List<string>(); - var pumps = _hydroInfo.Pumps?.Where(x => x.LinkStatus == Yw.Hydro.PumpStatus.Open).ToList(); - pumps?.ForEach(x => elementIds.Add(x.Code)); - var valves = _hydroInfo.Valves?.Where(x => x.LinkStatus == Yw.Hydro.ValveStatus.Open).ToList(); - valves?.ForEach(x => elementIds.Add(x.Code)); - await this.xhsProjectSimulationBimfaceCtrl1.SetOpenComponentsColor(elementIds); + return _bimfaceCtrl; } + //bimface鎺т欢 + private XhsProjectSimulationBimfaceCtrl _bimfaceCtrl = null; - //bimface 姘村姏鐐瑰嚮浜嬩欢 - private void xhsProjectSimulationBimfaceCtrl1_HydroClickEvent(Yw.Model.HydroParterInfo obj) - { - if (_hydroInfo == null) - { - return; - } - _parter = obj; - ShowProperty(); - SetBimfaceLinkColor(); - } + //璁剧疆Bimface杩炴帴棰滆壊 private async void SetBimfaceLinkColor() @@ -167,10 +158,26 @@ } } } - await this.xhsProjectSimulationBimfaceCtrl1.SetLinkComponentsColor(elementIds); + await _bimfaceCtrl?.SetLinkComponentsColor(elementIds); } - #endregion Bimface + #endregion + + #region Q3d + + //鐐瑰嚮浜嬩欢 + private void xhsProjectSimulationQ3dCtrl1_ClickParterEvent(string code) + { + if (_hydroInfo == null) + { + return; + } + var allParterList = _hydroInfo.GetAllParters(); + _parter = allParterList?.Find(x => x.Code == code); + ShowProperty(); + } + + #endregion #region 灞炴�ч潰鏉� @@ -200,7 +207,7 @@ { elementIds.Add(_parter.Code); } - await this.xhsProjectSimulationBimfaceCtrl1.ZoomAndSelectComponents(elementIds); + await _bimfaceCtrl?.ZoomAndSelectComponents(elementIds); ShowProperty(); SetBimfaceLinkColor(); }; @@ -260,14 +267,14 @@ var allParterList = _hydroInfo.GetAllParters(); _parter = allParterList?.Find(x => x.Code == parter.Code); var elementIds = new List<string>() { parter.Code }; - await this.xhsProjectSimulationBimfaceCtrl1.ZoomAndSelectComponents(elementIds); + await _bimfaceCtrl?.ZoomAndSelectComponents(elementIds); ShowProperty(); SetBimfaceLinkColor(); }; _unMatchingListCtrl.ViewModelEvent += async (parters) =>//鏌ョ湅妯″瀷 { var codes = parters?.Select(x => x.Code).Distinct().ToList(); - await this.xhsProjectSimulationBimfaceCtrl1.ZoomAndSelectComponents(codes); + await _bimfaceCtrl?.ZoomAndSelectComponents(codes); _parter = null; ShowProperty(); }; @@ -315,11 +322,11 @@ if (_fastShowHideCodeList == null) { _fastShowHideCodeList = _hydroInfo.Decorators.Select(x => x.Code).ToList(); - await this.xhsProjectSimulationBimfaceCtrl1.HideComponents(_fastShowHideCodeList); + await _bimfaceCtrl?.HideComponents(_fastShowHideCodeList); } else { - await this.xhsProjectSimulationBimfaceCtrl1.ShowComponents(_fastShowHideCodeList); + await _bimfaceCtrl?.ShowComponents(_fastShowHideCodeList); _fastShowHideCodeList = null; } } @@ -355,7 +362,7 @@ elementIds.Add(_parter.Code); } } - await this.xhsProjectSimulationBimfaceCtrl1.ZoomAndSelectComponents(elementIds); + await _bimfaceCtrl?.ZoomAndSelectComponents(elementIds); ShowProperty(); SetBimfaceLinkColor(); }; @@ -422,7 +429,7 @@ } var allParterList = _hydroInfo.GetAllParters(); _parter = allParterList?.Find(x => x.Code == parter.Code); - await this.xhsProjectSimulationBimfaceCtrl1.ZoomAndSelectComponents(new List<string>() { _parter.Code }); + await _bimfaceCtrl?.ZoomAndSelectComponents(new List<string>() { _parter.Code }); ShowProperty(); SetBimfaceLinkColor(); }; @@ -448,6 +455,28 @@ this.docPnlBottom.Height = 350; } + + #endregion + + #region INP瀵煎嚭 + + //瀵煎嚭姘村姏INP鏂囦欢 + private void barBtnHydroExportInp_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) + { + if (_hydroInfo == null) + { + return; + } + var fileName = Yw.WinFrmUI.FileDialogHelper.SaveInp("瀵煎嚭Inp鏂囦欢"); + if (string.IsNullOrEmpty(fileName)) + { + return; + } + var netWork = Yw.Hydro.ParseHelper.ToNetwork(_hydroInfo); + var result = netWork.ToInpString(); + File.WriteAllText(fileName, result); + TipFormHelper.ShowSucceed("瀵煎嚭鎴愬姛"); + } #endregion @@ -533,25 +562,48 @@ return; } var pumps = _hydroInfo.Pumps; + var curve_list = _hydroInfo.Curves; + if (curve_list == null || !curve_list.Any()) + { + return; + } var vmList = new List<Yw.WinFrmUI.Phart.PumpSerialParallelViewModel>(); foreach (var x in pumps) { + if (!x.RatedN.HasValue) + { + continue; + } + var qh = curve_list.Find(t => t.Code == x.CurveQH)?.CurveData; + var qe = curve_list.Find(t => t.Code == x.CurveQE)?.CurveData; + var qp = curve_list.Find(t => t.Code == x.CurveQP)?.CurveData; + + if (qh == null) + { + continue; + } + + var rated_speed = x.RatedN.Value; + var speed_ratio = x.SpeedRatio ?? 1; + + var qh_pt_list = qh.Select(x => new Yw.Geometry.Point2d(x.X, x.Y)).ToList(); + var qe_pt_list = qe?.Select(x => new Yw.Geometry.Point2d(x.X, x.Y)).ToList(); + var qp_pt_list = qp?.Select(x => new Yw.Geometry.Point2d(x.X, x.Y)).ToList(); + var vm = new Yw.WinFrmUI.Phart.PumpSerialParallelViewModel(); vm.Id = x.Code; vm.Name = x.Code; //vm.IsBp = ; - //vm.RatedSpeed = 590; - //vm.CurrentSpeed = 590; - //vm.CurrentHz = 50; - var PointsQH = _hydroInfo.Curves?.Find(t => t.Code == x.CurveQH)?.CurveData?.Select(z => new Yw.Geometry.Point2d() { X = z.X, Y = z.Y }).ToList(); - var PointsQP = _hydroInfo.Curves?.Find(t => t.Code == x.CurveQP)?.CurveData?.Select(z => new Yw.Geometry.Point2d { X = z.X, Y = z.Y }).ToList(); - var PointsQE = _hydroInfo.Curves?.Find(t => t.Code == x.CurveQE)?.CurveData?.Select(z => new Yw.Geometry.Point2d { X = z.X, Y = z.Y }).ToList(); + vm.RatedSpeed = rated_speed; + vm.CurrentSpeed = Math.Round(rated_speed * speed_ratio); + vm.CurrentHz = Math.Round(vm.CurrentSpeed / vm.RatedSpeed * 50, 1); - vm.Qh = new Yw.Geometry.CubicSpline2d(PointsQH); - vm.Qe = new Yw.Geometry.CubicSpline2d(PointsQE); - vm.Qp = new Yw.Geometry.CubicSpline2d(PointsQP); + vm.Qh = new Yw.Geometry.CubicSpline2d(qh_pt_list); + vm.Qe = new Yw.Geometry.CubicSpline2d(qe_pt_list); + vm.Qp = new Yw.Geometry.CubicSpline2d(qp_pt_list); vmList.Add(vm); } + var dlg = new HStation.WinFrmUI.PhartRelation.PumpSerialParallelChartDlg(); dlg.SetBindingData(vmList, null, true); dlg.ShowDialog(); @@ -579,21 +631,59 @@ { return; } + _checkResult = _hydroInfo.Check(); + if (!_checkResult.Succeed) + { + this.controlContainerBottom.Controls.Clear(); + var checkResultCtrl = GetCheckResultCtrl(); + checkResultCtrl.SetBindingData(_checkResult); + this.controlContainerBottom.Controls.Add(checkResultCtrl); + TipFormHelper.ShowWarn("鏍¢獙澶辫触锛岃妫�鏌ュ悗閲嶈瘯"); + return; + } + var netWork = Yw.Hydro.ParseHelper.ToNetwork(_hydroInfo); _calcuResult = netWork.Calcu(); if (_calcuResult.Succeed) { - this.docPnlBottom.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden; + this.controlContainerBottom.Controls.Clear(); + var parterListCtrl = GetParterListCtrl(); + var calcuResultList = new List<IHydroCalcuResult>(); + _calcuResult.NodeList?.ForEach(x => + { + calcuResultList.Add(new HydroCalcuNodeResult() + { + Code = x.Id, + CalcuPress = x.Press, + CalcuHead = x.Head, + CalcuDemand = x.Demand, + }); + }); + _calcuResult.LinkList?.ForEach(x => + { + calcuResultList.Add(new HydroCalcuLinkResult() + { + Code = x.Id, + CalcuFlow = x.Flow, + CalcuVelocity = x.Velocity, + CalcuHeadLoss = x.Headloss + }); + }); + parterListCtrl.SetBindingData(_hydroInfo, calcuResultList); + parterListCtrl.SetCalcuView(); + this.controlContainerBottom.Controls.Add(parterListCtrl); + this.docPnlBottom.Text = "璁$畻缁撴灉"; ShowProperty(); + await _bimfaceCtrl?.ShowCalcuCustomLabels(_calcuResult); TipFormHelper.ShowSucceed("璁$畻鎴愬姛锛�"); - await this.xhsProjectSimulationBimfaceCtrl1.ShowCalcuCustomLabels(_calcuResult); } else { _calcuCtrl.SetBindingData(_calcuResult.FailedList); this.docPnlBottom.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Visible; - this.docPnlBottom.Text = "姘村姏璁$畻澶辫触鍘熷洜"; + this.docPnlBottom.Text = "璁$畻澶辫触鍘熷洜"; this.docPnlBottom.Height = 350; + TipFormHelper.ShowError("璁$畻澶辫触"); } }; @@ -615,7 +705,7 @@ calcuCtrl.SetBindingData(_hydroInfo); this.controlContainerBottom.Controls.Add(calcuCtrl); this.docPnlBottom.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Visible; - this.docPnlBottom.Text = "姘村姏璁$畻鍓嶆彁鏉′欢"; + this.docPnlBottom.Text = "璁$畻鍓嶆彁鏉′欢"; this.docPnlBottom.Height = 350; } @@ -651,7 +741,7 @@ { _parter = null; } - await this.xhsProjectSimulationBimfaceCtrl1.ZoomAndSelectComponents(elementIds); + await _bimfaceCtrl?.ZoomAndSelectComponents(elementIds); ShowProperty(); SetBimfaceLinkColor(); }; @@ -679,5 +769,6 @@ #endregion + } } \ No newline at end of file -- Gitblit v1.9.3