WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/02-bimface/XhsProjectSimulationBimfaceCtrl.cs
@@ -9,25 +9,56 @@ InitializeComponent(); } #region 事件集 /// <summary> /// 水力点击事件(包含左键和右键) /// 水力点击事件 /// 包含左键和右键 /// </summary> public event Action<Yw.Model.HydroVisualInfo> HydroClickEvent; public event Action<string> HydroClickEvent; /// <summary> /// 水力点击事件(仅左键) /// 水力点击事件 /// 仅左键 /// </summary> public event Action<Yw.Model.HydroVisualInfo> HydroMouseLeftClickEvent; public event Action<string> HydroMouseLeftClickEvent; /// <summary> /// 加载完成事件 /// </summary> public event Action LoadCompletedEvent; #endregion //项目 private HStation.Vmo.XhsProjectVmo _project = null; private XhsProjectVmo _project = null; //项目站 private HStation.Vmo.XhsProjectSiteVmo _projectSite = null; //获取水力信息方法 private Func<Yw.Model.HydroModelInfo> _hydroInfoFunc = null; private XhsProjectSiteVmo _projectSite = null; /// <summary> /// 初始化数据 /// 仅支持调用一次 /// </summary> public async Task InitialData(XhsProjectVmo project, XhsProjectSiteVmo projectSite) { if (project == null) { return; } _project = project; _projectSite = projectSite; if (_projectSite == null) { _projectSite = await BLLFactory<HStation.BLL.XhsProjectSite>.Instance.GetDefaultByProjectID(_project.ID); } var bimfaceInteropContainer = GetBimfaceInteropContainer(); this.Controls.Clear(); this.Controls.Add(bimfaceInteropContainer); await bimfaceInteropContainer.InitialContainer(); } #region 交互容器 //bimface 交互容器 private BimfaceInterop3dContainer _bimfaceInteropContainer = null; //获取Bimface 交互容器 private BimfaceInterop3dContainer GetBimfaceInteropContainer() @@ -82,17 +113,7 @@ { return; } if (this.HydroClickEvent != null) { var hydroInfo = _hydroInfoFunc?.Invoke(); if (hydroInfo == null) { return; } var allParterList = hydroInfo.GetAllVisuals(); var parter = allParterList?.Find(x => x.Code == obj.ObjectId); this.HydroClickEvent.Invoke(parter); } this.HydroClickEvent?.Invoke(obj.ObjectId); }; _bimfaceInteropContainer.ClickOutEvent += (obj) => { @@ -104,17 +125,7 @@ { return; } if (this.HydroMouseLeftClickEvent != null) { var hydroInfo = _hydroInfoFunc?.Invoke(); if (hydroInfo == null) { return; } var allParterList = hydroInfo.GetAllVisuals(); var parter = allParterList?.Find(x => x.Code == obj.ObjectId); this.HydroMouseLeftClickEvent.Invoke(parter); } this.HydroMouseLeftClickEvent?.Invoke(obj.ObjectId); }; _bimfaceInteropContainer.MouseLeftClickOutEvent += (obj) => { @@ -123,39 +134,11 @@ } return _bimfaceInteropContainer; } //bimface 交互容器 private BimfaceInterop3dContainer _bimfaceInteropContainer = null; /// <summary> /// 初始化数据 /// 仅支持调用一次 /// </summary> public async Task InitialData ( HStation.Vmo.XhsProjectVmo project, HStation.Vmo.XhsProjectSiteVmo projectSite, Func<Yw.Model.HydroModelInfo> hydroInfoFunc ) { if (project == null) { return; } _project = project; _projectSite = projectSite; _hydroInfoFunc = hydroInfoFunc; if (_projectSite == null) { _projectSite = await BLLFactory<HStation.BLL.XhsProjectSite>.Instance.GetDefaultByProjectID(_project.ID); } var bimfaceInteropContainer = GetBimfaceInteropContainer(); this.Controls.Clear(); this.Controls.Add(bimfaceInteropContainer); await bimfaceInteropContainer.InitialContainer(); } #region 构件的显示与隐藏 #endregion #region 显示与隐藏 /// <summary> /// 显示构件 @@ -200,8 +183,6 @@ /// <summary> /// 半透明构件 /// </summary> /// <param name="elementIds">构件id列表</param> /// <returns></returns> public async Task TranslucentComponents(List<string> elementIds) { if (_bimfaceInteropContainer == null) @@ -214,8 +195,6 @@ /// <summary> /// 取消构件半透明 /// </summary> /// <param name="elementIds">构件id列表</param> /// <returns></returns> public async Task OpaqueComponents(List<string> elementIds) { if (_bimfaceInteropContainer == null) @@ -420,61 +399,10 @@ #region 业务计算自定义标签 /// <summary> /// 显示业务计算自定义标签 /// 设置业务计算自定义标签 /// </summary> public async Task SetLogicCalcuCustomLabelsCalcuResult(HydroCalcuResult calcuResult) public async Task SetLogicCalcuCustomLabels(List<LogicCalcuCustomLabel> obj) { var hydroInfo = _hydroInfoFunc?.Invoke(); if (hydroInfo == null) { return; } if (calcuResult == null) { return; } if (!calcuResult.Succeed) { await _bimfaceInteropContainer?.ClearLogicCalcuCustomLabels(); return; } var obj = new List<LogicCalcuCustomLabel>(); var allParterList = hydroInfo.GetAllParters(); allParterList?.ForEach(x => { if (x is Yw.Model.HydroPumpInfo pump) { var hz = Math.Round(pump.RatedHz * pump.SpeedRatio); var calcuPump = calcuResult.LinkList.Find(x => x.Code == pump.Code); var calcuPumpStart = calcuResult.NodeList.Find(x => x.Code == pump.StartCode); var calcuPumpEnd = calcuResult.NodeList.Find(x => x.Code == pump.EndCode); var pumpCustomLabel = new LogicCalcuCustomLabel(); pumpCustomLabel.Id = pump.Code; pumpCustomLabel.Distance = 10000; pumpCustomLabel.Data = new List<LogicCalcuCustomLabelItem>() { new LogicCalcuCustomLabelItem(){ Name="状态",Value=HydroLinkStatusHelper.GetStatusName(pump.LinkStatus),Unit=string.Empty}, new LogicCalcuCustomLabelItem(){ Name="频率",Value=hz.ToString(),Unit=string.Empty}, new LogicCalcuCustomLabelItem(){ Name="流量",Value=Math.Round(calcuPump.CalcuFlow.Value,1).ToString(),Unit="m³/h"}, new LogicCalcuCustomLabelItem(){ Name="进口压力",Value=Math.Round(calcuPumpStart.CalcuHead.Value,4).ToString(),Unit="m"}, new LogicCalcuCustomLabelItem(){ Name="出口压力",Value=Math.Round(calcuPumpEnd.CalcuHead.Value,4).ToString(),Unit="m"}, }; obj.Add(pumpCustomLabel); } else if (x is Yw.Model.HydroEmitterInfo emitter) { var calcuEmitter = calcuResult.NodeList.Find(x => x.Code == emitter.Code); var emitterCustomLabel = new LogicCalcuCustomLabel(); emitterCustomLabel.Id = emitter.Code; emitterCustomLabel.Distance = 10000; emitterCustomLabel.Data = new List<LogicCalcuCustomLabelItem>() { new LogicCalcuCustomLabelItem(){ Name="流量",Value=Math.Round(calcuEmitter.CalcuDemand.Value,1).ToString(),Unit="m³/h"}, new LogicCalcuCustomLabelItem(){ Name="压力",Value=Math.Round(calcuEmitter.CalcuDemand.Value,4).ToString(),Unit="m"} }; obj.Add(emitterCustomLabel); } }); await _bimfaceInteropContainer?.SetLogicCalcuCustomLabels(obj); } WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/01-add/AddXhsSchemeDlg.cs
@@ -170,7 +170,7 @@ { _bimfaceCtrl = new XhsProjectSimulationBimfaceCtrl(); _bimfaceCtrl.Dock = DockStyle.Fill; await _bimfaceCtrl.InitialData(_project, _project_site, () => _hydro_info); await _bimfaceCtrl.InitialData(_project, _project_site); _bimfaceCtrl.LoadCompletedEvent += () => { //view加载完成事件 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/XhsProjectSimulationSchemeMgrPage.cs
@@ -88,7 +88,7 @@ { _bimfaceCtrl = new XhsProjectSimulationBimfaceCtrl(); _bimfaceCtrl.Dock = DockStyle.Fill; await _bimfaceCtrl.InitialData(_project, _projectSite, () => _hydroInfo); await _bimfaceCtrl.InitialData(_project, _projectSite); _bimfaceCtrl.LoadCompletedEvent += () => {//view加载完成事件 if (_hydroInfo == null) @@ -103,7 +103,7 @@ { return; } _selectedVisual = obj; //_selectedVisual = obj; ShowSelectedProperty(); }; } WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.Designer.cs
@@ -53,7 +53,7 @@ barBtnSetTranslationList = new DevExpress.XtraBars.BarButtonItem(); barBtnSetExchangerList = new DevExpress.XtraBars.BarButtonItem(); barBtnSetJunctionList = new DevExpress.XtraBars.BarButtonItem(); barBtnCurrentWorkingParallelAnalysis = new DevExpress.XtraBars.BarButtonItem(); barBtnWorkingParallel = new DevExpress.XtraBars.BarButtonItem(); barBtnSearch = new DevExpress.XtraBars.BarButtonItem(); barBtnGradingSet = new DevExpress.XtraBars.BarButtonItem(); barBtnGradingApply = new DevExpress.XtraBars.BarButtonItem(); @@ -77,14 +77,15 @@ barCkMark = new DevExpress.XtraBars.BarCheckItem(); barCkFlowEffect = new DevExpress.XtraBars.BarCheckItem(); barCkGrading = new DevExpress.XtraBars.BarCheckItem(); barCkCurrentWorkingCalcuResult = new DevExpress.XtraBars.BarCheckItem(); barBtnCurrentWorkingLossCurve = new DevExpress.XtraBars.BarButtonItem(); barBtnCurrentWorkingLossScale = new DevExpress.XtraBars.BarButtonItem(); barBtnCurrentWorkingPowerAnalysis = new DevExpress.XtraBars.BarButtonItem(); barBtnCurrentWorkingMultiAnalysis = new DevExpress.XtraBars.BarButtonItem(); barCkCalcuLabels = new DevExpress.XtraBars.BarCheckItem(); barBtnWorkingLossCurve = new DevExpress.XtraBars.BarButtonItem(); barBtnWorkingLossScale = new DevExpress.XtraBars.BarButtonItem(); barBtnWorkingPower = new DevExpress.XtraBars.BarButtonItem(); barBtnWorkingAnaly = new DevExpress.XtraBars.BarButtonItem(); barBtnParallel = new DevExpress.XtraBars.BarButtonItem(); barBtnRepair = new DevExpress.XtraBars.BarButtonItem(); barBtnWorkingList = new DevExpress.XtraBars.BarButtonItem(); barBtnWorkingEvaluation = new DevExpress.XtraBars.BarButtonItem(); ribbonPage1 = new DevExpress.XtraBars.Ribbon.RibbonPage(); pageGroupMatching = new DevExpress.XtraBars.Ribbon.RibbonPageGroup(); pageGroupModel = new DevExpress.XtraBars.Ribbon.RibbonPageGroup(); @@ -105,7 +106,6 @@ controlContainerBottom = new DevExpress.XtraBars.Docking.ControlContainer(); svgImg32 = new DevExpress.Utils.SvgImageCollection(components); rmSet = new DevExpress.XtraBars.Ribbon.RadialMenu(components); dockPanel2 = new DevExpress.XtraBars.Docking.DockPanel(); ((ISupportInitialize)ribbonControl1).BeginInit(); ((ISupportInitialize)repositoryItemImageComboBox1).BeginInit(); ((ISupportInitialize)tabPane1).BeginInit(); @@ -121,9 +121,9 @@ // ribbonControl1.ExpandCollapseItem.Id = 0; ribbonControl1.ItemPanelStyle = DevExpress.XtraBars.Ribbon.RibbonItemPanelStyle.Classic; ribbonControl1.Items.AddRange(new DevExpress.XtraBars.BarItem[] { ribbonControl1.ExpandCollapseItem, barBtnCheck, barBtnWorkingCalcu, barBtnExportInp, barBtnSave, barBtnHydroVisualList, barBtnFastShowHidden, barBtnMatchingList, barBtnUnMatchingList, barBtnSetList, barBtnSetPumpList, barBtnSetValveList, barBtnSetPipeList, barBtnSetElbowsList, barBtnSetThreelinkList, barBtnSetFourlinkList, barBtnSetTranslationList, barBtnSetExchangerList, barBtnSetJunctionList, barBtnCurrentWorkingParallelAnalysis, barBtnSearch, barBtnGradingSet, barBtnGradingApply, barBtnRefresh, barBtnSetMark, barBtnSetReservoirList, barBtnSetTankList, barBtnSetWaterboxList, barBtnSetBluntheadList, barBtnSetNozzleList, barBtnSetHydrantList, barBtnSetMeterList, barBtnSetCompressorList, barBtnSetFlowmeterList, barBtnSetPressmeterList, barBtnSetMonitor, barBtnSetMonitorValue, barCkMonitor, barEditCurrentWorking, barCkMark, barCkFlowEffect, barCkGrading, barCkCurrentWorkingCalcuResult, barBtnCurrentWorkingLossCurve, barBtnCurrentWorkingLossScale, barBtnCurrentWorkingPowerAnalysis, barBtnCurrentWorkingMultiAnalysis, barBtnParallel, barBtnRepair, barBtnWorkingList }); ribbonControl1.Items.AddRange(new DevExpress.XtraBars.BarItem[] { ribbonControl1.ExpandCollapseItem, barBtnCheck, barBtnWorkingCalcu, barBtnExportInp, barBtnSave, barBtnHydroVisualList, barBtnFastShowHidden, barBtnMatchingList, barBtnUnMatchingList, barBtnSetList, barBtnSetPumpList, barBtnSetValveList, barBtnSetPipeList, barBtnSetElbowsList, barBtnSetThreelinkList, barBtnSetFourlinkList, barBtnSetTranslationList, barBtnSetExchangerList, barBtnSetJunctionList, barBtnWorkingParallel, barBtnSearch, barBtnGradingSet, barBtnGradingApply, barBtnRefresh, barBtnSetMark, barBtnSetReservoirList, barBtnSetTankList, barBtnSetWaterboxList, barBtnSetBluntheadList, barBtnSetNozzleList, barBtnSetHydrantList, barBtnSetMeterList, barBtnSetCompressorList, barBtnSetFlowmeterList, barBtnSetPressmeterList, barBtnSetMonitor, barBtnSetMonitorValue, barCkMonitor, barEditCurrentWorking, barCkMark, barCkFlowEffect, barCkGrading, barCkCalcuLabels, barBtnWorkingLossCurve, barBtnWorkingLossScale, barBtnWorkingPower, barBtnWorkingAnaly, barBtnParallel, barBtnRepair, barBtnWorkingList, barBtnWorkingEvaluation }); ribbonControl1.Location = new Point(0, 0); ribbonControl1.MaxItemId = 76; ribbonControl1.MaxItemId = 77; ribbonControl1.Name = "ribbonControl1"; ribbonControl1.Pages.AddRange(new DevExpress.XtraBars.Ribbon.RibbonPage[] { ribbonPage1 }); ribbonControl1.RepositoryItems.AddRange(new DevExpress.XtraEditors.Repository.RepositoryItem[] { repositoryItemImageComboBox1 }); @@ -275,14 +275,14 @@ barBtnSetJunctionList.Id = 30; barBtnSetJunctionList.Name = "barBtnSetJunctionList"; // // barBtnCurrentWorkingParallelAnalysis // barBtnWorkingParallel // barBtnCurrentWorkingParallelAnalysis.Caption = "并联分析"; barBtnCurrentWorkingParallelAnalysis.Id = 31; barBtnCurrentWorkingParallelAnalysis.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnCurrentWorkingParallelAnalysis.ImageOptions.SvgImage"); barBtnCurrentWorkingParallelAnalysis.Name = "barBtnCurrentWorkingParallelAnalysis"; barBtnCurrentWorkingParallelAnalysis.RibbonStyle = DevExpress.XtraBars.Ribbon.RibbonItemStyles.SmallWithText; barBtnCurrentWorkingParallelAnalysis.ItemClick += barBtnAnaly_ItemClick; barBtnWorkingParallel.Caption = "并联分析"; barBtnWorkingParallel.Id = 31; barBtnWorkingParallel.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnWorkingParallel.ImageOptions.SvgImage"); barBtnWorkingParallel.Name = "barBtnWorkingParallel"; barBtnWorkingParallel.RibbonStyle = DevExpress.XtraBars.Ribbon.RibbonItemStyles.SmallWithText; barBtnWorkingParallel.ItemClick += barBtnAnaly_ItemClick; // // barBtnSearch // @@ -416,7 +416,7 @@ // barCkMonitor // barCkMonitor.Caption = "显示"; barCkMonitor.CheckBoxVisibility = DevExpress.XtraBars.CheckBoxVisibility.AfterText; barCkMonitor.CheckBoxVisibility = DevExpress.XtraBars.CheckBoxVisibility.BeforeText; barCkMonitor.Id = 58; barCkMonitor.Name = "barCkMonitor"; barCkMonitor.CheckedChanged += barCkMonitor_CheckedChanged; @@ -438,7 +438,7 @@ // barCkMark // barCkMark.Caption = "显示"; barCkMark.CheckBoxVisibility = DevExpress.XtraBars.CheckBoxVisibility.AfterText; barCkMark.CheckBoxVisibility = DevExpress.XtraBars.CheckBoxVisibility.BeforeText; barCkMark.Id = 65; barCkMark.Name = "barCkMark"; barCkMark.CheckedChanged += barCkMark_CheckedChanged; @@ -446,7 +446,7 @@ // barCkFlowEffect // barCkFlowEffect.Caption = "水流动画"; barCkFlowEffect.CheckBoxVisibility = DevExpress.XtraBars.CheckBoxVisibility.AfterText; barCkFlowEffect.CheckBoxVisibility = DevExpress.XtraBars.CheckBoxVisibility.BeforeText; barCkFlowEffect.Id = 66; barCkFlowEffect.Name = "barCkFlowEffect"; barCkFlowEffect.CheckedChanged += barCkFlowEffect_CheckedChanged; @@ -454,49 +454,54 @@ // barCkGrading // barCkGrading.Caption = "显示"; barCkGrading.CheckBoxVisibility = DevExpress.XtraBars.CheckBoxVisibility.AfterText; barCkGrading.CheckBoxVisibility = DevExpress.XtraBars.CheckBoxVisibility.BeforeText; barCkGrading.Id = 67; barCkGrading.Name = "barCkGrading"; barCkGrading.CheckedChanged += barCkGrading_CheckedChanged; // // barCkCurrentWorkingCalcuResult // barCkCalcuLabels // barCkCurrentWorkingCalcuResult.Caption = "计算结果"; barCkCurrentWorkingCalcuResult.CheckBoxVisibility = DevExpress.XtraBars.CheckBoxVisibility.AfterText; barCkCurrentWorkingCalcuResult.Id = 68; barCkCurrentWorkingCalcuResult.Name = "barCkCurrentWorkingCalcuResult"; barCkCalcuLabels.Caption = "计算标签"; barCkCalcuLabels.CheckBoxVisibility = DevExpress.XtraBars.CheckBoxVisibility.BeforeText; barCkCalcuLabels.Id = 68; barCkCalcuLabels.Name = "barCkCalcuLabels"; barCkCalcuLabels.CheckedChanged += barCkCalcuLabels_CheckedChanged; // // barBtnCurrentWorkingLossCurve // barBtnWorkingLossCurve // barBtnCurrentWorkingLossCurve.Caption = "损失曲线"; barBtnCurrentWorkingLossCurve.Id = 69; barBtnCurrentWorkingLossCurve.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnCurrentWorkingLossCurve.ImageOptions.SvgImage"); barBtnCurrentWorkingLossCurve.Name = "barBtnCurrentWorkingLossCurve"; barBtnCurrentWorkingLossCurve.RibbonStyle = DevExpress.XtraBars.Ribbon.RibbonItemStyles.SmallWithText; barBtnWorkingLossCurve.Caption = "损失曲线"; barBtnWorkingLossCurve.Id = 69; barBtnWorkingLossCurve.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnWorkingLossCurve.ImageOptions.SvgImage"); barBtnWorkingLossCurve.Name = "barBtnWorkingLossCurve"; barBtnWorkingLossCurve.RibbonStyle = DevExpress.XtraBars.Ribbon.RibbonItemStyles.SmallWithText; barBtnWorkingLossCurve.ItemClick += barBtnWorkingLossCurve_ItemClick; // // barBtnCurrentWorkingLossScale // barBtnWorkingLossScale // barBtnCurrentWorkingLossScale.Caption = "损失比例"; barBtnCurrentWorkingLossScale.Id = 70; barBtnCurrentWorkingLossScale.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnCurrentWorkingLossScale.ImageOptions.SvgImage"); barBtnCurrentWorkingLossScale.Name = "barBtnCurrentWorkingLossScale"; barBtnCurrentWorkingLossScale.RibbonStyle = DevExpress.XtraBars.Ribbon.RibbonItemStyles.SmallWithText; barBtnWorkingLossScale.Caption = "损失比例"; barBtnWorkingLossScale.Id = 70; barBtnWorkingLossScale.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnWorkingLossScale.ImageOptions.SvgImage"); barBtnWorkingLossScale.Name = "barBtnWorkingLossScale"; barBtnWorkingLossScale.RibbonStyle = DevExpress.XtraBars.Ribbon.RibbonItemStyles.SmallWithText; barBtnWorkingLossScale.ItemClick += barBtnWorkingLossScale_ItemClick; // // barBtnCurrentWorkingPowerAnalysis // barBtnWorkingPower // barBtnCurrentWorkingPowerAnalysis.Caption = "能效分析"; barBtnCurrentWorkingPowerAnalysis.Id = 71; barBtnCurrentWorkingPowerAnalysis.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnCurrentWorkingPowerAnalysis.ImageOptions.SvgImage"); barBtnCurrentWorkingPowerAnalysis.Name = "barBtnCurrentWorkingPowerAnalysis"; barBtnCurrentWorkingPowerAnalysis.RibbonStyle = DevExpress.XtraBars.Ribbon.RibbonItemStyles.SmallWithText; barBtnWorkingPower.Caption = "能效分析"; barBtnWorkingPower.Id = 71; barBtnWorkingPower.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnWorkingPower.ImageOptions.SvgImage"); barBtnWorkingPower.Name = "barBtnWorkingPower"; barBtnWorkingPower.RibbonStyle = DevExpress.XtraBars.Ribbon.RibbonItemStyles.SmallWithText; barBtnWorkingPower.ItemClick += barBtnWorkingPower_ItemClick; // // barBtnCurrentWorkingMultiAnalysis // barBtnWorkingAnaly // barBtnCurrentWorkingMultiAnalysis.Caption = "综合分析"; barBtnCurrentWorkingMultiAnalysis.Id = 72; barBtnCurrentWorkingMultiAnalysis.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnCurrentWorkingMultiAnalysis.ImageOptions.SvgImage"); barBtnCurrentWorkingMultiAnalysis.Name = "barBtnCurrentWorkingMultiAnalysis"; barBtnCurrentWorkingMultiAnalysis.RibbonStyle = DevExpress.XtraBars.Ribbon.RibbonItemStyles.Large; barBtnWorkingAnaly.Caption = "综合分析"; barBtnWorkingAnaly.Id = 72; barBtnWorkingAnaly.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnWorkingAnaly.ImageOptions.SvgImage"); barBtnWorkingAnaly.Name = "barBtnWorkingAnaly"; barBtnWorkingAnaly.RibbonStyle = DevExpress.XtraBars.Ribbon.RibbonItemStyles.Large; barBtnWorkingAnaly.ItemClick += barBtnWorkingAnaly_ItemClick; // // barBtnParallel // @@ -525,7 +530,17 @@ barBtnWorkingList.Id = 75; barBtnWorkingList.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnWorkingList.ImageOptions.SvgImage"); barBtnWorkingList.Name = "barBtnWorkingList"; barBtnWorkingList.RibbonStyle = DevExpress.XtraBars.Ribbon.RibbonItemStyles.SmallWithText; barBtnWorkingList.ItemClick += barBtnWorkingList_ItemClick; // // barBtnWorkingEvaluation // barBtnWorkingEvaluation.Caption = "精度评估"; barBtnWorkingEvaluation.Id = 76; barBtnWorkingEvaluation.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnWorkingEvaluation.ImageOptions.SvgImage"); barBtnWorkingEvaluation.Name = "barBtnWorkingEvaluation"; barBtnWorkingEvaluation.RibbonStyle = DevExpress.XtraBars.Ribbon.RibbonItemStyles.SmallWithText; barBtnWorkingEvaluation.ItemClick += barBtnWorkingEvaluation_ItemClick; // // ribbonPage1 // @@ -586,13 +601,14 @@ // ribbonPageGroup9 // ribbonPageGroup9.ItemLinks.Add(barEditCurrentWorking); ribbonPageGroup9.ItemLinks.Add(barCkCurrentWorkingCalcuResult); ribbonPageGroup9.ItemLinks.Add(barBtnCurrentWorkingParallelAnalysis); ribbonPageGroup9.ItemLinks.Add(barBtnCurrentWorkingLossCurve); ribbonPageGroup9.ItemLinks.Add(barBtnCurrentWorkingLossScale); ribbonPageGroup9.ItemLinks.Add(barBtnCurrentWorkingPowerAnalysis); ribbonPageGroup9.ItemLinks.Add(barBtnCurrentWorkingMultiAnalysis); ribbonPageGroup9.ItemLinks.Add(barBtnWorkingList); ribbonPageGroup9.ItemLinks.Add(barCkCalcuLabels); ribbonPageGroup9.ItemLinks.Add(barBtnWorkingEvaluation); ribbonPageGroup9.ItemLinks.Add(barBtnWorkingParallel); ribbonPageGroup9.ItemLinks.Add(barBtnWorkingPower); ribbonPageGroup9.ItemLinks.Add(barBtnWorkingLossCurve); ribbonPageGroup9.ItemLinks.Add(barBtnWorkingLossScale); ribbonPageGroup9.ItemLinks.Add(barBtnWorkingAnaly); ribbonPageGroup9.Name = "ribbonPageGroup9"; ribbonPageGroup9.Text = "工况分析"; // @@ -711,17 +727,6 @@ rmSet.Ribbon = ribbonControl1; rmSet.BeforePopup += rmSet_BeforePopup; // // dockPanel2 // dockPanel2.Dock = DevExpress.XtraBars.Docking.DockingStyle.Right; dockPanel2.ID = new Guid("9e1401bf-eba9-4e65-8e3e-50e08d389108"); dockPanel2.Location = new Point(1666, 128); dockPanel2.Name = "dockPanel2"; dockPanel2.OriginalSize = new Size(275, 200); dockPanel2.Size = new Size(275, 572); dockPanel2.Tabbed = true; dockPanel2.Text = "panelContainer1"; // // XhsProjectSimulationCorePage // Appearance.BackColor = SystemColors.Control; @@ -781,7 +786,7 @@ private DevExpress.XtraBars.BarButtonItem barBtnSetTranslationList; private DevExpress.XtraBars.BarButtonItem barBtnSetExchangerList; private DevExpress.XtraBars.BarButtonItem barBtnSetJunctionList; private DevExpress.XtraBars.BarButtonItem barBtnCurrentWorkingParallelAnalysis; private DevExpress.XtraBars.BarButtonItem barBtnWorkingParallel; private DevExpress.XtraBars.BarButtonItem barBtnSearch; private DevExpress.XtraBars.Ribbon.RibbonPageGroup pageGroupModel; private DevExpress.XtraBars.Docking.DockPanel docPnlBottom; @@ -813,14 +818,14 @@ private DevExpress.XtraBars.BarCheckItem barCkMark; private DevExpress.XtraBars.BarCheckItem barCkFlowEffect; private DevExpress.XtraBars.BarCheckItem barCkGrading; private DevExpress.XtraBars.BarCheckItem barCkCurrentWorkingCalcuResult; private DevExpress.XtraBars.BarButtonItem barBtnCurrentWorkingLossCurve; private DevExpress.XtraBars.BarButtonItem barBtnCurrentWorkingLossScale; private DevExpress.XtraBars.BarButtonItem barBtnCurrentWorkingPowerAnalysis; private DevExpress.XtraBars.BarButtonItem barBtnCurrentWorkingMultiAnalysis; private DevExpress.XtraBars.BarCheckItem barCkCalcuLabels; private DevExpress.XtraBars.BarButtonItem barBtnWorkingLossCurve; private DevExpress.XtraBars.BarButtonItem barBtnWorkingLossScale; private DevExpress.XtraBars.BarButtonItem barBtnWorkingPower; private DevExpress.XtraBars.BarButtonItem barBtnWorkingAnaly; private DevExpress.XtraBars.BarButtonItem barBtnParallel; private DevExpress.XtraBars.BarButtonItem barBtnRepair; private DevExpress.XtraBars.BarButtonItem barBtnWorkingList; private DevExpress.XtraBars.Docking.DockPanel dockPanel2; private DevExpress.XtraBars.BarButtonItem barBtnWorkingEvaluation; } } WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.cs
@@ -1,13 +1,16 @@ global using Yw.EPAnet; using DevExpress.CodeParser; using DevExpress.Diagram.Core.Native; using DevExpress.Mvvm.Native; using DevExpress.Office.Utils; using DevExpress.PivotGrid.QueryMode.TuplesTree; using DevExpress.Utils.Extensions; using DevExpress.Xpo.Helpers; using DevExpress.XtraBars.Ribbon; using DevExpress.XtraRichEdit.Layout; using DevExpress.XtraSpreadsheet.Commands; using HStation.WinFrmUI.PhartRelation; using NetTaste; using NPOI.SS.Formula.Functions; using System.Diagnostics; using System.Windows.Media; @@ -81,11 +84,15 @@ ShowBimfaceCtrl(); ShowQ3dCtrl(); ShowPropertyCtrl(); } private void InitialUI() { InitialCurrentWorking(); } #region Bimface #region BIM控件 //bimface控件 private XhsProjectSimulationBimfaceCtrl _bimfaceCtrl = null; @@ -97,13 +104,14 @@ { _bimfaceCtrl = new XhsProjectSimulationBimfaceCtrl(); _bimfaceCtrl.Dock = DockStyle.Fill; await _bimfaceCtrl.InitialData(_project, _projectSite, () => _hydroInfo); await _bimfaceCtrl.InitialData(_project, _projectSite); _bimfaceCtrl.LoadCompletedEvent += () => {//view加载完成事件 if (_hydroInfo == null) { return; } InitialUI(); }; _bimfaceCtrl.HydroMouseLeftClickEvent += (obj) => {//鼠标左键点击事件 @@ -111,7 +119,7 @@ { return; } _selectedVisual = obj; //_selectedVisual = obj; ShowSelectedProperty(); }; } @@ -133,7 +141,7 @@ #endregion #region Q3d #region Q3d控件 //Q3d 控件 private XhsProjectSimulationQ3dCtrl _q3dCtrl = null; @@ -350,7 +358,7 @@ #endregion #region 可见视图列表 #region 视图列表 //所有可见视图字典 private Dictionary<string, HydroVisualViewModel> _allVisualViewModelDict = null; @@ -720,7 +728,7 @@ #endregion #region 未匹配列表 #region 未匹列表 //获取未匹配列表控件 private XhsProjectSimulationUnMatchingListCtrl GetUnMatchingListCtrl() @@ -1236,99 +1244,6 @@ this.barBtnSetValveList.Visibility = DevExpress.XtraBars.BarItemVisibility.Always; } } #endregion #region 并联分析 //并联分析 private void barBtnAnaly_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { if (_hydroInfo == null) { return; } if (_hydroInfo.Pumps == null || _hydroInfo.Pumps.Count < 1) { return; } var allCalcuResultList = GetCalcuVisualResultList(Yw.EPAnet.CalcuMode.MinorLoss, false); var vmList = new List<XhsSinglePumpViewModel>(); foreach (var pump in _hydroInfo.Pumps) { if (!pump.RatedN.HasValue) { continue; } var qh = _hydroInfo.Curves?.Find(t => t.Code == pump.CurveQH)?.CurveData; var qe = _hydroInfo.Curves?.Find(t => t.Code == pump.CurveQE)?.CurveData; var qp = _hydroInfo.Curves?.Find(t => t.Code == pump.CurveQP)?.CurveData; if (qh == null) { continue; } var qhPtList = qh.Select(x => new XhsSplinePointViewModel(x.X, x.Y)).ToList(); var qePtList = qe?.Select(x => new XhsSplinePointViewModel(x.X, x.Y)).ToList(); var qpPtList = qp?.Select(x => new XhsSplinePointViewModel(x.X, x.Y)).ToList(); var vm = new XhsSinglePumpViewModel(); vmList.Add(vm); vm.ID = pump.ID; vm.Name = pump.Name; vm.Code = pump.Code; vm.IsBp = true; vm.RunStatus = pump.LinkStatus == Yw.Hydro.LinkStatus.Open; vm.RatedHz = pump.RatedHz; vm.CurrentHz = Math.Round(pump.RatedHz * pump.SpeedRatio, 1); vm.RatedSpeed = pump.RatedN.Value; vm.CurrentSpeed = Math.Round(pump.RatedN.Value * pump.SpeedRatio); vm.CurveQH = qhPtList; vm.CurveQE = qePtList; vm.CurveQP = qpPtList; if (allCalcuResultList != null && allCalcuResultList.Count > 0) { var calcuResult = allCalcuResultList.Find(x => x.Code == pump.Code) as HydroCalcuLinkResult; if (calcuResult != null) { if (calcuResult.CalcuFlow.HasValue) { vm.CalcuQ = Math.Abs(calcuResult.CalcuFlow.Value); } var calcuResultStart = allCalcuResultList.Find(x => x.Code == pump.StartCode) as HydroCalcuNodeResult; var calcuResultEnd = allCalcuResultList.Find(x => x.Code == pump.EndCode) as HydroCalcuNodeResult; if (calcuResultStart != null && calcuResultEnd != null) { if (calcuResultStart.CalcuHead.HasValue && calcuResultEnd.CalcuHead.HasValue) { vm.CalcuH = Math.Round(Math.Abs(calcuResultStart.CalcuHead.Value - calcuResultEnd.CalcuHead.Value), 4); } } } } } var dlg = new PumpParallelAnalyDlg(); dlg.SetBindingData(vmList); dlg.ReloadDataEvent += (list) => { list?.ForEach(x => { var pump = _hydroInfo.Pumps?.Find(t => t.Code == x.Code); if (pump != null) { pump.LinkStatus = x.RunStatus ? Yw.Hydro.PumpStatus.Open : Yw.Hydro.PumpStatus.Closed; pump.SpeedRatio = Math.Round(x.CurrentHz / pump.RatedHz, 1); } }); ShowSelectedProperty(); return true; }; dlg.ShowDialog(); } #endregion @@ -2000,7 +1915,7 @@ #endregion #region 构件明细控件 #region 构件控件 //构件明细控件 private Yw.WinFrmUI.HydroVisualListCtrl _visualListCtrl = null; @@ -2097,12 +2012,10 @@ #region 监测列表 #region 测点列表 //所有监测点列表 //所有监测列表 private List<HydroMonitorVmo> _allMonitorList = null; //获取监测点列表 //获取监测列表 private async Task<List<HydroMonitorVmo>> GetMonitorList() { if (_hydroInfo == null) @@ -2120,14 +2033,10 @@ return _allMonitorList; } //更新监测点列表 //更新监测列表 private async void UpdateMonitorList(string code) { if (_hydroInfo == null) { return; } if (string.IsNullOrEmpty(code)) { return; } @@ -2185,6 +2094,10 @@ } #endregion #region 监测列表 #region 监测值列表 @@ -2545,7 +2458,7 @@ #endregion #region 导出INP文件 #region 导出INP //导出INP文件 private void barBtnExportInp_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) @@ -2650,8 +2563,70 @@ #region 工况计算 //所有工况列表 private List<HydroWorkingVmo> _allWorkingList = null; //获取工况列表 private async Task<List<HydroWorkingVmo>> GetWorkingList() { if (_allWorkingList == null) { _allWorkingList = await BLLFactory<Yw.BLL.HydroWorking>.Instance.GetByModelID(_hydroInfo.ID); if (_allWorkingList == null) { _allWorkingList = new List<HydroWorkingVmo>(); } } return _allWorkingList; } //所有工况元组列表 private List<Tuple<HydroWorkingVmo, HydroCheckResult, HydroCalcuResult>> _allWorkingTupleList = new List<Tuple<HydroWorkingVmo, HydroCheckResult, HydroCalcuResult>>(); private List<Tuple<HydroWorkingVmo, HydroCheckResult, HydroCalcuResult>> _allWorkingTupleList = null; //获取工况元组列表 private async Task<List<Tuple<HydroWorkingVmo, HydroCheckResult, HydroCalcuResult>>> GetWorkingTupleList() { if (_hydroInfo == null) { return default; } if (_allWorkingTupleList == null) { _allWorkingTupleList = new List<Tuple<HydroWorkingVmo, HydroCheckResult, HydroCalcuResult>>(); var allWorkingList = await GetWorkingList(); if (allWorkingList.Count > 0) { allWorkingList.ForEach(x => { var checkResult = _hydroInfo.Check(); HydroCalcuResult calcuResult = null; if (checkResult != null && checkResult.Succeed) { calcuResult = _hydroInfo.Calcu(Yw.EPAnet.CalcuMode.MinorLoss); } _allWorkingTupleList.Add(new Tuple<HydroWorkingVmo, HydroCheckResult, HydroCalcuResult>(x, checkResult, calcuResult)); }); } } return _allWorkingTupleList; } //添加工况元组 private async void AppendWorkingTuple(HydroWorkingVmo working, HydroCheckResult check, HydroCalcuResult calcu) { var allWorkingTupleList = await GetWorkingTupleList(); allWorkingTupleList.Add(new Tuple<HydroWorkingVmo, HydroCheckResult, HydroCalcuResult>(working, check, calcu)); } //移除工况元组 private async void RemoveWorkingTuple(HydroWorkingVmo working) { var allWorkingTupleList = await GetWorkingTupleList(); if (allWorkingTupleList.Count > 0) { allWorkingTupleList.RemoveAll(x => x.Item1.ID == working.ID); } } //显示工况计算窗体 private void ShowWorkingCalcuDlg() @@ -2672,12 +2647,13 @@ { return; } var allWorkingList = await GetWorkingList(); var vmo = new HydroWorkingVmo(); vmo.ModelID = _hydroInfo.ID; vmo.Name = working.Name; vmo.WorkingInfo = JsonHelper.Object2Json(working.WorkingInfo); vmo.MonitorInfo = JsonHelper.Object2Json(working.MonitorInfo); vmo.SortCode = _allWorkingList.Count < 1 ? 1 : _allWorkingList.Max(x => x.SortCode) + 1; vmo.SortCode = allWorkingList.Count < 1 ? 1 : allWorkingList.Max(x => x.SortCode) + 1; vmo.Description = working.Description; vmo.ID = await BLLFactory<Yw.BLL.HydroWorking>.Instance.Insert(vmo); if (vmo.ID < 1) @@ -2685,7 +2661,7 @@ TipFormHelper.ShowError("创建工况失败,计算取消!"); return; } _allWorkingList.Add(vmo); allWorkingList.Add(vmo); _hydroInfo.UpdateWorkingInfo(working.WorkingInfo); //校验 @@ -2713,7 +2689,7 @@ UpdateVisualViewModelCalcuProperty(); UpdateVisualListCtrl(); UpdateSelectedProperty(); await _bimfaceCtrl?.SetLogicCalcuCustomLabelsCalcuResult(_calcuResult); //await _bimfaceCtrl?.SetLogicCalcuCustomLabelsCalcuResult(_calcuResult); TipFormHelper.ShowSucceed("计算成功!"); var codes = _hydroInfo.Pumps.Select(x => x.Code).ToList(); await _bimfaceCtrl?.ZoomAndSelectComponents(codes); @@ -2739,14 +2715,98 @@ #endregion #region 计算标签 //计算标签是否显示 private bool _isCalcuLabelsVisible = false; //所有计算标签 private List<LogicCalcuCustomLabel> _allCalcuLabels = null; //获取计算标签 private List<LogicCalcuCustomLabel> GetCalcuLabels() { if (_hydroInfo == null) { return default; } var allCalcuResultList = GetCalcuVisualResultList(Yw.EPAnet.CalcuMode.MinorLoss, false); if (allCalcuResultList == null || allCalcuResultList.Count < 1) { return default; } var list = new List<LogicCalcuCustomLabel>(); _hydroInfo.Pumps?.ForEach(x => { var hz = Math.Round(x.RatedHz * x.SpeedRatio); var calcuPumpResult = GetCalcuVisualResult(x.Code) as HydroCalcuLinkResult; if (calcuPumpResult != null) { var calcuPumpStartResult = GetCalcuVisualResult(x.StartCode) as HydroCalcuNodeResult; var calcuPumpEndResult = GetCalcuVisualResult(x.EndCode) as HydroCalcuNodeResult; var pumpCustomLabel = new LogicCalcuCustomLabel(); pumpCustomLabel.Id = x.Code; pumpCustomLabel.Distance = 20000; pumpCustomLabel.Data = new List<LogicCalcuCustomLabelItem>() { new LogicCalcuCustomLabelItem(){ Name="状态",Value=HydroLinkStatusHelper.GetStatusName(x.LinkStatus),Unit=string.Empty}, new LogicCalcuCustomLabelItem(){ Name="频率",Value=hz.ToString(),Unit=string.Empty}, new LogicCalcuCustomLabelItem(){ Name="流量",Value=Math.Round(calcuPumpResult.CalcuFlow.Value,1).ToString(),Unit="m³/h"}, new LogicCalcuCustomLabelItem(){ Name="进口压力",Value=Math.Round(calcuPumpStartResult.CalcuHead.Value,4).ToString(),Unit="m"}, new LogicCalcuCustomLabelItem(){ Name="出口压力",Value=Math.Round(calcuPumpEndResult.CalcuHead.Value,4).ToString(),Unit="m"}, }; list.Add(pumpCustomLabel); } }); _hydroInfo.GetAllEmitters()?.ForEach(x => { var calcuEmitter = GetCalcuVisualResult(x.Code) as HydroCalcuNodeResult; var emitterCustomLabel = new LogicCalcuCustomLabel(); emitterCustomLabel.Id = x.Code; emitterCustomLabel.Distance = 30000; emitterCustomLabel.Data = new List<LogicCalcuCustomLabelItem>() { new LogicCalcuCustomLabelItem(){ Name="流量",Value=Math.Round(calcuEmitter.CalcuDemand.Value,1).ToString(),Unit="m³/h"}, new LogicCalcuCustomLabelItem(){ Name="压力",Value=Math.Round(calcuEmitter.CalcuDemand.Value,4).ToString(),Unit="m"} }; list.Add(emitterCustomLabel); }); return list; } //设置计算标签 private void SetCalcuLabels() { if (_isCalcuLabelsVisible) { var allCalcuLabels = GetCalcuLabels(); _bimfaceCtrl?.SetLogicCalcuCustomLabels(allCalcuLabels); } else { _bimfaceCtrl?.ClearLogicCalcuCustomLabels(); } } //设置计算标签是否显示 private void barCkCalcuLabels_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { _isCalcuLabelsVisible = this.barCkCalcuLabels.Checked; } #endregion #region 当前工况 //当前工况 private Yw.Vmo.HydroWorkingVmo _currentWorking = null; //初始化当前工况 private void InitialCurrentWorking(List<HydroWorkingVmo> allWorkingList) private async void InitialCurrentWorking() { var allWorkingList = await GetWorkingList(); this.repositoryItemImageComboBox1.Items.BeginUpdate(); this.repositoryItemImageComboBox1.Items.Clear(); if (allWorkingList != null && allWorkingList.Count > 0) @@ -2767,9 +2827,22 @@ } //设置当前工况 private void SetCurrentWorking(HydroWorkingVmo working) private async void SetCurrentWorking(HydroWorkingVmo working) { if (working == null) { return; } this.barEditCurrentWorking.EditValue = working; _currentWorking = working; var allWorkingTupleList = await GetWorkingTupleList(); var tuple = allWorkingTupleList?.Find(x => x.Item1.ID == working.ID); if (tuple == null) { return; } _checkResult = tuple.Item2; _calcuResult = tuple.Item3; } //当前工况发生改变 @@ -2777,155 +2850,6 @@ { var working = this.barEditCurrentWorking.EditValue as HydroWorkingVmo; SetCurrentWorking(working); } #endregion #region 工况列表 //所有工况列表 private List<HydroWorkingVmo> _allWorkingList = null; //初始化工况列表 private async void InitialWorkingList() { _allWorkingList = await BLLFactory<Yw.BLL.HydroWorking>.Instance.GetByModelID(_hydroInfo.ID); if (_allWorkingList == null) { _allWorkingList = new List<HydroWorkingVmo>(); } } ////获取属性控件 //private XhsProjectSimulationPropertyCtrl GetPropertyCtrl() //{ // if (_propertyCtrl == null) // { // _propertyCtrl = new XhsProjectSimulationPropertyCtrl(); // _propertyCtrl.Dock = DockStyle.Fill; // _propertyCtrl.HydroViewEvent += (visual) => // { // if (visual == null) // { // return; // } // _bimfaceCtrl?.ZoomToComponent(visual.Code); // }; // _propertyCtrl.BlinkLinkNodeEvent += async (link, linkNodeCode) => // { //强调连接节点 // if (_hydroInfo == null) // { // return; // } // if (link == null) // { // return; // } // if (string.IsNullOrEmpty(linkNodeCode)) // { // return; // } // var linkNode = GetVisual(linkNodeCode); // if (linkNode == null) // { // return; // } // var blinkCodes = new List<string>(); // if (linkNode.GetType() == typeof(HydroJunctionInfo)) // { // var allLinkList = GetLinkList(); // if (allLinkList == null || allLinkList.Count < 1) // { // return; // } // var linkList = allLinkList.Where(x => (x.StartCode == linkNodeCode || x.EndCode == linkNodeCode) && x.Code != linkNodeCode).ToList(); // if (linkList == null || linkList.Count < 1) // { // return; // } // blinkCodes.AddRange(linkList.Select(x => x.Code)); // } // else // { // blinkCodes.Add(linkNodeCode); // } // await _bimfaceCtrl?.ClearBlinkComponents(); // await _bimfaceCtrl?.SetBlinkComponents(blinkCodes); // await Task.Delay(5000); // await _bimfaceCtrl?.ClearBlinkComponents(); // }; // _propertyCtrl.PropertyValueChangedEvent += (visual) => // { // if (visual == null) // { // return; // } // UpdateVisualListCtrl(); // //ApplyGradingResultList(visual); // }; // _propertyCtrl.MarkPropertyValueChangedEvent += (visual) => // { // //标注属性发生改变 // //判断当前是否有标注展示,若有则更新标注,最好是更新单个标注 // //UpdateMark(visual); // }; // _propertyCtrl.GradingPropertyValueChangedEvent += (parter) => // { // //分级属性发生改变 // //判断当前是否有分级展示,若有则更新分级,最好是更新单个分级 // }; // _propertyCtrl.FlowEffectPropertyValueChangedEvent += (visual) => // { // //流向属性发生改变 // //判断流向是否加载,如果加载则更新流向,最好是更新单个流向 // //UpdateFlowEffect(visual); // }; // } // return _propertyCtrl; //} ////属性控件是否可见 //private bool IsPropertyCtrlVisible //{ // get // { // if (this.docPnlRight.Visibility == DevExpress.XtraBars.Docking.DockVisibility.Visible) // { // if (this.controlContainerRight.Controls.Count > 0) // { // if (this.controlContainerRight.Controls[0] is XhsProjectSimulationPropertyCtrl) // { // return true; // } // } // } // return false; // } //} ////显示属性控件 //private void ShowPropertyCtrl() //{ // if (IsPropertyCtrlVisible) // { // return; // } // var propertyCtrl = GetPropertyCtrl(); // this.controlContainerRight.Controls.Clear(); // this.controlContainerRight.Controls.Add(propertyCtrl); // this.docPnlRight.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Visible; // this.docPnlRight.Text = "属性"; // this.docPnlRight.Width = 300; //} private void barBtnWorkingList_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { } #endregion @@ -2936,20 +2860,217 @@ private HydroWorkingTreeCtrl _workingCtrl = null; //获取工况控件 private HydroWorkingTreeCtrl GetWorkingCtrl() private async Task<HydroWorkingTreeCtrl> GetWorkingCtrl() { if (_workingCtrl == null) { _workingCtrl = new HydroWorkingTreeCtrl(); _workingCtrl.Dock = DockStyle.Fill; var allWorkingList = await GetWorkingList(); _workingCtrl.SetBindingData(allWorkingList); _workingCtrl.FocusedChangedEvent += (vmo) => { }; } return _workingCtrl; } //工况控件是否可见 private bool IsWorkingCtrlVisible { get { if (this.docPnlRight.Visibility == DevExpress.XtraBars.Docking.DockVisibility.Visible) { if (this.controlContainerRight.Controls.Count > 0) { if (this.controlContainerRight.Controls[0] is HydroWorkingTreeCtrl) { return true; } } } return false; } } //显示工况控件 private async void ShowWorkingCtrl() { if (IsWorkingCtrlVisible) { return; } var workingCtrl = await GetWorkingCtrl(); this.controlContainerRight.Controls.Clear(); this.controlContainerRight.Controls.Add(workingCtrl); this.docPnlRight.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Visible; this.docPnlRight.Text = "工况"; this.docPnlRight.Width = 300; } //隐藏工况控件 private void HideWorkingCtrl() { if (IsWorkingCtrlVisible) { this.docPnlRight.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden; } } //更新工况控件 private async void UpdateWorkingCtrl() { var workingCtrl = await GetWorkingCtrl(); var allWorkingList = await GetWorkingList(); workingCtrl.SetBindingData(allWorkingList); } //工况列表点击 private void barBtnWorkingList_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { ShowWorkingCtrl(); } #endregion #region 工况评估 private void barBtnWorkingEvaluation_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { XtraMessageBox.Show("正在开发中,敬请期待!"); } #endregion #region 工况并联 //并联分析 private void barBtnAnaly_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { if (_hydroInfo == null) { return; } if (_hydroInfo.Pumps == null || _hydroInfo.Pumps.Count < 1) { return; } var allCalcuResultList = GetCalcuVisualResultList(Yw.EPAnet.CalcuMode.MinorLoss, false); var vmList = new List<XhsSinglePumpViewModel>(); foreach (var pump in _hydroInfo.Pumps) { if (!pump.RatedN.HasValue) { continue; } var qh = _hydroInfo.Curves?.Find(t => t.Code == pump.CurveQH)?.CurveData; var qe = _hydroInfo.Curves?.Find(t => t.Code == pump.CurveQE)?.CurveData; var qp = _hydroInfo.Curves?.Find(t => t.Code == pump.CurveQP)?.CurveData; if (qh == null) { continue; } var qhPtList = qh.Select(x => new XhsSplinePointViewModel(x.X, x.Y)).ToList(); var qePtList = qe?.Select(x => new XhsSplinePointViewModel(x.X, x.Y)).ToList(); var qpPtList = qp?.Select(x => new XhsSplinePointViewModel(x.X, x.Y)).ToList(); var vm = new XhsSinglePumpViewModel(); vmList.Add(vm); vm.ID = pump.ID; vm.Name = pump.Name; vm.Code = pump.Code; vm.IsBp = true; vm.RunStatus = pump.LinkStatus == Yw.Hydro.LinkStatus.Open; vm.RatedHz = pump.RatedHz; vm.CurrentHz = Math.Round(pump.RatedHz * pump.SpeedRatio, 1); vm.RatedSpeed = pump.RatedN.Value; vm.CurrentSpeed = Math.Round(pump.RatedN.Value * pump.SpeedRatio); vm.CurveQH = qhPtList; vm.CurveQE = qePtList; vm.CurveQP = qpPtList; if (allCalcuResultList != null && allCalcuResultList.Count > 0) { var calcuResult = allCalcuResultList.Find(x => x.Code == pump.Code) as HydroCalcuLinkResult; if (calcuResult != null) { if (calcuResult.CalcuFlow.HasValue) { vm.CalcuQ = Math.Abs(calcuResult.CalcuFlow.Value); } var calcuResultStart = allCalcuResultList.Find(x => x.Code == pump.StartCode) as HydroCalcuNodeResult; var calcuResultEnd = allCalcuResultList.Find(x => x.Code == pump.EndCode) as HydroCalcuNodeResult; if (calcuResultStart != null && calcuResultEnd != null) { if (calcuResultStart.CalcuHead.HasValue && calcuResultEnd.CalcuHead.HasValue) { vm.CalcuH = Math.Round(Math.Abs(calcuResultStart.CalcuHead.Value - calcuResultEnd.CalcuHead.Value), 4); } } } } } var dlg = new PumpParallelAnalyDlg(); dlg.SetBindingData(vmList); dlg.ReloadDataEvent += (list) => { list?.ForEach(x => { var pump = _hydroInfo.Pumps?.Find(t => t.Code == x.Code); if (pump != null) { pump.LinkStatus = x.RunStatus ? Yw.Hydro.PumpStatus.Open : Yw.Hydro.PumpStatus.Closed; pump.SpeedRatio = Math.Round(x.CurrentHz / pump.RatedHz, 1); } }); ShowSelectedProperty(); return true; }; dlg.ShowDialog(); } #endregion #region 工况能效 private void barBtnWorkingPower_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { XtraMessageBox.Show("正在开发中,敬请期待!"); } #endregion #region 损失曲线 private void barBtnWorkingLossCurve_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { XtraMessageBox.Show("正在开发中,敬请期待!"); } #endregion #region 损失比例 private void barBtnWorkingLossScale_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { XtraMessageBox.Show("正在开发中,敬请期待!"); } #endregion #region 综合分析 private void barBtnWorkingAnaly_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { XtraMessageBox.Show("正在开发中,敬请期待!"); } #endregion WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.resx
@@ -348,7 +348,7 @@ UzE4LjcsMTYsMTcsMTZ6IiBjbGFzcz0iQmx1ZSIgLz4NCiAgPC9nPg0KPC9zdmc+Cw== </value> </data> <data name="barBtnCurrentWorkingParallelAnalysis.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="barBtnWorkingParallel.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64"> <value> AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40 LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl @@ -534,7 +534,7 @@ PSJSZWQiIC8+DQogIDwvZz4NCjwvc3ZnPgs= </value> </data> <data name="barBtnCurrentWorkingLossCurve.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="barBtnWorkingLossCurve.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64"> <value> AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40 LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl @@ -552,7 +552,7 @@ IGNsYXNzPSJCbHVlIiAvPg0KICA8L2c+DQo8L3N2Zz4L </value> </data> <data name="barBtnCurrentWorkingLossScale.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="barBtnWorkingLossScale.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64"> <value> AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40 LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl @@ -573,7 +573,7 @@ IC8+DQogIDwvZz4NCjwvc3ZnPgs= </value> </data> <data name="barBtnCurrentWorkingPowerAnalysis.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="barBtnWorkingPower.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64"> <value> AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40 LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl @@ -620,7 +620,7 @@ MjQsOS42LDIzLjYsMTAsMjMsMTB6IiBjbGFzcz0iR3JlZW4iIC8+DQogIDwvZz4NCjwvc3ZnPgs= </value> </data> <data name="barBtnCurrentWorkingMultiAnalysis.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="barBtnWorkingAnaly.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64"> <value> AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40 LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl @@ -713,6 +713,32 @@ LDNzMy0xLjMsMy0zUzYuNywyMiw1LDIyeiIgY2xhc3M9IkJsdWUiIC8+DQogIDwvZz4NCjwvc3ZnPgs= </value> </data> <data name="barBtnWorkingEvaluation.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64"> <value> AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40 LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAGYEAAAC77u/ PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5Z ZWxsb3d7ZmlsbDojRkZCMTE1O30KCS5SZWR7ZmlsbDojRDExQzFDO30KCS5HcmVlbntmaWxsOiMwMzlD MjM7fQoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh Y2l0eTowLjU7fQoJLnN0MXtvcGFjaXR5OjAuNzU7fQoJLnN0MntkaXNwbGF5Om5vbmU7fQoJLnN0M3tk aXNwbGF5OmlubGluZTtmaWxsOiNGRkIxMTU7fQoJLnN0NHtkaXNwbGF5OmlubGluZTt9Cgkuc3Q1e2Rp c3BsYXk6aW5saW5lO29wYWNpdHk6MC43NTt9Cgkuc3Q2e2Rpc3BsYXk6aW5saW5lO29wYWNpdHk6MC41 O30KCS5zdDd7ZGlzcGxheTppbmxpbmU7ZmlsbDojMDM5QzIzO30KCS5zdDh7ZGlzcGxheTppbmxpbmU7 ZmlsbDojRDExQzFDO30KCS5zdDl7ZGlzcGxheTppbmxpbmU7ZmlsbDojMTE3N0Q3O30KCS5zdDEwe2Rp c3BsYXk6aW5saW5lO2ZpbGw6I0ZGRkZGRjt9Cjwvc3R5bGU+DQogIDxnIGlkPSJLUElfeDVGX1Njb3Jl Y2FyZCI+DQogICAgPGcgY2xhc3M9InN0MSI+DQogICAgICA8cGF0aCBkPSJNOCwxMmgxMnYySDhWMTJ6 IE04LDE4aDkuMmgxLjdIMjB2LTJIOFYxOHogTTgsMTBoMTJWOEg4VjEweiIgY2xhc3M9IkJsYWNrIiAv Pg0KICAgIDwvZz4NCiAgICA8cGF0aCBkPSJNMTEuMiwyNEg0VjJoMjB2MTcuMmwyLTJWMWMwLTAuNS0w LjUtMS0xLTFIM0MyLjUsMCwyLDAuNSwyLDF2MjRjMCwwLjUsMC41LDEsMSwxaDYuMkwxMS4yLDI0eiIg Y2xhc3M9IkJsYWNrIiAvPg0KICAgIDxwb2x5Z29uIHBvaW50cz0iOCwzMCAxOCwyMCAyMiwyNCAzMiwx NCAzMiwzMCAgIiBjbGFzcz0iR3JlZW4iIC8+DQogIDwvZz4NCjwvc3ZnPgs= </value> </data> <metadata name="dockManager1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <value>179, 21</value> </metadata> WinFrmUI/Yw.WinFrmUI.Hydro.Core/10-working/05-tree/HydroWorkingTreeCtrl.Designer.cs
@@ -92,7 +92,7 @@ treeList1.Name = "treeList1"; treeList1.OptionsMenu.EnableNodeMenu = false; treeList1.OptionsSelection.EnableAppearanceFocusedCell = false; treeList1.OptionsView.FocusRectStyle = DevExpress.XtraTreeList.DrawFocusRectStyle.None; treeList1.OptionsView.FocusRectStyle = DrawFocusRectStyle.None; treeList1.ParentFieldName = "ParentId"; treeList1.RepositoryItems.AddRange(new DevExpress.XtraEditors.Repository.RepositoryItem[] { repositoryItemButtonEdit1 }); treeList1.Size = new Size(235, 611); @@ -142,6 +142,7 @@ barBtnExpandAll.Id = 0; barBtnExpandAll.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnExpandAll.ImageOptions.SvgImage"); barBtnExpandAll.Name = "barBtnExpandAll"; barBtnExpandAll.Visibility = DevExpress.XtraBars.BarItemVisibility.Never; barBtnExpandAll.ItemClick += barBtnExpandAll_ItemClick; // // barBtnCollpseAll @@ -150,6 +151,7 @@ barBtnCollpseAll.Id = 1; barBtnCollpseAll.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnCollpseAll.ImageOptions.SvgImage"); barBtnCollpseAll.Name = "barBtnCollpseAll"; barBtnCollpseAll.Visibility = DevExpress.XtraBars.BarItemVisibility.Never; barBtnCollpseAll.ItemClick += barBtnCollpseAll_ItemClick; // // barBtnSearchBox @@ -166,6 +168,7 @@ barCkTreeLine.Id = 4; barCkTreeLine.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barCkTreeLine.ImageOptions.SvgImage"); barCkTreeLine.Name = "barCkTreeLine"; barCkTreeLine.Visibility = DevExpress.XtraBars.BarItemVisibility.Never; barCkTreeLine.CheckedChanged += barCkTreeLine_CheckedChanged; // // barDockControlTop @@ -251,7 +254,7 @@ layoutControlItem2.TextSize = new Size(0, 0); layoutControlItem2.TextVisible = false; // // SimpleTreeViewCtrl // HydroWorkingTreeCtrl // AutoScaleDimensions = new SizeF(7F, 14F); AutoScaleMode = AutoScaleMode.Font; @@ -260,7 +263,7 @@ Controls.Add(barDockControlRight); Controls.Add(barDockControlBottom); Controls.Add(barDockControlTop); Name = "SimpleTreeViewCtrl"; Name = "HydroWorkingTreeCtrl"; Size = new Size(235, 660); ((ISupportInitialize)layoutControl1).EndInit(); layoutControl1.ResumeLayout(false); WinFrmUI/Yw.WinFrmUI.Hydro.Core/10-working/05-tree/HydroWorkingTreeCtrl.cs
@@ -1,6 +1,5 @@ using DevExpress.Utils; using DevExpress.Utils.Design; using DevExpress.Utils.Extensions; namespace Yw.WinFrmUI { @@ -19,22 +18,23 @@ /// <summary> /// 聚焦改变事件 /// </summary> public event Action<SimpleTreeViewModel> FocusedChangedEvent; public event Action<HydroWorkingVmo> FocusedChangedEvent; /// <summary> /// 所有绑定列表 /// </summary> private List<SimpleTreeViewModel> _allBindingList = null; private List<HydroWorkingTreeViewModel> _allBindingList = null; /// <summary> /// 绑定数据 /// </summary> public void SetBindingData(List<SimpleTreeViewModel> allList) public void SetBindingData(List<HydroWorkingVmo> allWorkingList) { _allBindingList = new List<SimpleTreeViewModel>(); allList?.ForEach(x => _allBindingList = new List<HydroWorkingTreeViewModel>(); allWorkingList?.ForEach(x => { _allBindingList.Add(x); var vm = new HydroWorkingTreeViewModel(x); _allBindingList.Add(vm); }); this.treeList1.DataSource = _allBindingList; this.treeList1.ForceInitialize(); @@ -138,8 +138,8 @@ //聚焦节点改变 private void treeList1_FocusedNodeChanged(object sender, DevExpress.XtraTreeList.FocusedNodeChangedEventArgs e) { var vm = this.treeList1.GetDataRecordByNode(e.Node) as SimpleTreeViewModel; this.FocusedChangedEvent?.Invoke(vm); var vm = this.treeList1.GetDataRecordByNode(e.Node) as HydroWorkingTreeViewModel; this.FocusedChangedEvent?.Invoke(vm.Vmo); } WinFrmUI/Yw.WinFrmUI.Hydro.Core/10-working/05-tree/HydroWorkingTreeViewModel.cs
@@ -5,6 +5,25 @@ /// </summary> public class HydroWorkingTreeViewModel { /// <summary> /// /// </summary> public HydroWorkingTreeViewModel() { } /// <summary> /// /// </summary> public HydroWorkingTreeViewModel(HydroWorkingVmo rhs) { this.Id = rhs.ID.ToString(); this.ParentId = string.Empty; this.Name = rhs.Name; this.ImageIndex = -1; this.Checked = false; this.SortCode = rhs.SortCode; this.Description = rhs.Description; this.Vmo = rhs; } /// <summary> /// Id