From 82dfff29bca77a1e11459fb7a69f729a09f4345c Mon Sep 17 00:00:00 2001
From: lixiaojun <1287241240@qq.com>
Date: 星期五, 18 十月 2024 15:05:05 +0800
Subject: [PATCH] 计算优化,标注优化

---
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/02-bimface/XhsProjectSimulationBimfaceCtrl.cs          |  133 ++----
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.resx        |   82 +++
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/00-core/05-mark/ePipeMarkType.cs                                         |    4 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/11-prefix/00-core/SetHydroCalcuPrefixCtrl.cs                             |   19 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/09-mark/SetHydroMarkDlg.Designer.cs                                      |    4 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/11-prefix/99-failed/HydroCalcuFailedCtrl.cs                              |   38 +
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/11-prefix/99-failed/HydroCalcuFailedViewModel.cs                         |   36 +
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.cs          |  350 +++++++----------
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/Yw.WinFrmUI.Hydro.Core.csproj                                            |    3 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.Designer.cs |  148 ++++---
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/09-mark/SetHydroMarkCtrl.Designer.cs                                     |   20 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/09-mark/SetHydroMarkCtrl.cs                                              |   13 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/09-mark/SetHydroMarkPureCtrl.cs                                          |   30 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/Properties/DataSources/Yw.WinFrmUI.HydroCalcuFailedViewModel.datasource  |   10 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/11-prefix/99-failed/HydroCalcuFailedCtrl.Designer.cs                     |  103 +++++
 WinFrmUI/Yw.WinFrmUI.Bimface.Core/01-interop/01-interop3d/IBimfaceInterop3dContainer.cs                  |    6 
 WinFrmUI/Yw.WinFrmUI.Bimface.Core/01-interop/01-interop3d/BimfaceInterop3dContainer.cs                   |   20 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/11-prefix/00-core/SetHydroCalcuPrefixCtrl.Designer.cs                    |   47 +
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/11-prefix/99-failed/HydroCalcuFailedCtrl.resx                            |  123 ++++++
 19 files changed, 754 insertions(+), 435 deletions(-)

diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/02-bimface/XhsProjectSimulationBimfaceCtrl.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/02-bimface/XhsProjectSimulationBimfaceCtrl.cs
index ef5424b..e689503 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/02-bimface/XhsProjectSimulationBimfaceCtrl.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/02-bimface/XhsProjectSimulationBimfaceCtrl.cs
@@ -388,30 +388,71 @@
 
         #endregion
 
-        #region 鑷畾涔夋爣绛�
+        #region 涓氬姟璁$畻鑷畾涔夋爣绛�
 
         /// <summary>
-        /// 璁剧疆鑷畾涔夋爣绛�
+        /// 鏄剧ず涓氬姟璁$畻鑷畾涔夋爣绛�
         /// </summary>
-        public async Task SetCustomLabels(List<CustomLabel> obj)
+        public async Task SetLogicCalcuCustomLabels(CalcuResult calcuResult)
         {
-            if (_bimfaceInteropContainer == null)
+            var hydroInfo = _hydroInfoFunc?.Invoke();
+            if (hydroInfo == null)
             {
                 return;
             }
-            await _bimfaceInteropContainer.SetCustomLabels(obj);
+            if (calcuResult == null)
+            {
+                return;
+            }
+            if (!calcuResult.Succeed)
+            {
+                await _bimfaceInteropContainer?.ClearLogicCalcuCustomLabels();
+                return;
+            }
+            var obj = new List<CustomLabel>();
+            var allParterList = hydroInfo.GetAllParters();
+            allParterList?.ForEach(x =>
+            {
+                if (x is Yw.Model.HydroPumpInfo pump)
+                {
+                    var hz = pump.RatedHz * pump.SpeedRatio;
+                    var calcuPump = calcuResult.LinkList.Find(x => x.Id == pump.Code);
+                    var calcuPumpStart = calcuResult.NodeList.Find(x => x.Id == pump.StartCode);
+                    var calcuPumpEnd = calcuResult.NodeList.Find(x => x.Id == pump.EndCode);
+                    var pumpCustomLabel = new CustomLabel();
+                    pumpCustomLabel.Id = pump.Code;
+                    pumpCustomLabel.Data = new List<CustomLabelItem>()
+                    {
+                        new CustomLabelItem(){ Name="鐘舵��",Value=HydroLinkStatusHelper.GetStatusName(pump.LinkStatus),Unit=string.Empty},
+                        new CustomLabelItem(){ Name="棰戠巼",Value=hz.ToString(),Unit=string.Empty},
+                        new CustomLabelItem(){ Name="娴侀噺",Value=Math.Round(calcuPump.Flow,1).ToString(),Unit="m鲁/h"},
+                        new CustomLabelItem(){ Name="杩涘彛鍘嬪姏",Value=Math.Round(calcuPumpStart.Head,4).ToString(),Unit="m"},
+                        new CustomLabelItem(){ Name="鍑哄彛鍘嬪姏",Value=Math.Round(calcuPumpEnd.Head,4).ToString(),Unit="m"},
+                    };
+                    obj.Add(pumpCustomLabel);
+                }
+                else if (x is Yw.Model.HydroEmitterInfo emitter)
+                {
+                    var calcuEmitter = calcuResult.NodeList.Find(x => x.Id == emitter.Code);
+                    var emitterCustomLabel = new CustomLabel();
+                    emitterCustomLabel.Id = emitter.Code;
+                    emitterCustomLabel.Data = new List<CustomLabelItem>()
+                    {
+                        new CustomLabelItem(){ Name="娴侀噺",Value=Math.Round(calcuEmitter.Demand,1).ToString(),Unit="m鲁/h"},
+                        new CustomLabelItem(){ Name="鍘嬪姏",Value=Math.Round(calcuEmitter.Head,4).ToString(),Unit="m"}
+                    };
+                    obj.Add(emitterCustomLabel);
+                }
+            });
+            await _bimfaceInteropContainer?.SetLogicCalcuCustomLabels(obj);
         }
 
         /// <summary>
-        /// 娓呴櫎鑷畾涔夋爣绛�
+        /// 娓呴櫎涓氬姟璁$畻鑷畾涔夋爣绛�
         /// </summary>
-        public async Task ClearCustomLabels()
+        public async Task ClearLogicCalcuCustomLabels()
         {
-            if (_bimfaceInteropContainer == null)
-            {
-                return;
-            }
-            await _bimfaceInteropContainer.ClearCustomLabels();
+            await _bimfaceInteropContainer?.ClearLogicCalcuCustomLabels();
         }
 
         #endregion
@@ -538,76 +579,8 @@
 
         #endregion
 
-        #region 鑷畾涔夋爣绛�
-
-        /// <summary>
-        /// 鏄剧ず璁$畻鑷畾涔夋爣绛�
-        /// </summary>
-        public async Task ShowCalcuCustomLabels(CalcuResult calcuResult)
-        {
-            var hydroInfo = _hydroInfoFunc?.Invoke();
-            if (hydroInfo == null)
-            {
-                return;
-            }
-            if (calcuResult == null)
-            {
-                return;
-            }
-            if (!calcuResult.Succeed)
-            {
-                await _bimfaceInteropContainer.ClearCustomLabels();
-                return;
-            }
-            var obj = new List<CustomLabel>();
-            var allParterList = hydroInfo.GetAllParters();
-            allParterList?.ForEach(x =>
-            {
-                if (x is Yw.Model.HydroPumpInfo pump)
-                {
-                    var hz = pump.RatedHz * pump.SpeedRatio;
-                    var calcuPump = calcuResult.LinkList.Find(x => x.Id == pump.Code);
-                    var calcuPumpStart = calcuResult.NodeList.Find(x => x.Id == pump.StartCode);
-                    var calcuPumpEnd = calcuResult.NodeList.Find(x => x.Id == pump.EndCode);
-                    var pumpCustomLabel = new CustomLabel();
-                    pumpCustomLabel.Id = pump.Code;
-                    pumpCustomLabel.Data = new List<CustomLabelItem>()
-                    {
-                        new CustomLabelItem(){ Name="鐘舵��",Value=HydroLinkStatusHelper.GetStatusName(pump.LinkStatus),Unit=string.Empty},
-                        new CustomLabelItem(){ Name="棰戠巼",Value=hz.ToString(),Unit=string.Empty},
-                        new CustomLabelItem(){ Name="娴侀噺",Value=Math.Round(calcuPump.Flow,1).ToString(),Unit="m鲁/h"},
-                        new CustomLabelItem(){ Name="杩涘彛鍘嬪姏",Value=Math.Round(calcuPumpStart.Head,4).ToString(),Unit="m"},
-                        new CustomLabelItem(){ Name="鍑哄彛鍘嬪姏",Value=Math.Round(calcuPumpEnd.Head,4).ToString(),Unit="m"},
-                    };
-                    obj.Add(pumpCustomLabel);
-                }
-                else if (x is Yw.Model.HydroEmitterInfo emitter)
-                {
-                    var calcuEmitter = calcuResult.NodeList.Find(x => x.Id == emitter.Code);
-                    var emitterCustomLabel = new CustomLabel();
-                    emitterCustomLabel.Id = emitter.Code;
-                    emitterCustomLabel.Data = new List<CustomLabelItem>()
-                    {
-                        new CustomLabelItem(){ Name="娴侀噺",Value=Math.Round(calcuEmitter.Demand,1).ToString(),Unit="m鲁/h"},
-                        new CustomLabelItem(){ Name="鍘嬪姏",Value=Math.Round(calcuEmitter.Head,4).ToString(),Unit="m"}
-                    };
-                    obj.Add(emitterCustomLabel);
-                }
-            });
-            if (_bimfaceInteropContainer == null)
-            {
-                return;
-            }
-            await _bimfaceInteropContainer.SetCustomLabels(obj);
-        }
-
-        #endregion
-
-        #region 鏍囨敞
 
 
-
-        #endregion
 
         #endregion
 
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.Designer.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.Designer.cs
index b708591..fb08121 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.Designer.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.Designer.cs
@@ -54,9 +54,17 @@
             barBtnAnaly = new DevExpress.XtraBars.BarButtonItem();
             barBtnSearch = new DevExpress.XtraBars.BarButtonItem();
             barBtnMarkSet = new DevExpress.XtraBars.BarButtonItem();
