| | |
| | | global using Yw.EPAnet; |
| | | using DevExpress.XtraMap.Drawing; |
| | | using NetTaste; |
| | | using Org.BouncyCastle.Crypto.Engines; |
| | | |
| | | namespace HStation.WinFrmUI |
| | | { |
| | |
| | | this.docPnlBottom.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden; |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | private HStation.Vmo.XhsProjectVmo _project = null;//项目 |
| | | private HStation.Vmo.XhsProjectSiteVmo _projectSite = null;//项目站 |
| | |
| | | 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 void xhsProjectSimulationBimfaceCtrl1_HydroClickEvent(Yw.Model.HydroParterInfo obj) |
| | | { |
| | | if (_hydroInfo == null) |
| | | { |
| | | return; |
| | | } |
| | | _parter = obj; |
| | | ShowProperty(); |
| | | SetBimfaceLinkColor(); |
| | | } |
| | | //bimface控件 |
| | | private XhsProjectSimulationBimfaceCtrl _bimfaceCtrl = null; |
| | | |
| | | //设置Bimface连接颜色 |
| | | private async void SetBimfaceLinkColor() |
| | |
| | | { |
| | | return; |
| | | } |
| | | var elementIds = new List<string>(); |
| | | if (_parter != null) |
| | | { |
| | | if (_parter is Yw.Model.HydroLinkInfo linker) |
| | | if (_parter is Yw.Model.HydroLinkInfo link) |
| | | { |
| | | var allParterList = _hydroInfo.GetAllParters(); |
| | | var allLinkerList = _hydroInfo.GetAllLinks(); |
| | | var startParter = allParterList?.Find(x => x.Code == linker.StartCode); |
| | | await _bimfaceCtrl?.RestoreLinkComponentsColor(); |
| | | |
| | | var allVisualList = _hydroInfo.GetAllVisuals(); |
| | | var allLinkList = _hydroInfo.GetAllLinks(); |
| | | var startParter = allVisualList?.Find(x => x.Code == link.StartCode); |
| | | if (startParter != null) |
| | | { |
| | | var startElementIds = new List<string>(); |
| | | if (startParter.GetType() == typeof(Yw.Model.HydroJunctionInfo)) |
| | | { |
| | | var startLinkList = allLinkerList?.Where(x => x.StartCode == startParter.Code || x.EndCode == startParter.Code).ToList(); |
| | | if (startLinkList != null) |
| | | var startLinkList = allLinkList?.Where(x => x.StartCode == startParter.Code || x.EndCode == startParter.Code && x.Code != _parter.Code).ToList(); |
| | | if (startLinkList != null && startLinkList.Count > 0) |
| | | { |
| | | elementIds.AddRange(startLinkList.Select(x => x.Code).Where(x => x != _parter.Code)); |
| | | startElementIds.AddRange(startLinkList.Select(x => x.Code)); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | elementIds.Add(linker.StartCode); |
| | | startElementIds.Add(startParter.Code); |
| | | } |
| | | if (startElementIds.Count > 0) |
| | | { |
| | | await _bimfaceCtrl?.SetLinkStartComponentsColor(startElementIds); |
| | | } |
| | | } |
| | | var endParter = allParterList?.Find(x => x.Code == linker.EndCode); |
| | | var endParter = allVisualList?.Find(x => x.Code == link.EndCode); |
| | | if (endParter != null) |
| | | { |
| | | var endElementIds = new List<string>(); |
| | | if (endParter.GetType() == typeof(Yw.Model.HydroJunctionInfo)) |
| | | { |
| | | var endLinkList = allLinkerList?.Where(x => x.StartCode == endParter.Code || x.EndCode == endParter.Code).ToList(); |
| | | if (endLinkList != null) |
| | | var endLinkList = allLinkList?.Where(x => x.StartCode == endParter.Code || x.EndCode == endParter.Code && x.Code != _parter.Code).ToList(); |
| | | if (endLinkList != null && endLinkList.Count > 0) |
| | | { |
| | | elementIds.AddRange(endLinkList.Select(x => x.Code).Where(x => x != _parter.Code)); |
| | | endElementIds.AddRange(endLinkList.Select(x => x.Code)); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | elementIds.Add(linker.EndCode); |
| | | endElementIds.Add(endParter.Code); |
| | | } |
| | | if (endElementIds.Count > 0) |
| | | { |
| | | await _bimfaceCtrl?.SetLinkEndComponentsColor(endElementIds); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | await this.xhsProjectSimulationBimfaceCtrl1.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 属性面板 |
| | | |
| | |
| | | { |
| | | elementIds.Add(_parter.Code); |
| | | } |
| | | await this.xhsProjectSimulationBimfaceCtrl1.ZoomAndSelectComponents(elementIds); |
| | | await _bimfaceCtrl?.ZoomAndSelectComponents(elementIds); |
| | | ShowProperty(); |
| | | SetBimfaceLinkColor(); |
| | | }; |
| | |
| | | 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(); |
| | | }; |
| | |
| | | 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; |
| | | } |
| | | } |
| | |
| | | elementIds.Add(_parter.Code); |
| | | } |
| | | } |
| | | await this.xhsProjectSimulationBimfaceCtrl1.ZoomAndSelectComponents(elementIds); |
| | | await _bimfaceCtrl?.ZoomAndSelectComponents(elementIds); |
| | | ShowProperty(); |
| | | SetBimfaceLinkColor(); |
| | | }; |
| | |
| | | } |
| | | 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(); |
| | | }; |
| | |
| | | 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 |
| | | |
| | |
| | | { |
| | | 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("计算失败"); |
| | | } |
| | | |
| | | }; |
| | |
| | | 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; |
| | | } |
| | | |
| | |
| | | { |
| | | _parter = null; |
| | | } |
| | | await this.xhsProjectSimulationBimfaceCtrl1.ZoomAndSelectComponents(elementIds); |
| | | await _bimfaceCtrl?.ZoomAndSelectComponents(elementIds); |
| | | ShowProperty(); |
| | | SetBimfaceLinkColor(); |
| | | }; |
| | |
| | | |
| | | #endregion |
| | | |
| | | #region 标注 |
| | | |
| | | //标注 |
| | | private void barBtnMark_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) |
| | | { |
| | | |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | |
| | | } |
| | | } |