using DevExpress.Xpo.Helpers; using DevExpress.XtraEditors; using Yw.DAL.Basic; using Yw.EPAnet; using Yw.WinFrmUI.Q3d; namespace HStation.WinFrmUI { public partial class XhsSchemeHydraulicSimulationPage : DocumentPage { public XhsSchemeHydraulicSimulationPage() { InitializeComponent(); this.xhsProjectHydroQ3dCtrl1.ClickParterEvent += XhsProjectHydroQ3dCtrl1_ClickParterEvent; } private long _projectId; private Yw.Model.HydroModelInfo _hydro = null; private Yw.Model.HydroParterInfo _parter = null; private List _allCalcuParterList = null; /// /// /// public async Task SetBindingData(long projectId) { _projectId = projectId; var projectSite = await BLLFactory.Instance.GetDefaultByProjectID(projectId); if (projectSite == null) { return; } var hydroRelation = await new Yw.BLL.HydroModelRelation().GetDefaultByObjectTypeAndObjectIDOfPurpose(HStation.Xhs.DataType.XhsProjectSite, projectSite.ID, HStation.Xhs.Purpose.Simulation); if (hydroRelation == null) { return; } _hydro = await new Yw.BLL.HydroModelInfo().GetByID(hydroRelation.ModelID); this.xhsProjectSimulationPropertyCtrl1.SetBindingData(_hydro); } /// /// 初始化数据 /// public override void InitialDataSource() { base.InitialDataSource(); this.xhsProjectHydroQ3dCtrl1.SetBindingData(_hydro); } //bimface 构件点击 private void XhsProjectHydroQ3dCtrl1_ClickParterEvent(string objectId) { if (_hydro == null) { _parter = null; return; } var allParterList = _hydro.GetAllParters(); _parter = allParterList.Find(x => x.Code == objectId); this.xhsProjectSimulationPropertyCtrl1.SelectParter(_parter, allParterList); if (_parter != null) { if (_allCalcuParterList != null && _allCalcuParterList.Count > 0) { var calcuParter = _allCalcuParterList.Find(x => x.Id == _parter.Code); if (calcuParter != null) { IHydroCalcuProperty calcuProperty = null; if (calcuParter is CalcuNode calcuNode) { var calcuNodeProperty = new Yw.WinFrmUI.HydroCalcuNodeProperty(); calcuNodeProperty.ID = _parter.ID; calcuNodeProperty.CalcuPress = calcuNode.Press; calcuNodeProperty.CalcuDemand = calcuNode.Demand; calcuNodeProperty.CalcuHead = calcuNode.Head; calcuProperty = calcuNodeProperty; } else if (calcuParter is CalcuLink calcuLink) { var calcuLinkProperty = new Yw.WinFrmUI.HydroCalcuLinkProperty(); calcuLinkProperty.ID = _parter.ID; calcuLinkProperty.CalcuHeadLoss = calcuLink.Headloss; calcuLinkProperty.CalcuFlow = calcuLink.Flow; calcuLinkProperty.CalcuVelocity = calcuLink.Velocity; calcuProperty = calcuLinkProperty; } if (calcuProperty != null) { this.xhsProjectSimulationPropertyCtrl1.UpdateCalcuProperty(calcuProperty); } } } } } private void barBtnCheck_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { if (_hydro == null) { return; } var netWork = Yw.Hydro.ParseHelper.ToNetwork(_hydro); var result = netWork.Check(); XtraMessageBox.Show(JsonHelper.Object2FormatJson(result)); } private void barBtnCalcu_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { if (_hydro == null) { return; } var netWork = Yw.Hydro.ParseHelper.ToNetwork(_hydro); var result = netWork.Calcu(); if (!result.Succeed) { XtraMessageBox.Show(JsonHelper.Object2FormatJson(result)); return; } _allCalcuParterList = result.GetParterList(); TipFormHelper.ShowSucceed("计算成功"); if (_parter != null) { var calcuParter = _allCalcuParterList.Find(x => x.Id == _parter.Code); if (calcuParter != null) { IHydroCalcuProperty calcuProperty = null; if (calcuParter is CalcuNode calcuNode) { var calcuNodeProperty = new Yw.WinFrmUI.HydroCalcuNodeProperty(); calcuNodeProperty.ID = _parter.ID; calcuNodeProperty.CalcuPress = calcuNode.Press; calcuNodeProperty.CalcuDemand = calcuNode.Demand; calcuNodeProperty.CalcuHead = calcuNode.Head; calcuProperty = calcuNodeProperty; } else if (calcuParter is CalcuLink calcuLink) { var calcuLinkProperty = new Yw.WinFrmUI.HydroCalcuLinkProperty(); calcuLinkProperty.ID = _parter.ID; calcuLinkProperty.CalcuHeadLoss = calcuLink.Headloss; calcuLinkProperty.CalcuFlow = calcuLink.Flow; calcuLinkProperty.CalcuVelocity = calcuLink.Velocity; calcuProperty = calcuLinkProperty; } if (calcuProperty != null) { this.xhsProjectSimulationPropertyCtrl1.UpdateCalcuProperty(calcuProperty); } } } } private void barBtnParter_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { var dlg = new HydroParterListDlg(); dlg.SetBindingData(_hydro); dlg.Show(); } private void barBtnInp_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { var fileName = Yw.WinFrmUI.FileDialogHelper.SaveInp("导出Inp文件"); if (string.IsNullOrEmpty(fileName)) { return; } var netWork = Yw.Hydro.ParseHelper.ToNetwork(_hydro); var result = netWork.ToInpString(); File.WriteAllText(fileName, result); TipFormHelper.ShowSucceed("导出成功"); } private async void barBtnSave_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { if (_hydro == null) { return; } var bll = new Yw.BLL.HydroModelInfo(); var result = await bll.Save(_hydro); if (result > 0) { Yw.WinFrmUI.TipFormHelper.ShowSucceed("保存成功"); } } } }