+            barBtnGradingSet = new DevExpress.XtraBars.BarButtonItem();
+            barBtnGradingApply = new DevExpress.XtraBars.BarButtonItem();
+            barBtnGradingCancel = new DevExpress.XtraBars.BarButtonItem();
+            barBtnMarkCancel = new DevExpress.XtraBars.BarButtonItem();
+            barBtnProperty = new DevExpress.XtraBars.BarButtonItem();
+            barBtnRefresh = new DevExpress.XtraBars.BarButtonItem();
             ribbonPage1 = new DevExpress.XtraBars.Ribbon.RibbonPage();
             pageGroupMatching = new DevExpress.XtraBars.Ribbon.RibbonPageGroup();
             pageGroupModel = new DevExpress.XtraBars.Ribbon.RibbonPageGroup();
+            ribbonPageGroup5 = new DevExpress.XtraBars.Ribbon.RibbonPageGroup();
+            ribbonPageGroup1 = new DevExpress.XtraBars.Ribbon.RibbonPageGroup();
             ribbonPageGroup2 = new DevExpress.XtraBars.Ribbon.RibbonPageGroup();
             ribbonPageGroup3 = new DevExpress.XtraBars.Ribbon.RibbonPageGroup();
             ribbonPageGroup4 = new DevExpress.XtraBars.Ribbon.RibbonPageGroup();
@@ -70,12 +78,6 @@
             controlContainerBottom = new DevExpress.XtraBars.Docking.ControlContainer();
             svgImg32 = new DevExpress.Utils.SvgImageCollection(components);
             rmSet = new DevExpress.XtraBars.Ribbon.RadialMenu(components);
-            ribbonPageGroup1 = new DevExpress.XtraBars.Ribbon.RibbonPageGroup();
-            barBtnGradingSet = new DevExpress.XtraBars.BarButtonItem();
-            barBtnGradingApply = new DevExpress.XtraBars.BarButtonItem();
-            barBtnGradingCancel = new DevExpress.XtraBars.BarButtonItem();
-            ribbonPageGroup5 = new DevExpress.XtraBars.Ribbon.RibbonPageGroup();
-            barBtnMarkCancel = new DevExpress.XtraBars.BarButtonItem();
             ((ISupportInitialize)ribbonControl1).BeginInit();
             ((ISupportInitialize)tabPane1).BeginInit();
             tabPane1.SuspendLayout();
@@ -90,16 +92,16 @@
             // 
             ribbonControl1.ExpandCollapseItem.Id = 0;
             ribbonControl1.ItemPanelStyle = DevExpress.XtraBars.Ribbon.RibbonItemPanelStyle.Classic;
-            ribbonControl1.Items.AddRange(new DevExpress.XtraBars.BarItem[] { ribbonControl1.ExpandCollapseItem, barBtnHydroCheck, barBtnHydroCalcu, barBtnHydroExportInp, barBtnSave, barBtnHydroParterList, barBtnShowHide, barBtnMatchingList, barBtnUnMatchingList, barBtnSetList, barBtnSetPumpList, barBtnSetValveList, barBtnSetPipeList, barBtnSetElbowsList, barBtnSetThreelinkList, barBtnFourlinkList, barBtnSetTranslationList, barBtnSetExchangerList, barBtnSetJunctionList, barBtnAnaly, barBtnSearch, barBtnMarkSet, barBtnGradingSet, barBtnGradingApply, barBtnGradingCancel, barBtnMarkCancel });
+            ribbonControl1.Items.AddRange(new DevExpress.XtraBars.BarItem[] { ribbonControl1.ExpandCollapseItem, barBtnHydroCheck, barBtnHydroCalcu, barBtnHydroExportInp, barBtnSave, barBtnHydroParterList, barBtnShowHide, barBtnMatchingList, barBtnUnMatchingList, barBtnSetList, barBtnSetPumpList, barBtnSetValveList, barBtnSetPipeList, barBtnSetElbowsList, barBtnSetThreelinkList, barBtnFourlinkList, barBtnSetTranslationList, barBtnSetExchangerList, barBtnSetJunctionList, barBtnAnaly, barBtnSearch, barBtnMarkSet, barBtnGradingSet, barBtnGradingApply, barBtnGradingCancel, barBtnMarkCancel, barBtnProperty, barBtnRefresh });
             ribbonControl1.Location = new Point(0, 0);
-            ribbonControl1.MaxItemId = 38;
+            ribbonControl1.MaxItemId = 40;
             ribbonControl1.Name = "ribbonControl1";
             ribbonControl1.Pages.AddRange(new DevExpress.XtraBars.Ribbon.RibbonPage[] { ribbonPage1 });
             ribbonControl1.ShowApplicationButton = DevExpress.Utils.DefaultBoolean.False;
             ribbonControl1.ShowPageHeadersMode = DevExpress.XtraBars.Ribbon.ShowPageHeadersMode.ShowOnMultiplePages;
             ribbonControl1.ShowQatLocationSelector = false;
             ribbonControl1.ShowToolbarCustomizeItem = false;
-            ribbonControl1.Size = new Size(1118, 128);
+            ribbonControl1.Size = new Size(1206, 128);
             ribbonControl1.Toolbar.ShowCustomizeItem = false;
             ribbonControl1.ToolbarLocation = DevExpress.XtraBars.Ribbon.RibbonQuickAccessToolbarLocation.Hidden;
             // 
@@ -242,7 +244,7 @@
             // 
             barBtnAnaly.Caption = "缁煎悎鍒嗘瀽";
             barBtnAnaly.Id = 31;
-            barBtnAnaly.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnFeatCurve.ImageOptions.SvgImage");
+            barBtnAnaly.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnAnaly.ImageOptions.SvgImage");
             barBtnAnaly.Name = "barBtnAnaly";
             barBtnAnaly.ItemClick += barBtnFeatCurve_ItemClick;
             // 
@@ -258,9 +260,53 @@
             // 
             barBtnMarkSet.Caption = "搴旂敤";
             barBtnMarkSet.Id = 33;
-            barBtnMarkSet.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnMark.ImageOptions.SvgImage");
+            barBtnMarkSet.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnMarkSet.ImageOptions.SvgImage");
             barBtnMarkSet.Name = "barBtnMarkSet";
-            barBtnMarkSet.ItemClick += barBtnMark_ItemClick;
+            barBtnMarkSet.ItemClick += barBtnMarkSet_ItemClick;
+            // 
+            // barBtnGradingSet
+            // 
+            barBtnGradingSet.Caption = "閰嶇疆";
+            barBtnGradingSet.Id = 34;
+            barBtnGradingSet.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnGradingSet.ImageOptions.SvgImage");
+            barBtnGradingSet.Name = "barBtnGradingSet";
+            // 
+            // barBtnGradingApply
+            // 
+            barBtnGradingApply.Caption = "搴旂敤";
+            barBtnGradingApply.Id = 35;
+            barBtnGradingApply.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnGradingApply.ImageOptions.SvgImage");
+            barBtnGradingApply.Name = "barBtnGradingApply";
+            // 
+            // barBtnGradingCancel
+            // 
+            barBtnGradingCancel.Caption = "鍏抽棴";
+            barBtnGradingCancel.Id = 36;
+            barBtnGradingCancel.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnGradingCancel.ImageOptions.SvgImage");
+            barBtnGradingCancel.Name = "barBtnGradingCancel";
+            // 
+            // barBtnMarkCancel
+            // 
+            barBtnMarkCancel.Caption = "鍙栨秷";
+            barBtnMarkCancel.Id = 37;
+            barBtnMarkCancel.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnMarkCancel.ImageOptions.SvgImage");
+            barBtnMarkCancel.Name = "barBtnMarkCancel";
+            barBtnMarkCancel.ItemClick += barBtnMarkCancel_ItemClick;
+            // 
+            // barBtnProperty
+            // 
+            barBtnProperty.Caption = "灞炴�ч潰鏉�";
+            barBtnProperty.Id = 38;
+            barBtnProperty.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnProperty.ImageOptions.SvgImage");
+            barBtnProperty.Name = "barBtnProperty";
+            barBtnProperty.ItemClick += barBtnProperty_ItemClick;
+            // 
+            // barBtnRefresh
+            // 
+            barBtnRefresh.Caption = "鍒锋柊";
+            barBtnRefresh.Id = 39;
+            barBtnRefresh.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnRefresh.ImageOptions.SvgImage");
+            barBtnRefresh.Name = "barBtnRefresh";
             // 
             // ribbonPage1
             // 
@@ -281,9 +327,24 @@
             pageGroupModel.ItemLinks.Add(barBtnSearch);
             pageGroupModel.ItemLinks.Add(barBtnHydroParterList);
             pageGroupModel.ItemLinks.Add(barBtnSetList);
-            pageGroupModel.ItemLinks.Add(barBtnHydroExportInp);
+            pageGroupModel.ItemLinks.Add(barBtnProperty);
             pageGroupModel.Name = "pageGroupModel";
             pageGroupModel.Text = "妯″瀷";
+            // 
+            // ribbonPageGroup5
+            // 
+            ribbonPageGroup5.ItemLinks.Add(barBtnMarkSet);
+            ribbonPageGroup5.ItemLinks.Add(barBtnMarkCancel);
+            ribbonPageGroup5.Name = "ribbonPageGroup5";
+            ribbonPageGroup5.Text = "鏍囨敞";
+            // 
+            // ribbonPageGroup1
+            // 
+            ribbonPageGroup1.ItemLinks.Add(barBtnGradingSet);
+            ribbonPageGroup1.ItemLinks.Add(barBtnGradingApply);
+            ribbonPageGroup1.ItemLinks.Add(barBtnGradingCancel);
+            ribbonPageGroup1.Name = "ribbonPageGroup1";
+            ribbonPageGroup1.Text = "棰滆壊鍒嗙骇";
             // 
             // ribbonPageGroup2
             // 
@@ -296,6 +357,8 @@
             // ribbonPageGroup3
             // 
             ribbonPageGroup3.ItemLinks.Add(barBtnSave);
+            ribbonPageGroup3.ItemLinks.Add(barBtnHydroExportInp);
+            ribbonPageGroup3.ItemLinks.Add(barBtnRefresh);
             ribbonPageGroup3.Name = "ribbonPageGroup3";
             ribbonPageGroup3.Text = "鏇村...";
             // 
