lixiaojun
2024-10-18 5043208b24f45b3e3c630a596b9e83373096a78a
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.cs
@@ -624,7 +624,7 @@
                }
                var rated_speed = x.RatedN.Value;
                var speed_ratio = x.SpeedRatio ?? 1;
                var speed_ratio = x.SpeedRatio;
                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();
@@ -730,6 +730,87 @@
        }
        private XhsProjectSimulationCalcuCtrl _calcuCtrl = null;//计算控件
        private SetHydroCalcuPrefixCtrl _calcuPrefixCtrl = null;
        private SetHydroCalcuPrefixCtrl GetCalcuPrefixCtrl()
        {
            if (_calcuPrefixCtrl == null)
            {
                _calcuPrefixCtrl = new SetHydroCalcuPrefixCtrl();
                _calcuPrefixCtrl.Dock = DockStyle.Fill;
                _calcuPrefixCtrl.InitialData(() => _hydroInfo);
                _calcuPrefixCtrl.HydroViewEvent += async (parter) =>
                {
                    if (parter == null)
                    {
                        return;
                    }
                    await _bimfaceCtrl.ZoomAndSelectComponents(new List<string>() { parter.Code });
                };
                _calcuPrefixCtrl.HydroCalcuEvent += async (hydroInfo) =>
                {
                    if (hydroInfo == null)
                    {
                        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.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("计算成功!");
                    }
                    else
                    {
                        _calcuCtrl.SetBindingData(_calcuResult.FailedList);
                        this.docPnlBottom.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Visible;
                        this.docPnlBottom.Text = "计算失败原因";
                        this.docPnlBottom.Height = 350;
                        TipFormHelper.ShowError("计算失败");
                    }
                };
            }
            return _calcuPrefixCtrl;
        }
        //水力计算
        private void barBtnHydroCalcu_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
@@ -738,17 +819,16 @@
            {
                return;
            }
            this.controlContainerBottom.Controls.Clear();
            var calcuCtrl = GetCalcuCtrl();
            calcuCtrl.SetBindingData(_hydroInfo);
            this.controlContainerBottom.Controls.Add(calcuCtrl);
            this.docPnlBottom.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Visible;
            this.docPnlBottom.Text = "计算前提条件";
            this.docPnlBottom.Height = 350;
            var calcuPrefixCtrl = GetCalcuPrefixCtrl();
            calcuPrefixCtrl.SetBindingData();
            this.controlContainerRight.Controls.Clear();
            this.controlContainerRight.Controls.Add(calcuPrefixCtrl);
            this.docPnlRight.Text = "前提条件";
            this.docPnlRight.Width = SetHydroCalcuPrefixCtrl.ControlMinWidth;
            this.docPnlRight.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Visible;
        }
        #endregion 水力计算
        #endregion
        #region 构件查询