@@ -312,9 +375,9 @@
             tabPane1.Location = new Point(0, 128);
             tabPane1.Name = "tabPane1";
             tabPane1.Pages.AddRange(new DevExpress.XtraBars.Navigation.NavigationPageBase[] { tabPageBimface, tabPageQ3d });
-            tabPane1.RegularSize = new Size(843, 407);
+            tabPane1.RegularSize = new Size(931, 407);
             tabPane1.SelectedPage = tabPageBimface;
-            tabPane1.Size = new Size(843, 407);
+            tabPane1.Size = new Size(931, 407);
             tabPane1.TabIndex = 1;
             tabPane1.Text = "tabPane1";
             // 
@@ -322,7 +385,7 @@
             // 
             tabPageBimface.Caption = "涓夌淮妯″瀷";
             tabPageBimface.Name = "tabPageBimface";
-            tabPageBimface.Size = new Size(843, 374);
+            tabPageBimface.Size = new Size(931, 374);
             // 
             // tabPageQ3d
             // 
@@ -341,7 +404,7 @@
             docPnlRight.Controls.Add(controlContainerRight);
             docPnlRight.Dock = DevExpress.XtraBars.Docking.DockingStyle.Right;
             docPnlRight.ID = new Guid("cffe2560-3445-4488-83cf-b9e4b936ff18");
-            docPnlRight.Location = new Point(843, 128);
+            docPnlRight.Location = new Point(931, 128);
             docPnlRight.Name = "docPnlRight";
             docPnlRight.OriginalSize = new Size(275, 200);
             docPnlRight.Size = new Size(275, 572);
@@ -362,14 +425,14 @@
             docPnlBottom.Location = new Point(0, 535);
             docPnlBottom.Name = "docPnlBottom";
             docPnlBottom.OriginalSize = new Size(200, 165);
-            docPnlBottom.Size = new Size(843, 165);
+            docPnlBottom.Size = new Size(931, 165);
             docPnlBottom.Text = "搴曢儴鍔熻兘闈㈡澘";
             // 
             // controlContainerBottom
             // 
             controlContainerBottom.Location = new Point(3, 27);
             controlContainerBottom.Name = "controlContainerBottom";
-            controlContainerBottom.Size = new Size(837, 135);
+            controlContainerBottom.Size = new Size(925, 135);
             controlContainerBottom.TabIndex = 0;
             // 
             // svgImg32
@@ -393,49 +456,6 @@
             rmSet.Name = "rmSet";
             rmSet.Ribbon = ribbonControl1;
             // 
-            // ribbonPageGroup1
-            // 
-            ribbonPageGroup1.ItemLinks.Add(barBtnGradingSet);
-            ribbonPageGroup1.ItemLinks.Add(barBtnGradingApply);
-            ribbonPageGroup1.ItemLinks.Add(barBtnGradingCancel);
-            ribbonPageGroup1.Name = "ribbonPageGroup1";
-            ribbonPageGroup1.Text = "棰滆壊鍒嗙骇";
-            // 
-            // barBtnGradingSet
-            // 
-            barBtnGradingSet.Caption = "閰嶇疆";
-            barBtnGradingSet.Id = 34;
-            barBtnGradingSet.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnGradingSet.ImageOptions.SvgImage");
-            barBtnGradingSet.Name = "barBtnGradingSet";
-            // 
-            // barBtnGradingApply
-            // 
-            barBtnGradingApply.Caption = "搴旂敤";
-            barBtnGradingApply.Id = 35;
-            barBtnGradingApply.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnGradingApply.ImageOptions.SvgImage");
-            barBtnGradingApply.Name = "barBtnGradingApply";
-            // 
-            // barBtnGradingCancel
-            // 
-            barBtnGradingCancel.Caption = "鍏抽棴";
-            barBtnGradingCancel.Id = 36;
-            barBtnGradingCancel.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnGradingCancel.ImageOptions.SvgImage");
-            barBtnGradingCancel.Name = "barBtnGradingCancel";
-            // 
-            // ribbonPageGroup5
-            // 
-            ribbonPageGroup5.ItemLinks.Add(barBtnMarkSet);
-            ribbonPageGroup5.ItemLinks.Add(barBtnMarkCancel);
-            ribbonPageGroup5.Name = "ribbonPageGroup5";
-            ribbonPageGroup5.Text = "鏍囨敞";
-            // 
-            // barBtnMarkCancel
-            // 
-            barBtnMarkCancel.Caption = "鍙栨秷";
-            barBtnMarkCancel.Id = 37;
-            barBtnMarkCancel.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnMarkCancel.ImageOptions.SvgImage");
-            barBtnMarkCancel.Name = "barBtnMarkCancel";
-            // 
             // XhsProjectSimulationCorePage
             // 
             Appearance.BackColor = SystemColors.Control;
@@ -448,7 +468,7 @@
             Controls.Add(ribbonControl1);
             Margin = new Padding(2);
             Name = "XhsProjectSimulationCorePage";
-            Size = new Size(1118, 700);
+            Size = new Size(1206, 700);
             ((ISupportInitialize)ribbonControl1).EndInit();
             ((ISupportInitialize)tabPane1).EndInit();
             tabPane1.ResumeLayout(false);
@@ -507,5 +527,7 @@
         private DevExpress.XtraBars.BarButtonItem barBtnGradingCancel;
         private DevExpress.XtraBars.Ribbon.RibbonPageGroup ribbonPageGroup5;
         private DevExpress.XtraBars.BarButtonItem barBtnMarkCancel;
+        private DevExpress.XtraBars.BarButtonItem barBtnProperty;
+        private DevExpress.XtraBars.BarButtonItem barBtnRefresh;
     }
 }
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 b1130a6..64fb679 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,6 @@
 锘縢lobal using Yw.EPAnet;
+using DevExpress.Mvvm.Native;
+using DevExpress.Utils.DirectXPaint;
 using Yw.WinFrmUI.Bimface;
 using Yw.WinFrmUI.Hydro;
 
@@ -12,6 +14,7 @@
             this.PageTitle.Caption = "姘村姏妯℃嫙";
             this.PageTitle.HeaderSvgImage = this.svgImg32[0];
             this.docPnlBottom.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden;
+            this.docPnlRight.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden;
         }
 
         private HStation.Vmo.XhsProjectVmo _project = null;//椤圭洰
@@ -70,10 +73,6 @@
             this.tabPageQ3d.Controls.Clear();
             this.tabPageQ3d.Controls.Add(q3dCtrl);
             q3dCtrl.InitialData(() => _hydroInfo);
-            var propertyCtrl = GetPropertyCtrl();
-            this.controlContainerRight.Controls.Clear();
-            this.controlContainerRight.Controls.Add(propertyCtrl);
-            propertyCtrl.InitialData(() => _hydroInfo);
         }
 
         #region Bimface
@@ -208,6 +207,9 @@
 
         #region 灞炴�ч潰鏉�
 
+        //灞炴�ф帶浠�
+        private XhsProjectSimulationPropertyCtrl _propertyCtrl = null;
+
         //鑾峰彇灞炴�ф帶浠�
         private XhsProjectSimulationPropertyCtrl GetPropertyCtrl()
         {
@@ -215,13 +217,80 @@
             {
                 _propertyCtrl = new XhsProjectSimulationPropertyCtrl();
                 _propertyCtrl.Dock = DockStyle.Fill;
+                _propertyCtrl.InitialData(() => _hydroInfo);
             }
             return _propertyCtrl;
         }
 
-        private XhsProjectSimulationPropertyCtrl _propertyCtrl = null;//灞炴�ф帶浠�
+        //鏄剧ず灞炴�ч潰鏉�
+        private void ShowPropertyCtrl()
+        {
+            var propertyCtrl = GetPropertyCtrl();
+            this.controlContainerRight.Controls.Clear();
+            this.controlContainerRight.Controls.Add(propertyCtrl);
+            this.docPnlRight.Text = "灞炴��";
+            this.docPnlRight.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Visible;
+            this.docPnlRight.Width = 270;
+        }
 
-        #endregion 灞炴�ч潰鏉�
+        //灞炴�ч潰鏉挎寜閽�
+        private void barBtnProperty_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
+        {
+            ShowPropertyCtrl();
+        }
+
+        //鏄剧ず灞炴��
+        private void ShowProperty()
+        {
+            if (_hydroInfo == null)
+            {
+                return;
+            }
+            if (_parter == null)
+            {
+                _propertyCtrl?.SelectParter(null);
+                return;
+            }
+
+            _propertyCtrl?.SelectParter(_parter.Code);
+            if (_calcuResult != null)
+            {
+                if (_calcuResult.Succeed)
+                {
+                    var allCalcuParterList = _calcuResult.GetParterList();
+                    var calcuParter = allCalcuParterList.Find(x => x.Id == _parter.Code);
+                    if (calcuParter != null)
+                    {
+                        IHydroCalcuResult calcuProperty = null;
+                        if (calcuParter is Yw.EPAnet.CalcuNode calcuNode)
+                        {
+                            var calcuNodeProperty = new Yw.WinFrmUI.HydroCalcuNodeResult();
+                            calcuNodeProperty.Code = _parter.Code;
+                            calcuNodeProperty.CalcuPress = calcuNode.Press;
+                            calcuNodeProperty.CalcuDemand = calcuNode.Demand;
+                            calcuNodeProperty.CalcuHead = calcuNode.Head;
+                            calcuProperty = calcuNodeProperty;
+                        }
+                        else if (calcuParter is Yw.EPAnet.CalcuLink calcuLink)
+                        {
+                            var calcuLinkProperty = new Yw.WinFrmUI.HydroCalcuLinkResult();
+                            calcuLinkProperty.Code = _parter.Code;
+                            calcuLinkProperty.CalcuHeadLoss = calcuLink.Headloss;
+                            calcuLinkProperty.CalcuFlow = calcuLink.Flow;
+                            calcuLinkProperty.CalcuVelocity = calcuLink.Velocity;
+                            calcuProperty = calcuLinkProperty;
+                        }
+
+                        if (calcuProperty != null)
+                        {
+                            _propertyCtrl?.UpdateCalcuProperty(calcuProperty);
+                        }
+                    }
+                }
+            }
+        }
+
+        #endregion
 
         #region 鑷姩鍖归厤
 
@@ -372,14 +441,17 @@
 
         #region 姘村姏鏍¢獙
 
-        //鑾峰彇鏍¢獙缁撴灉鎺т欢
-        private XhsProjectSimulationHydroCheckResultCtrl GetCheckResultCtrl()
+        //鏍¢獙鎺т欢
+        private XhsProjectSimulationHydroCheckResultCtrl _checkCtrl = null;
+
+        //鑾峰彇鏍¢獙鎺т欢
+        private XhsProjectSimulationHydroCheckResultCtrl GetCheckCtrl()
         {
-            if (_checkResultCtrl == null)
+            if (_checkCtrl == null)
             {
-                _checkResultCtrl = new XhsProjectSimulationHydroCheckResultCtrl();
-                _checkResultCtrl.Dock = DockStyle.Fill;
-                _checkResultCtrl.HydroClickEvent += async (code) =>
+                _checkCtrl = new XhsProjectSimulationHydroCheckResultCtrl();
+                _checkCtrl.Dock = DockStyle.Fill;
+                _checkCtrl.HydroClickEvent += async (code) =>
                 {
                     if (_hydroInfo == null)
                     {
@@ -404,11 +476,24 @@
                     SetBimfaceLinkColor();
                 };
             }
-            return _checkResultCtrl;
+            return _checkCtrl;
         }
 
-        //鏍¢獙缁撴灉鎺т欢
-        private XhsProjectSimulationHydroCheckResultCtrl _checkResultCtrl = null;
+        //鏄剧ず鏍¢獙鎺т欢
+        private void ShowCheckCtrl()
+        {
+            if (_checkResult == null)
+            {
+                return;
+            }
+            var checkCtrl = GetCheckCtrl();
+            checkCtrl.SetBindingData(_checkResult);
+            this.controlContainerBottom.Controls.Clear();
+            this.controlContainerBottom.Controls.Add(checkCtrl);
+            this.docPnlBottom.Text = "鏍¢獙缁撴灉";
+            this.docPnlBottom.Height = 350;
+            this.docPnlBottom.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Visible;
+        }
 
         //姘村姏楠岃瘉
         private void barBtnHydroCheck_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
@@ -418,13 +503,7 @@
                 return;
             }
             _checkResult = _hydroInfo.Check();
-            this.controlContainerBottom.Controls.Clear();
-            var checkResultCtrl = GetCheckResultCtrl();
-            checkResultCtrl.SetBindingData(_checkResult);
-            this.controlContainerBottom.Controls.Add(checkResultCtrl);
-            this.docPnlBottom.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Visible;
-            this.docPnlBottom.Text = "鏍¢獙缁撴灉";
-            this.docPnlBottom.Height = 350;
+            ShowCheckCtrl();
         }
 
         #endregion 姘村姏鏍¢獙
@@ -518,62 +597,6 @@
 
         #endregion INP瀵煎嚭
 
-        #region 涓氬姟鏂规硶
-
-        //鏄剧ず灞炴��
-        private void ShowProperty()
-        {
-            if (_hydroInfo == null)
-            {
-                return;
-            }
-
-            if (_parter == null)
-            {
-                _propertyCtrl?.SelectParter(null);
-                return;
-            }
-
-            _propertyCtrl?.SelectParter(_parter.Code);
-            if (_calcuResult != null)
-            {
-                if (_calcuResult.Succeed)
-                {
-                    var allCalcuParterList = _calcuResult.GetParterList();
-                    var calcuParter = allCalcuParterList.Find(x => x.Id == _parter.Code);
-                    if (calcuParter != null)
-                    {
-                        IHydroCalcuResult calcuProperty = null;
-                        if (calcuParter is Yw.EPAnet.CalcuNode calcuNode)
-                        {
-                            var calcuNodeProperty = new Yw.WinFrmUI.HydroCalcuNodeResult();
-                            calcuNodeProperty.Code = _parter.Code;
-                            calcuNodeProperty.CalcuPress = calcuNode.Press;
-                            calcuNodeProperty.CalcuDemand = calcuNode.Demand;
-                            calcuNodeProperty.CalcuHead = calcuNode.Head;
-                            calcuProperty = calcuNodeProperty;
-                        }
-                        else if (calcuParter is Yw.EPAnet.CalcuLink calcuLink)
-                        {
-                            var calcuLinkProperty = new Yw.WinFrmUI.HydroCalcuLinkResult();
-                            calcuLinkProperty.Code = _parter.Code;
-                            calcuLinkProperty.CalcuHeadLoss = calcuLink.Headloss;
-                            calcuLinkProperty.CalcuFlow = calcuLink.Flow;
-                            calcuLinkProperty.CalcuVelocity = calcuLink.Velocity;
-                            calcuProperty = calcuLinkProperty;
-                        }
-
-                        if (calcuProperty != null)
-                        {
-                            _propertyCtrl?.UpdateCalcuProperty(calcuProperty);
-                        }
-                    }
-                }
-            }
-        }
-
-        #endregion 涓氬姟鏂规硶
-
         #region 閰嶇疆
 
         //鏄剧ずRadialMenu
@@ -653,163 +676,59 @@
 
         #region 姘村姏璁$畻
 
+        //璁$畻鎺т欢
+        private SetHydroCalcuPrefixCtrl _calcuCtrl = null;
+
         //鑾峰彇璁$畻鎺т欢
-        private XhsProjectSimulationCalcuCtrl GetCalcuCtrl()
+        private SetHydroCalcuPrefixCtrl GetCalcuCtrl()
         {
             if (_calcuCtrl == null)
             {
-                _calcuCtrl = new XhsProjectSimulationCalcuCtrl();
+                _calcuCtrl = new SetHydroCalcuPrefixCtrl();
                 _calcuCtrl.Dock = DockStyle.Fill;
-                _calcuCtrl.CancelEvent += () =>
-                    {
-                        this.docPnlBottom.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden;
-                    };
-                _calcuCtrl.OkEvent += async () =>
-                    {
-                        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 _calcuCtrl;
-        }
-
-        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) =>
-                {
+                _calcuCtrl.InitialData(() => _hydroInfo);
+                _calcuCtrl.HydroViewEvent += async (parter) =>
+                {//姘村姏鏌ョ湅浜嬩欢
                     if (parter == null)
                     {
                         return;
                     }
-                    await _bimfaceCtrl.ZoomAndSelectComponents(new List<string>() { parter.Code });
+                    await _bimfaceCtrl?.ZoomAndSelectComponents(new List<string>() { parter.Code });
                 };
-                _calcuPrefixCtrl.HydroCalcuEvent += async (hydroInfo) =>
-                {
-                    if (hydroInfo == null)
+                _calcuCtrl.HydroCalcuEvent += async () =>
+                {//姘村姏璁$畻浜嬩欢
+                    if (_hydroInfo == null)
                     {
                         return;
                     }
-                    _checkResult = hydroInfo.Check();
+
+                    //鏍¢獙
+                    _checkResult = _hydroInfo.Check();
                     if (!_checkResult.Succeed)
                     {
-                        this.controlContainerBottom.Controls.Clear();
-                        var checkResultCtrl = GetCheckResultCtrl();
-                        checkResultCtrl.SetBindingData(_checkResult);
-                        this.controlContainerBottom.Controls.Add(checkResultCtrl);
+                        ShowCheckCtrl();
                         TipFormHelper.ShowWarn("鏍¢獙澶辫触锛岃妫�鏌ュ悗閲嶈瘯");
                         return;
                     }
 
-                    var netWork = Yw.Hydro.ParseHelper.ToNetwork(hydroInfo);
+                    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);
+                        this.docPnlRight.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden;
+                        await _bimfaceCtrl?.SetLogicCalcuCustomLabels(_calcuResult);
                         TipFormHelper.ShowSucceed("璁$畻鎴愬姛锛�");
                     }
                     else
                     {
-                        _calcuCtrl.SetBindingData(_calcuResult.FailedList);
-                        this.docPnlBottom.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Visible;
-                        this.docPnlBottom.Text = "璁$畻澶辫触鍘熷洜";
-                        this.docPnlBottom.Height = 350;
+                        _calcuCtrl.SetFailedList(_calcuResult.FailedList);
+                        this.docPnlRight.Text = "澶辫触鍘熷洜";
+                        this.docPnlRight.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Visible;
                         TipFormHelper.ShowError("璁$畻澶辫触");
                     }
                 };
             }
-            return _calcuPrefixCtrl;
+            return _calcuCtrl;
         }
 
         //姘村姏璁$畻
@@ -819,7 +738,7 @@
             {
                 return;
             }
-            var calcuPrefixCtrl = GetCalcuPrefixCtrl();
+            var calcuPrefixCtrl = GetCalcuCtrl();
             calcuPrefixCtrl.SetBindingData();
             this.controlContainerRight.Controls.Clear();
             this.controlContainerRight.Controls.Add(calcuPrefixCtrl);
@@ -890,8 +809,8 @@
 
         private List<HydroMarkSetViewModel> _allMarkList = null;
 
-        //鏍囨敞
-        private void barBtnMark_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
+        //璁剧疆鏍囨敞
+        private void barBtnMarkSet_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
         {
             if (_hydroInfo == null)
             {
@@ -956,6 +875,19 @@
             dlg.ShowDialog();
         }
 
-        #endregion 鏍囨敞
+        //鍙栨秷鏍囨敞
+        private async void barBtnMarkCancel_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
+        {
+            if (_hydroInfo == null)
+            {
+                return;
+            }
+            await _bimfaceCtrl?.ClearLogicMarkLeadLabels();
+        }
+
+        #endregion
+
+
+
     }
 }
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.resx b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.resx
index fadb7b3..77dac0e 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.resx
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.resx
@@ -309,27 +309,30 @@
     <value>
         AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
         LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
-        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAO4DAAAC77u/
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAKcEAAAC77u/
         PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
         IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
         MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
         Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
-        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9Cgku
-        WWVsbG93e2ZpbGw6I0ZGQjExNTt9CgkuQmx1ZXtmaWxsOiMxMTc3RDc7fQoJLkdyZWVue2ZpbGw6IzAz
-        OUMyMzt9CgkuUmVke2ZpbGw6I0QxMUMxQzt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh
-        Y2l0eTowLjc1O30KCS5zdDF7b3BhY2l0eTowLjU7fQoJLnN0MntvcGFjaXR5OjAuMjU7fQo8L3N0eWxl
-        Pg0KICA8ZyBpZD0iUHJvcGVydGllcyI+DQogICAgPHBhdGggZD0iTTMwLDE4di00bC00LjQtMC43Yy0w
-        LjItMC44LTAuNS0xLjUtMC45LTIuMWwyLjYtMy42bC0yLjgtMi44bC0zLjYsMi42Yy0wLjctMC40LTEu
-        NC0wLjctMi4xLTAuOUwxOCwyaC00ICAgbC0wLjcsNC40Yy0wLjgsMC4yLTEuNSwwLjUtMi4xLDAuOUw3
-        LjUsNC43TDQuNyw3LjVsMi42LDMuNmMtMC40LDAuNy0wLjcsMS40LTAuOSwyLjFMMiwxNHY0bDQuNCww
-        LjdjMC4yLDAuOCwwLjUsMS41LDAuOSwyLjEgICBsLTIuNiwzLjZsMi44LDIuOGwzLjYtMi42YzAuNyww
-        LjQsMS40LDAuNywyLjEsMC45TDE0LDMwaDRsMC43LTQuNGMwLjgtMC4yLDEuNS0wLjUsMi4xLTAuOWwz
-        LjYsMi42bDIuOC0yLjhsLTIuNi0zLjYgICBjMC40LTAuNywwLjctMS40LDAuOS0yLjFMMzAsMTh6IE0x
-        NiwyMGMtMi4yLDAtNC0xLjgtNC00YzAtMi4yLDEuOC00LDQtNHM0LDEuOCw0LDRDMjAsMTguMiwxOC4y
-        LDIwLDE2LDIweiIgY2xhc3M9IkJsdWUiIC8+DQogIDwvZz4NCjwvc3ZnPgs=
+        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLlllbGxvd3tmaWxsOiNGRkIxMTU7fQoJ
+        LlJlZHtmaWxsOiNEMTFDMUM7fQoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9CgkuQmx1ZXtmaWxsOiMxMTc3
+        RDc7fQoJLldoaXRle2ZpbGw6I0ZGRkZGRjt9CgkuR3JlZW57ZmlsbDojMDM5QzIzO30KCS5zdDB7b3Bh
+        Y2l0eTowLjc1O30KCS5zdDF7b3BhY2l0eTowLjU7fQoJLnN0MntvcGFjaXR5OjAuMjU7fQoJLnN0M3tm
+        aWxsOiNGRkIxMTU7fQo8L3N0eWxlPg0KICA8ZyAvPg0KICA8ZyBpZD0iWC1BeGlzX1NldHRpbmdzIj4N
+        CiAgICA8cG9seWdvbiBwb2ludHM9IjQsMjYgNCwyIDIsMiAyLDI4IDYsMjggNiwzMCA4LDMwIDgsMjgg
+        MTIsMjggMTIsMzAgMTQsMzAgMTQsMjggMTgsMjggMTgsMzAgMjAsMzAgMjAsMjggMjQsMjggICAgMjQs
+        MzAgMjYsMzAgMjYsMjggMzAsMjggMzAsMjYgICIgY2xhc3M9IkJsYWNrIiAvPg0KICAgIDxwYXRoIGQ9
+        Ik0yOCwxNC40di0yLjhsLTMtMC42Yy0wLjMtMC44LTAuNS0xLjgtMS4xLTIuNWwxLjgtMi41bC0xLjkt
+        MS45TDIxLjMsNmMtMC43LTAuNC0xLjYtMC44LTIuNS0xbC0wLjQtM2gtMi44ICAgbC0wLjUsM2MtMC44
+        LDAuMy0xLjgsMC41LTIuNSwxbC0yLjUtMS44TDguMiw2LjFMMTAsOC42Yy0wLjQsMC43LTAuOCwxLjct
+        MS4xLDIuNUw2LDExLjZ2Mi44bDMsMC41YzAuMywwLjgsMC41LDEuOCwxLjEsMi41ICAgbC0xLjgsMi41
+        bDEuOSwxLjlsMi41LTEuOGMwLjcsMC40LDEuNiwwLjgsMi41LDFsMC40LDNoMi44bDAuNi0zYzAuOC0w
+        LjMsMS44LTAuNiwyLjUtMWwyLjUsMS44bDEuOS0xLjlMMjQsMTcuNCAgIGMwLjQtMC43LDAuOC0xLjYs
+        MS4xLTIuNUwyOCwxNC40eiBNMTcsMTZjLTEuNywwLTMtMS4zLTMtM3MxLjMtMywzLTNzMywxLjMsMywz
+        UzE4LjcsMTYsMTcsMTZ6IiBjbGFzcz0iQmx1ZSIgLz4NCiAgPC9nPg0KPC9zdmc+Cw==
 </value>
   </data>
-  <data name="barBtnFeatCurve.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+  <data name="barBtnAnaly.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
         LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
@@ -375,7 +378,7 @@
         QmxhY2siIC8+DQogIDwvZz4NCjwvc3ZnPgs=
 </value>
   </data>
-  <data name="barBtnMark.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+  <data name="barBtnMarkSet.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
         LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
@@ -485,6 +488,53 @@
         c3ZnPgs=
 </value>
   </data>
+  <data name="barBtnProperty.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAOYDAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iRG9jdW1lbnRfUHJvcGVydGllcyIgc3R5bGU9ImVuYWJsZS1iYWNrZ3Jv
+        dW5kOm5ldyAwIDAgMzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsYWNre2ZpbGw6
+        IzcyNzI3Mjt9CgkuQmx1ZXtmaWxsOiMxMTc3RDc7fQo8L3N0eWxlPg0KICA8cGF0aCBkPSJNMzAsMjV2
+        LTJsLTIuMi0wLjRjLTAuMi0wLjYtMC40LTEuMy0wLjctMS44bDEuMy0xLjhsLTEuNC0xLjRsLTEuOCwx
+        LjNjLTAuNS0wLjMtMS4yLTAuNi0xLjgtMC43TDIzLDE2aC0yICBsLTAuNCwyLjJjLTAuNiwwLjItMS4z
+        LDAuNC0xLjgsMC43bC0xLjgtMS4zbC0xLjQsMS40bDEuMywxLjhjLTAuMywwLjUtMC42LDEuMi0wLjcs
+        MS44TDE0LDIzdjJsMi4yLDAuNGMwLjIsMC42LDAuNCwxLjMsMC43LDEuOCAgbC0xLjMsMS44bDEuNCwx
+        LjRsMS44LTEuM2MwLjUsMC4zLDEuMiwwLjYsMS44LDAuN0wyMSwzMmgybDAuNC0yLjJjMC42LTAuMiwx
+        LjMtMC40LDEuOC0wLjdsMS44LDEuM2wxLjQtMS40bC0xLjMtMS44ICBjMC4zLTAuNSwwLjYtMS4yLDAu
+        Ny0xLjhMMzAsMjV6IE0yMiwyNmMtMS4xLDAtMi0wLjktMi0yczAuOS0yLDItMnMyLDAuOSwyLDJTMjMu
+        MSwyNiwyMiwyNnoiIGNsYXNzPSJCbHVlIiAvPg0KICA8cGF0aCBkPSJNMTQuMywyNkg2VjRoNmg2djVj
+        MCwwLjYsMC40LDEsMSwxaDV2NS45bDAsMC40YzAuNywwLjIsMS40LDAuNSwyLDAuOFY5bC03LTdINUM0
+        LjQsMiw0LDIuNCw0LDN2MjQgIGMwLDAuNiwwLjQsMSwxLDFoMTAuMUMxNC43LDI3LjQsMTQuNCwyNi43
+        LDE0LjMsMjZ6IiBjbGFzcz0iQmxhY2siIC8+DQo8L3N2Zz4L
+</value>
+  </data>
+  <data name="barBtnRefresh.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAIkDAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLlllbGxvd3tmaWxsOiNGRkIxMTU7fQoJ
+        LlJlZHtmaWxsOiNEMTFDMUM7fQoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5HcmVlbntmaWxsOiMwMzlD
+        MjM7fQoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh
+        Y2l0eTowLjU7fQoJLnN0MXtkaXNwbGF5Om5vbmU7fQoJLnN0MntkaXNwbGF5OmlubGluZTtmaWxsOiMw
+        MzlDMjM7fQoJLnN0M3tkaXNwbGF5OmlubGluZTtmaWxsOiNEMTFDMUM7fQoJLnN0NHtkaXNwbGF5Omlu
+        bGluZTtmaWxsOiM3MjcyNzI7fQo8L3N0eWxlPg0KICA8ZyBpZD0iQ2hhbmdlVmlldyI+DQogICAgPHBh
+        dGggZD0iTTI0LjUsNy41QzIyLjMsNS4zLDE5LjMsNCwxNiw0QzEwLjEsNCw1LjEsOC4zLDQuMiwxNGg0
+        LjFjMC45LTMuNCw0LTYsNy43LTZjMi4yLDAsNC4yLDAuOSw1LjYsMi40TDE4LDE0ICAgaDUuN2g0LjFI
+        MjhWNEwyNC41LDcuNXogTTE2LDI0Yy0yLjIsMC00LjItMC45LTUuNi0yLjRMMTQsMThIOC4yaC00SDR2
+        MTBsMy41LTMuNUM5LjcsMjYuNywxMi43LDI4LDE2LDI4YzUuOSwwLDEwLjgtNC4zLDExLjgtMTAgICBo
+        LTQuMUMyMi44LDIxLjQsMTkuNywyNCwxNiwyNHoiIGNsYXNzPSJCbHVlIiAvPg0KICA8L2c+DQo8L3N2
+        Zz4L
+</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>
diff --git a/WinFrmUI/Yw.WinFrmUI.Bimface.Core/01-interop/01-interop3d/BimfaceInterop3dContainer.cs b/WinFrmUI/Yw.WinFrmUI.Bimface.Core/01-interop/01-interop3d/BimfaceInterop3dContainer.cs
index f73cd1c..aa67501 100644
--- a/WinFrmUI/Yw.WinFrmUI.Bimface.Core/01-interop/01-interop3d/BimfaceInterop3dContainer.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Bimface.Core/01-interop/01-interop3d/BimfaceInterop3dContainer.cs
@@ -418,38 +418,38 @@
 
         #endregion
 
-        #region 鑷畾涔夋爣绛�
+        #region 涓氬姟璁$畻鑷畾涔夋爣绛�
 
         /// <summary>
-        /// 璁剧疆鑷畾涔夋爣绛�
+        /// 璁剧疆涓氬姟璁$畻鑷畾涔夋爣绛�
         /// </summary>
-        public async Task SetCustomLabels(List<CustomLabel> obj)
+        public async Task SetLogicCalcuCustomLabels(List<CustomLabel> obj)
         {
             if (!_isViewInitialized)
             {
                 return;
             }
-            await this.webViewControl1.EvaluateScriptAsync("setCustomLabels", obj);
+            await this.webViewControl1.EvaluateScriptAsync("setLogicCalcuCustomLabels", obj);
         }
 
         /// <summary>
-        /// 娓呴櫎鑷畾涔夋爣绛�
+        /// 娓呴櫎涓氬姟璁$畻鑷畾涔夋爣绛�
         /// </summary>
-        public async Task ClearCustomLabels()
+        public async Task ClearLogicCalcuCustomLabels()
         {
             if (!_isViewInitialized)
             {
                 return;
             }
-            await this.webViewControl1.EvaluateScriptAsync("clearCustomLabels()");
+            await this.webViewControl1.EvaluateScriptAsync("clearLogicCalcuCustomLabels()");
         }
 
         #endregion
 
-        #region 涓氬姟璁$畻寮曠嚎鏍囩
+        #region 涓氬姟鏍囨敞寮曠嚎鏍囩
 
         /// <summary>
-        /// 璁剧疆涓氬姟璁$畻寮曠嚎鏍囩
+        /// 璁剧疆涓氬姟鏍囨敞寮曠嚎鏍囩
         /// </summary>
         public async Task SetLogicMarkLeadLabels(List<LogicMarkLeadLabel> obj)
         {
@@ -461,7 +461,7 @@
         }
 
         /// <summary>
-        /// 娓呴櫎涓氬姟璁$畻寮曠嚎鏍囩
+        /// 娓呴櫎涓氬姟鏍囨敞寮曠嚎鏍囩
         /// </summary>
         public async Task ClearLogicMarkLeadLabels()
         {
diff --git a/WinFrmUI/Yw.WinFrmUI.Bimface.Core/01-interop/01-interop3d/IBimfaceInterop3dContainer.cs b/WinFrmUI/Yw.WinFrmUI.Bimface.Core/01-interop/01-interop3d/IBimfaceInterop3dContainer.cs
index 36aa639..aebe8c0 100644
--- a/WinFrmUI/Yw.WinFrmUI.Bimface.Core/01-interop/01-interop3d/IBimfaceInterop3dContainer.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Bimface.Core/01-interop/01-interop3d/IBimfaceInterop3dContainer.cs
@@ -147,20 +147,20 @@
 
         #endregion
 
-        #region 鑷畾涔夋爣绛�
+        #region 涓氬姟璁$畻鑷畾涔夋爣绛�
 
         /// <summary>
         /// 璁剧疆鑷畾涔夋爣绛�
         /// </summary>
         /// <param name="obj"></param>
         /// <returns></returns>
-        Task SetCustomLabels(List<CustomLabel> obj);
+        Task SetLogicCalcuCustomLabels(List<CustomLabel> obj);
 
         /// <summary>
         /// 娓呴櫎鑷畾涔夋爣绛�
         /// </summary>
         /// <returns></returns>
-        Task ClearCustomLabels();
+        Task ClearLogicCalcuCustomLabels();
 
         #endregion
 
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/00-core/05-mark/ePipeMarkType.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/00-core/05-mark/ePipeMarkType.cs
index 82d1b9d..92bd8d3 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/00-core/05-mark/ePipeMarkType.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/00-core/05-mark/ePipeMarkType.cs
@@ -24,9 +24,9 @@
         Diameter = 2,
 
         /// <summary>
-        /// 鐩村緞锛坢锛�
+        /// 闀垮害锛坢锛�
         /// </summary>
-        [Display(Name = "鐩村緞")]
+        [Display(Name = "闀垮害")]
         Length = 3,
 
         /// <summary>
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/09-mark/SetHydroMarkCtrl.Designer.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/09-mark/SetHydroMarkCtrl.Designer.cs
index cf2e5e2..c5bb7d8 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/09-mark/SetHydroMarkCtrl.Designer.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/09-mark/SetHydroMarkCtrl.Designer.cs
@@ -56,7 +56,7 @@
             layoutControl1.Name = "layoutControl1";
             layoutControl1.OptionsCustomizationForm.DesignTimeCustomizationFormPositionAndSize = new Rectangle(670, 266, 650, 400);
             layoutControl1.Root = Root;
-            layoutControl1.Size = new Size(398, 555);
+            layoutControl1.Size = new Size(308, 555);
             layoutControl1.TabIndex = 0;
             layoutControl1.Text = "layoutControl1";
             // 
@@ -64,7 +64,7 @@
             // 
             btnOk.Appearance.BackColor = DevExpress.LookAndFeel.DXSkinColors.FillColors.Primary;
             btnOk.Appearance.Options.UseBackColor = true;
-            btnOk.Location = new Point(222, 531);
+            btnOk.Location = new Point(132, 531);
             btnOk.Name = "btnOk";
             btnOk.Size = new Size(85, 22);
             btnOk.StyleController = layoutControl1;
@@ -76,7 +76,7 @@
             // 
             btnCancel.Appearance.BackColor = DevExpress.LookAndFeel.DXSkinColors.FillColors.Warning;
             btnCancel.Appearance.Options.UseBackColor = true;
-            btnCancel.Location = new Point(311, 531);
+            btnCancel.Location = new Point(221, 531);
             btnCancel.Name = "btnCancel";
             btnCancel.Size = new Size(85, 22);
             btnCancel.StyleController = layoutControl1;
@@ -88,7 +88,7 @@
             // 
             setHydroMarkPureCtrl1.Location = new Point(2, 2);
             setHydroMarkPureCtrl1.Name = "setHydroMarkPureCtrl1";
-            setHydroMarkPureCtrl1.Size = new Size(394, 525);
+            setHydroMarkPureCtrl1.Size = new Size(304, 525);
             setHydroMarkPureCtrl1.TabIndex = 4;
             // 
             // Root
@@ -98,7 +98,7 @@
             Root.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutControlItem1, layoutControlItem2, layoutControlItem3, emptySpaceItem1 });
             Root.Name = "Root";
             Root.Padding = new DevExpress.XtraLayout.Utils.Padding(0, 0, 0, 0);
-            Root.Size = new Size(398, 555);
+            Root.Size = new Size(308, 555);
             Root.TextVisible = false;
             // 
             // layoutControlItem1
@@ -106,14 +106,14 @@
             layoutControlItem1.Control = setHydroMarkPureCtrl1;
             layoutControlItem1.Location = new Point(0, 0);
             layoutControlItem1.Name = "layoutControlItem1";
-            layoutControlItem1.Size = new Size(398, 529);
+            layoutControlItem1.Size = new Size(308, 529);
             layoutControlItem1.TextSize = new Size(0, 0);
             layoutControlItem1.TextVisible = false;
             // 
             // layoutControlItem2
             // 
             layoutControlItem2.Control = btnCancel;
-            layoutControlItem2.Location = new Point(309, 529);
+            layoutControlItem2.Location = new Point(219, 529);
             layoutControlItem2.MaxSize = new Size(89, 26);
             layoutControlItem2.MinSize = new Size(89, 26);
             layoutControlItem2.Name = "layoutControlItem2";
@@ -125,7 +125,7 @@
             // layoutControlItem3
             // 
             layoutControlItem3.Control = btnOk;
-            layoutControlItem3.Location = new Point(220, 529);
+            layoutControlItem3.Location = new Point(130, 529);
             layoutControlItem3.MaxSize = new Size(89, 26);
             layoutControlItem3.MinSize = new Size(89, 26);
             layoutControlItem3.Name = "layoutControlItem3";
@@ -139,7 +139,7 @@
             emptySpaceItem1.AllowHotTrack = false;
             emptySpaceItem1.Location = new Point(0, 529);
             emptySpaceItem1.Name = "emptySpaceItem1";
-            emptySpaceItem1.Size = new Size(220, 26);
+            emptySpaceItem1.Size = new Size(130, 26);
             emptySpaceItem1.TextSize = new Size(0, 0);
             // 
             // SetHydroMarkCtrl
@@ -148,7 +148,7 @@
             AutoScaleMode = AutoScaleMode.Font;
             Controls.Add(layoutControl1);
             Name = "SetHydroMarkCtrl";
-            Size = new Size(398, 555);
+            Size = new Size(308, 555);
             ((ISupportInitialize)layoutControl1).EndInit();
             layoutControl1.ResumeLayout(false);
             ((ISupportInitialize)Root).EndInit();
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/09-mark/SetHydroMarkCtrl.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/09-mark/SetHydroMarkCtrl.cs
index dfe4612..59b834a 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/09-mark/SetHydroMarkCtrl.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/09-mark/SetHydroMarkCtrl.cs
@@ -30,12 +30,7 @@
             this.setHydroMarkPureCtrl1.SetBindingData(hydroInfoFunc, list);
         }
 
-
-        private void btnCancel_Click(object sender, EventArgs e)
-        {
-            this.CancelEvent?.Invoke();
-        }
-
+        //纭畾
         private void btnOk_Click(object sender, EventArgs e)
         {
             var list = this.setHydroMarkPureCtrl1.GetResultList();
@@ -43,6 +38,12 @@
             this.OkEvent?.Invoke();
         }
 
+        //鍙栨秷
+        private void btnCancel_Click(object sender, EventArgs e)
+        {
+            this.CancelEvent?.Invoke();
+        }
+
 
     }
 }
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/09-mark/SetHydroMarkDlg.Designer.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/09-mark/SetHydroMarkDlg.Designer.cs
index 754bfa4..a3fda57 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/09-mark/SetHydroMarkDlg.Designer.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/09-mark/SetHydroMarkDlg.Designer.cs
@@ -36,14 +36,14 @@
             setHydroMarkCtrl1.Dock = DockStyle.Fill;
             setHydroMarkCtrl1.Location = new Point(10, 5);
             setHydroMarkCtrl1.Name = "setHydroMarkCtrl1";
-            setHydroMarkCtrl1.Size = new Size(342, 448);
+            setHydroMarkCtrl1.Size = new Size(306, 448);
             setHydroMarkCtrl1.TabIndex = 0;
             // 
             // SetHydroMarkDlg
             // 
             AutoScaleDimensions = new SizeF(7F, 14F);
             AutoScaleMode = AutoScaleMode.Font;
-            ClientSize = new Size(362, 463);
+            ClientSize = new Size(326, 463);
             Controls.Add(setHydroMarkCtrl1);
             Name = "SetHydroMarkDlg";
             Padding = new Padding(10, 5, 10, 10);
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/09-mark/SetHydroMarkPureCtrl.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/09-mark/SetHydroMarkPureCtrl.cs
index 7c8a8e1..e64a6bd 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/09-mark/SetHydroMarkPureCtrl.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/09-mark/SetHydroMarkPureCtrl.cs
@@ -213,11 +213,11 @@
                                         {
                                             hydroInfo.Pumps.ForEach(t =>
                                             {
-                                                //resultList.Add(new HydroMarkResultViewModel()
-                                                //{
-                                                //    Code = t.Code,
-                                                //    Text = $"棰濆畾棰戠巼:{t.RatedHz}"
-                                                //});
+                                                resultList.Add(new HydroMarkResultViewModel()
+                                                {
+                                                    Code = t.Code,
+                                                    Text = $"棰濆畾棰戠巼:{t.RatedHz}"
+                                                });
                                             });
                                         }
                                         break;
@@ -225,11 +225,11 @@
                                         {
                                             hydroInfo.Pumps.ForEach(t =>
                                             {
-                                                //resultList.Add(new HydroMarkResultViewModel()
-                                                //{
-                                                //    Code = t.Code,
-                                                //    Text = $"棰濆畾棰戠巼:{t.RatedHz}"
-                                                //});
+                                                resultList.Add(new HydroMarkResultViewModel()
+                                                {
+                                                    Code = t.Code,
+                                                    Text = $"璁惧畾杞��:{t.RatedN * t.SpeedRatio}r/min"
+                                                });
                                             });
                                         }
                                         break;
@@ -237,11 +237,11 @@
                                         {
                                             hydroInfo.Pumps.ForEach(t =>
                                             {
-                                                //resultList.Add(new HydroMarkResultViewModel()
-                                                //{
-                                                //    Code = t.Code,
-                                                //    Text = $"棰濆畾棰戠巼:{t.RatedHz}"
-                                                //});
+                                                resultList.Add(new HydroMarkResultViewModel()
+                                                {
+                                                    Code = t.Code,
+                                                    Text = $"璁惧畾棰戠巼:{t.RatedHz * t.SpeedRatio}"
+                                                });
                                             });
                                         }
                                         break;
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/11-prefix/00-core/SetHydroCalcuPrefixCtrl.Designer.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/11-prefix/00-core/SetHydroCalcuPrefixCtrl.Designer.cs
index c082c28..87bf78a 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/11-prefix/00-core/SetHydroCalcuPrefixCtrl.Designer.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/11-prefix/00-core/SetHydroCalcuPrefixCtrl.Designer.cs
@@ -39,7 +39,8 @@
             itemForNext = new DevExpress.XtraLayout.LayoutControlItem();
             itemForPrev = new DevExpress.XtraLayout.LayoutControlItem();
             itemForCalcu = new DevExpress.XtraLayout.LayoutControlItem();
-            emptySpaceItem1 = new DevExpress.XtraLayout.EmptySpaceItem();
+            emptySpace = new DevExpress.XtraLayout.EmptySpaceItem();
+            groupForBottom = new DevExpress.XtraLayout.LayoutControlGroup();
             ((ISupportInitialize)navigationFrame).BeginInit();
             ((ISupportInitialize)layoutControl1).BeginInit();
             layoutControl1.SuspendLayout();
@@ -48,7 +49,8 @@
             ((ISupportInitialize)itemForNext).BeginInit();
             ((ISupportInitialize)itemForPrev).BeginInit();
             ((ISupportInitialize)itemForCalcu).BeginInit();
-            ((ISupportInitialize)emptySpaceItem1).BeginInit();
+            ((ISupportInitialize)emptySpace).BeginInit();
+            ((ISupportInitialize)groupForBottom).BeginInit();
             SuspendLayout();
             // 
             // navigationFrame
@@ -69,7 +71,7 @@
             layoutControl1.Dock = DockStyle.Fill;
             layoutControl1.Location = new Point(0, 0);
             layoutControl1.Name = "layoutControl1";
-            layoutControl1.OptionsCustomizationForm.DesignTimeCustomizationFormPositionAndSize = new Rectangle(772, 416, 650, 400);
+            layoutControl1.OptionsCustomizationForm.DesignTimeCustomizationFormPositionAndSize = new Rectangle(785, 350, 650, 400);
             layoutControl1.Root = Root;
             layoutControl1.Size = new Size(317, 718);
             layoutControl1.TabIndex = 1;
@@ -133,7 +135,7 @@
             // 
             Root.EnableIndentsWithoutBorders = DevExpress.Utils.DefaultBoolean.True;
             Root.GroupBordersVisible = false;
-            Root.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutControlItem1, itemForNext, itemForPrev, itemForCalcu, emptySpaceItem1 });
+            Root.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutControlItem1, groupForBottom });
             Root.Name = "Root";
             Root.Padding = new DevExpress.XtraLayout.Utils.Padding(0, 0, 0, 0);
             Root.Size = new Size(317, 718);
@@ -151,7 +153,7 @@
             // itemForNext
             // 
             itemForNext.Control = btnNext;
-            itemForNext.Location = new Point(117, 692);
+            itemForNext.Location = new Point(117, 0);
             itemForNext.MaxSize = new Size(100, 26);
             itemForNext.MinSize = new Size(100, 26);
             itemForNext.Name = "itemForNext";
@@ -163,7 +165,7 @@
             // itemForPrev
             // 
             itemForPrev.Control = btnPre;
-            itemForPrev.Location = new Point(17, 692);
+            itemForPrev.Location = new Point(17, 0);
             itemForPrev.MaxSize = new Size(100, 26);
             itemForPrev.MinSize = new Size(100, 26);
             itemForPrev.Name = "itemForPrev";
@@ -175,7 +177,7 @@
             // itemForCalcu
             // 
             itemForCalcu.Control = btnCalcu;
-            itemForCalcu.Location = new Point(217, 692);
+            itemForCalcu.Location = new Point(217, 0);
             itemForCalcu.MaxSize = new Size(100, 26);
             itemForCalcu.MinSize = new Size(100, 26);
             itemForCalcu.Name = "itemForCalcu";
@@ -184,15 +186,24 @@
             itemForCalcu.TextSize = new Size(0, 0);
             itemForCalcu.TextVisible = false;
             // 
-            // emptySpaceItem1
+            // emptySpace
             // 
-            emptySpaceItem1.AllowHotTrack = false;
-            emptySpaceItem1.Location = new Point(0, 692);
-            emptySpaceItem1.MinSize = new Size(1, 24);
-            emptySpaceItem1.Name = "emptySpaceItem1";
-            emptySpaceItem1.Size = new Size(17, 26);
-            emptySpaceItem1.SizeConstraintsType = DevExpress.XtraLayout.SizeConstraintsType.Custom;
-            emptySpaceItem1.TextSize = new Size(0, 0);
+            emptySpace.AllowHotTrack = false;
+            emptySpace.Location = new Point(0, 0);
+            emptySpace.MinSize = new Size(1, 24);
+            emptySpace.Name = "emptySpace";
+            emptySpace.Size = new Size(17, 26);
+            emptySpace.SizeConstraintsType = DevExpress.XtraLayout.SizeConstraintsType.Custom;
+            emptySpace.TextSize = new Size(0, 0);
+            // 
+            // groupForBottom
+            // 
+            groupForBottom.GroupBordersVisible = false;
+            groupForBottom.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { emptySpace, itemForPrev, itemForNext, itemForCalcu });
+            groupForBottom.Location = new Point(0, 692);
+            groupForBottom.Name = "groupForBottom";
+            groupForBottom.Size = new Size(317, 26);
+            groupForBottom.Text = "鍔熻兘";
             // 
             // SetHydroCalcuPrefixCtrl
             // 
@@ -209,7 +220,8 @@
             ((ISupportInitialize)itemForNext).EndInit();
             ((ISupportInitialize)itemForPrev).EndInit();
             ((ISupportInitialize)itemForCalcu).EndInit();
-            ((ISupportInitialize)emptySpaceItem1).EndInit();
+            ((ISupportInitialize)emptySpace).EndInit();
+            ((ISupportInitialize)groupForBottom).EndInit();
             ResumeLayout(false);
         }
 
@@ -225,6 +237,7 @@
         private DevExpress.XtraLayout.LayoutControlItem itemForNext;
         private DevExpress.XtraLayout.LayoutControlItem itemForPrev;
         private DevExpress.XtraLayout.LayoutControlItem itemForCalcu;
-        private DevExpress.XtraLayout.EmptySpaceItem emptySpaceItem1;
+        private DevExpress.XtraLayout.EmptySpaceItem emptySpace;
+        private DevExpress.XtraLayout.LayoutControlGroup groupForBottom;
     }
 }
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/11-prefix/00-core/SetHydroCalcuPrefixCtrl.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/11-prefix/00-core/SetHydroCalcuPrefixCtrl.cs
index 3f5a641..2537746 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/11-prefix/00-core/SetHydroCalcuPrefixCtrl.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/11-prefix/00-core/SetHydroCalcuPrefixCtrl.cs
@@ -18,7 +18,7 @@
         /// <summary>
         /// 姘村姏璁$畻浜嬩欢
         /// </summary>
-        public event Action<Yw.Model.HydroModelInfo> HydroCalcuEvent;
+        public event Action HydroCalcuEvent;
 
         /// <summary>
         /// 姘村姏鏌ョ湅浜嬩欢
@@ -47,6 +47,7 @@
             {
                 return;
             }
+            this.groupForBottom.Visibility = LayoutVisibility.Always;
             this.navigationFrame.Controls.Clear();
             this.navigationFrame.Pages.Clear();
             var wizardPageList = new List<IWizardPage<SetHydroCalcuPrefixViewModel>>();
@@ -118,6 +119,20 @@
             _wizard.InitialManager(wizardPageList.ToArray());
         }
 
+        /// <summary>
+        /// 
+        /// </summary>
+        public void SetFailedList(List<Yw.EPAnet.CalcuFailed> allFailedList)
+        {
+            this.groupForBottom.Visibility = LayoutVisibility.Never;
+            this.navigationFrame.Controls.Clear();
+            this.navigationFrame.Pages.Clear();
+            var ctrl = new HydroCalcuFailedCtrl();
+            ctrl.Dock = DockStyle.Fill;
+            ctrl.SetBindingData(allFailedList);
+            AddPage(ctrl);
+        }
+
         //娣诲姞page
         private void AddPage(Control ctrl)
         {
@@ -159,7 +174,7 @@
                     {
                         return;
                     }
-                    this.HydroCalcuEvent?.Invoke(hydroInfo);
+                    this.HydroCalcuEvent?.Invoke();
                 }
             }
         }
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/11-prefix/99-failed/HydroCalcuFailedCtrl.Designer.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/11-prefix/99-failed/HydroCalcuFailedCtrl.Designer.cs
new file mode 100644
index 0000000..0c86037
--- /dev/null
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/11-prefix/99-failed/HydroCalcuFailedCtrl.Designer.cs
@@ -0,0 +1,103 @@
+锘縩amespace Yw.WinFrmUI
+{
+    partial class HydroCalcuFailedCtrl
+    {
+        /// <summary> 
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary> 
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Component Designer generated code
+
+        /// <summary> 
+        /// Required method for Designer support - do not modify 
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            components = new Container();
+            gridControl1 = new DevExpress.XtraGrid.GridControl();
+            gridView1 = new DevExpress.XtraGrid.Views.Grid.GridView();
+            colCode = new DevExpress.XtraGrid.Columns.GridColumn();
+            colMessage = new DevExpress.XtraGrid.Columns.GridColumn();
+            hydroCalcuFailedViewModelBindingSource = new BindingSource(components);
+            ((ISupportInitialize)gridControl1).BeginInit();
+            ((ISupportInitialize)gridView1).BeginInit();
+            ((ISupportInitialize)hydroCalcuFailedViewModelBindingSource).BeginInit();
+            SuspendLayout();
+            // 
+            // gridControl1
+            // 
+            gridControl1.DataSource = hydroCalcuFailedViewModelBindingSource;
+            gridControl1.Dock = DockStyle.Fill;
+            gridControl1.Location = new Point(0, 0);
+            gridControl1.MainView = gridView1;
+            gridControl1.Name = "gridControl1";
+            gridControl1.Size = new Size(439, 460);
+            gridControl1.TabIndex = 1;
+            gridControl1.ViewCollection.AddRange(new DevExpress.XtraGrid.Views.Base.BaseView[] { gridView1 });
+            // 
+            // gridView1
+            // 
+            gridView1.Columns.AddRange(new DevExpress.XtraGrid.Columns.GridColumn[] { colCode, colMessage });
+            gridView1.GridControl = gridControl1;
+            gridView1.Name = "gridView1";
+            // 
+            // colCode
+            // 
+            colCode.FieldName = "Code";
+            colCode.MaxWidth = 80;
+            colCode.MinWidth = 80;
+            colCode.Name = "colCode";
+            colCode.Visible = true;
+            colCode.VisibleIndex = 0;
+            colCode.Width = 80;
+            // 
+            // colMessage
+            // 
+            colMessage.FieldName = "Message";
+            colMessage.MinWidth = 100;
+            colMessage.Name = "colMessage";
+            colMessage.Visible = true;
+            colMessage.VisibleIndex = 1;
+            colMessage.Width = 100;
+            // 
+            // hydroCalcuFailedViewModelBindingSource
+            // 
+            hydroCalcuFailedViewModelBindingSource.DataSource = typeof(HydroCalcuFailedViewModel);
+            // 
+            // HydroCalcuFailedCtrl
+            // 
+            AutoScaleDimensions = new SizeF(7F, 14F);
+            AutoScaleMode = AutoScaleMode.Font;
+            Controls.Add(gridControl1);
+            Name = "HydroCalcuFailedCtrl";
+            Size = new Size(439, 460);
+            ((ISupportInitialize)gridControl1).EndInit();
+            ((ISupportInitialize)gridView1).EndInit();
+            ((ISupportInitialize)hydroCalcuFailedViewModelBindingSource).EndInit();
+            ResumeLayout(false);
+        }
+
+        #endregion
+
+        private DevExpress.XtraGrid.GridControl gridControl1;
+        private DevExpress.XtraGrid.Views.Grid.GridView gridView1;
+        private DevExpress.XtraGrid.Columns.GridColumn colCode;
+        private DevExpress.XtraGrid.Columns.GridColumn colMessage;
+        private BindingSource hydroCalcuFailedViewModelBindingSource;
+    }
+}
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/11-prefix/99-failed/HydroCalcuFailedCtrl.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/11-prefix/99-failed/HydroCalcuFailedCtrl.cs
new file mode 100644
index 0000000..bd35689
--- /dev/null
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/11-prefix/99-failed/HydroCalcuFailedCtrl.cs
@@ -0,0 +1,38 @@
+锘縩amespace Yw.WinFrmUI
+{
+    public partial class HydroCalcuFailedCtrl : DevExpress.XtraEditors.XtraUserControl
+    {
+        public HydroCalcuFailedCtrl()
+        {
+            InitializeComponent();
+            this.gridView1.SetNormalView(30);
+            this.gridView1.RegistCustomDrawRowIndicator(40);
+        }
+
+
+        private List<HydroCalcuFailedViewModel> _allBindingList = null;
+
+        /// <summary>
+        /// 缁戝畾鏁版嵁
+        /// </summary>
+        public void SetBindingData(List<Yw.EPAnet.CalcuFailed> allFailedList)
+        {
+            _allBindingList = new List<HydroCalcuFailedViewModel>();
+            if (allFailedList != null && allFailedList.Count > 0)
+            {
+                foreach (var failed in allFailedList)
+                {
+                    var vm = new HydroCalcuFailedViewModel(failed);
+                    _allBindingList.Add(vm);
+                }
+            }
+            this.hydroCalcuFailedViewModelBindingSource.DataSource = _allBindingList;
+            this.hydroCalcuFailedViewModelBindingSource.ResetBindings(false);
+        }
+
+
+
+
+
+    }
+}
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/11-prefix/99-failed/HydroCalcuFailedCtrl.resx b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/11-prefix/99-failed/HydroCalcuFailedCtrl.resx
new file mode 100644
index 0000000..8bd8270
--- /dev/null
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/11-prefix/99-failed/HydroCalcuFailedCtrl.resx
@@ -0,0 +1,123 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!--
+    Microsoft ResX Schema 
+
+    Version 2.0
+
+    The primary goals of this format is to allow a simple XML format
+    that is mostly human readable. The generation and parsing of the
+    various data types are done through the TypeConverter classes
+    associated with the data types.
+
+    Example:
+
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+
+    There are any number of "resheader" rows that contain simple
+    name/value pairs.
+
+    Each data row contains a name, and value. The row also contains a
+    type or mimetype. Type corresponds to a .NET class that support
+    text/value conversion through the TypeConverter architecture.
+    Classes that don't support this are serialized and stored with the
+    mimetype set.
+
+    The mimetype is used for serialized objects, and tells the
+    ResXResourceReader how to depersist the object. This is currently not
+    extensible. For a given mimetype the value must be set accordingly:
+
+    Note - application/x-microsoft.net.object.binary.base64 is the format
+    that the ResXResourceWriter will generate, however the reader can
+    read any of the formats listed below.
+
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <metadata name="hydroCalcuFailedViewModelBindingSource.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>17, 17</value>
+  </metadata>
+</root>
\ No newline at end of file
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/11-prefix/99-failed/HydroCalcuFailedViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/11-prefix/99-failed/HydroCalcuFailedViewModel.cs
new file mode 100644
index 0000000..b53c79a
--- /dev/null
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/11-prefix/99-failed/HydroCalcuFailedViewModel.cs
@@ -0,0 +1,36 @@
+锘縩amespace Yw.WinFrmUI
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public class HydroCalcuFailedViewModel
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        public HydroCalcuFailedViewModel() { }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public HydroCalcuFailedViewModel(Yw.EPAnet.CalcuFailed rhs)
+        {
+            this.Code = rhs.Code;
+            this.Message = rhs.Message;
+        }
+
+        /// <summary>
+        /// 閿欒缂栫爜
+        /// </summary>
+        [Display(Name = "閿欒缂栫爜")]
+        public int Code { get; set; }
+
+        /// <summary>
+        /// 閿欒淇℃伅
+        /// </summary>
+        [Display(Name = "閿欒淇℃伅")]
+        public string Message { get; set; }
+
+
+    }
+}
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/Properties/DataSources/Yw.WinFrmUI.HydroCalcuFailedViewModel.datasource b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/Properties/DataSources/Yw.WinFrmUI.HydroCalcuFailedViewModel.datasource
new file mode 100644
index 0000000..d73299d
--- /dev/null
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/Properties/DataSources/Yw.WinFrmUI.HydroCalcuFailedViewModel.datasource
@@ -0,0 +1,10 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<!--
+    This file is automatically generated by Visual Studio. It is 
+    used to store generic object data source configuration information.  
+    Renaming the file extension or editing the content of this file may   
+    cause the file to be unrecognizable by the program.
+-->
+<GenericObjectDataSource DisplayName="HydroCalcuFailedViewModel" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
+  <TypeInfo>Yw.WinFrmUI.HydroCalcuFailedViewModel, Yw.WinFrmUI.Hydro.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
+</GenericObjectDataSource>
\ No newline at end of file
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/Yw.WinFrmUI.Hydro.Core.csproj b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/Yw.WinFrmUI.Hydro.Core.csproj
index 9ac67eb..b039ce1 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/Yw.WinFrmUI.Hydro.Core.csproj
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/Yw.WinFrmUI.Hydro.Core.csproj
@@ -85,6 +85,9 @@
     <Compile Update="08-l3d\HydroL3dViewPage.cs">
       <SubType>UserControl</SubType>
     </Compile>
+    <Compile Update="11-prefix\99-failed\HydroCalcuFailedCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
     <Compile Update="Properties\Resources.Designer.cs">
       <DesignTime>True</DesignTime>
       <AutoGen>True</AutoGen>

--
Gitblit v1.9.3