From 1aa330646ad9f88abc580e17d08d727a0ecaae48 Mon Sep 17 00:00:00 2001
From: lixiaojun <1287241240@qq.com>
Date: 星期五, 15 十一月 2024 11:49:08 +0800
Subject: [PATCH] 核心界面优化整理

---
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.resx                        |  200 +++
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/00-core/HydroVisualCalcuProp.cs                                                 |    2 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/03-node/03-junction/04-instrument/01-flowmeter/HydroFlowmeterViewModel.cs   |    2 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/03-node/00-core/IHydroCalcuNodeResult.cs                                        |    2 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/08-grading/03-list/SetHydroGradingModelCtrl.cs                                           |   10 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/99-failed/HydroCalcuFailed.cs                                                   |   41 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/18-exchanger/HydroExchangerListCtrl.cs                                         |    4 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/00-core/HydroVisualListCtrl.cs                                                 |    4 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/04-link/00-core/HydroCalcuLinkResult.cs                                         |    6 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/01-matching/01-viewmodel/ValveMatchingViewModel.cs       |    2 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/12-flowmeter/HydroFlowmeterListCtrl.cs                                         |    4 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/02-tank/HydroTankListCtrl.cs                                                   |    4 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/13-pressmeter/HydroPressmeterListCtrl.cs                                       |    4 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/01-property/XhsProjectSimulationPropertyCtrl.cs                        |    6 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/00-core/IHydroVisualList.cs                                                    |    4 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/00-core/03-helper/HydroParterPropHelper.cs                                               |  144 +-
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/09-check/01-control/HydroCheckResultCtrl.cs                                              |   17 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/01-result/HydroCalcuResult.cs                                                   |   49 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/03-node/02-pressmeter/IHydroCalcuPressmeterResult.cs                            |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/02-visual/IHydroCalcuVisualResult.cs                                            |    4 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/09-check/01-control/HydroCheckResultCtrl.Designer.cs                                     |   32 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.cs                          |  927 +++++++++++-------
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/04-junction/HydroJunctionListCtrl.cs                                           |    4 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.Designer.cs                 |  248 +++-
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/14-pipe/HydroPipeListCtrl.cs                                                   |    4 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/01-add/00-viewmodel/ISetSchemeParterList.cs                  |    4 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/03-node/01-flowmeter/HydroCalcuFlowmeterResult.cs                               |    4 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/02-value/HydroVisualMonitorValueViewModel.cs                                  |    4 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/02-visual/HydroCalcuVisualResult.cs                                             |   36 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/06-elbow/HydroElbowListCtrl.cs                                                 |    4 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/03-node/00-core/HydroCalcuNodeResult.cs                                         |    6 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/11-meter/HydroMeterListCtrl.cs                                                 |    4 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/03-node/03-junction/04-instrument/02-pressmeter/HydroPressmeterViewModel.cs |    2 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/08-fourlink/HydroFourlinkListCtrl.cs                                           |    4 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/01-add/01-set/01-pump/SetSchemePumpListCtrl.cs               |    4 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/03-waterbox/HydroWaterboxListCtrl.cs                                           |    4 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/16-pump/HydroPumpListCtrl.cs                                                   |    4 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/00-core/AssetsMatchingParasHelper.cs                                                 |   14 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/04-link/00-core/HydroLinkViewModel.cs                                       |    2 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/04-link/01-pump/HydroCalcuPumpResult.cs                                         |    4 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/01-set/SetHydroVisualMonitorCtrl.cs                                           |    2 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/04-link/02-pump/HydroPumpViewModel.cs                                       |    2 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/01-matching/01-viewmodel/PumpMatchingViewModel.cs        |    2 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/01-add/01-set/03-pipe/SetSchemePipeListCtrl.cs               |    4 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/00-core/HydroVisualCalcuPropHelper.cs                                           |  458 +++++++++
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/05-blunthead/HydroBluntheadListCtrl.cs                                         |    4 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/19-compressor/HydroCompressorListCtrl.cs                                       |    4 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/07-threelink/HydroThreelinkListCtrl.cs                                         |    4 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/09-hydrant/HydroHydrantListCtrl.cs                                             |    4 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/XhsProjectSimulationSchemeMgrPage.cs                         |   80 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/01-parter/HydroParterViewModel.cs                                           |    2 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/09-check/01-control/HydroCheckItemViewModel.cs                                           |   14 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/03-node/00-core/HydroNodeViewModel.cs                                       |    2 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/01-reservoir/HydroReservoirListCtrl.cs                                         |    4 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/01-set/SetHydroVisualMonitorViewModel.cs                                      |    2 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/04-link/00-core/IHydroCalcuLinkResult.cs                                        |    2 
 /dev/null                                                                                                                |  458 ---------
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/04-link/01-pump/IHydroCalcuPumpResult.cs                                        |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/03-node/02-pressmeter/HydroCalcuPressmeterResult.cs                             |    4 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/15-translation/HydroTranslationListCtrl.cs                                     |    4 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/17-valve/HydroValveListCtrl.cs                                                 |    4 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/10-nozzle/HydroNozzleListCtrl.cs                                               |    4 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/03-node/01-flowmeter/IHydroCalcuFlowmeterResult.cs                              |    0 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/01-add/01-set/02-valve/SetSchemeValveListCtrl.cs             |    4 
 64 files changed, 1,720 insertions(+), 1,172 deletions(-)

diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/00-core/AssetsMatchingParasHelper.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/00-core/AssetsMatchingParasHelper.cs
index d3bef85..045a8db 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/00-core/AssetsMatchingParasHelper.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/00-core/AssetsMatchingParasHelper.cs
@@ -13,7 +13,7 @@
         /// <summary>
         /// 鍒涘缓璧勪骇鑷姩鍖归厤ViewModel
         /// </summary>
-        public static AssetsMatchingViewModel Create(Yw.Model.HydroModelInfo hydroInfo, List<HydroCalcuResult> allCalcuResultList)
+        public static AssetsMatchingViewModel Create(Yw.Model.HydroModelInfo hydroInfo, List<HydroCalcuVisualResult> allCalcuResultList)
         {
             if (hydroInfo == null)
             {
@@ -45,7 +45,7 @@
         /// <summary>
         /// 鍒涘缓娉佃嚜鍔ㄥ尮閰峍iewModel
         /// </summary>
-        public static PumpMatchingViewModel Create(Yw.Model.HydroModelInfo hydroInfo, Yw.Model.HydroPumpInfo pumpInfo, List<HydroCalcuResult> allCalcuResultList)
+        public static PumpMatchingViewModel Create(Yw.Model.HydroModelInfo hydroInfo, Yw.Model.HydroPumpInfo pumpInfo, List<HydroCalcuVisualResult> allCalcuResultList)
         {
             if (hydroInfo == null)
             {
@@ -61,7 +61,7 @@
         /// <summary>
         /// 鍒涘缓闃�闂ㄨ嚜鍔ㄥ尮閰峍iewModel
         /// </summary>
-        public static ValveMatchingViewModel Create(Yw.Model.HydroModelInfo hydroInfo, Yw.Model.HydroValveInfo valveInfo, List<HydroCalcuResult> allCalcuResultList)
+        public static ValveMatchingViewModel Create(Yw.Model.HydroModelInfo hydroInfo, Yw.Model.HydroValveInfo valveInfo, List<HydroCalcuVisualResult> allCalcuResultList)
         {
             if (hydroInfo == null)
             {
@@ -77,7 +77,7 @@
         /// <summary>
         /// 鍒涘缓绠¢亾鑷姩鍖归厤ViewModel
         /// </summary>
-        public static PipeMatchingViewModel Create(Yw.Model.HydroModelInfo hydroInfo, Yw.Model.HydroPipeInfo pipeInfo, List<HydroCalcuResult> allCalcuResultList)
+        public static PipeMatchingViewModel Create(Yw.Model.HydroModelInfo hydroInfo, Yw.Model.HydroPipeInfo pipeInfo, List<HydroCalcuVisualResult> allCalcuResultList)
         {
             if (hydroInfo == null)
             {
@@ -106,7 +106,7 @@
         /// <summary>
         /// 鍒涘缓寮ご鑷姩鍖归厤ViewModel
         /// </summary>
-        public static ElbowMatchingViewModel Create(Yw.Model.HydroModelInfo hydroInfo, Yw.Model.HydroElbowInfo elbowInfo, List<HydroCalcuResult> allCalcuResultList)
+        public static ElbowMatchingViewModel Create(Yw.Model.HydroModelInfo hydroInfo, Yw.Model.HydroElbowInfo elbowInfo, List<HydroCalcuVisualResult> allCalcuResultList)
         {
             if (hydroInfo == null)
             {
@@ -133,7 +133,7 @@
         /// <summary>
         /// 鍒涘缓涓夐�氳嚜鍔ㄥ尮閰峍iewModel
         /// </summary>
-        public static ThreelinkMatchingViewModel Create(Yw.Model.HydroModelInfo hydroInfo, Yw.Model.HydroThreelinkInfo threelinkInfo, List<HydroCalcuResult> allCalcuResultList)
+        public static ThreelinkMatchingViewModel Create(Yw.Model.HydroModelInfo hydroInfo, Yw.Model.HydroThreelinkInfo threelinkInfo, List<HydroCalcuVisualResult> allCalcuResultList)
         {
             if (hydroInfo == null)
             {
@@ -160,7 +160,7 @@
         /// <summary>
         /// 鍒涘缓鍥涢�氳嚜鍔ㄥ尮閰峍iewModel
         /// </summary>
-        public static FourlinkMatchingViewModel Create(Yw.Model.HydroModelInfo hydroInfo, Yw.Model.HydroFourlinkInfo fourlinkInfo, List<HydroCalcuResult> allCalcuResultList)
+        public static FourlinkMatchingViewModel Create(Yw.Model.HydroModelInfo hydroInfo, Yw.Model.HydroFourlinkInfo fourlinkInfo, List<HydroCalcuVisualResult> allCalcuResultList)
         {
             if (hydroInfo == null)
             {
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/01-property/XhsProjectSimulationPropertyCtrl.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/01-property/XhsProjectSimulationPropertyCtrl.cs
index 6ea7d53..b02805d 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/01-property/XhsProjectSimulationPropertyCtrl.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/01-property/XhsProjectSimulationPropertyCtrl.cs
@@ -62,12 +62,12 @@
 
         //姘村姏淇℃伅鏂规硶
         private Func<Yw.Model.HydroModelInfo> _hydroInfoFunc = null;
-        private Func<List<HydroCalcuResult>> _allHydroCalcuResultListFunc = null;
+        private Func<List<HydroCalcuVisualResult>> _allHydroCalcuResultListFunc = null;
 
         /// <summary>
         /// 鍒濆鍖栨暟鎹�
         /// </summary>
-        public void InitialData(Func<Yw.Model.HydroModelInfo> hydroInfoFunc, Func<List<HydroCalcuResult>> allHydroCalcuResultListFunc)
+        public void InitialData(Func<Yw.Model.HydroModelInfo> hydroInfoFunc, Func<List<HydroCalcuVisualResult>> allHydroCalcuResultListFunc)
         {
             _hydroInfoFunc = hydroInfoFunc;
             _allHydroCalcuResultListFunc = allHydroCalcuResultListFunc;
@@ -125,7 +125,7 @@
         /// <summary>
         /// 鏇存柊璁$畻灞炴��
         /// </summary>
-        public void UpdateCalcuProperty(Yw.WinFrmUI.HydroCalcuResult calcuResult)
+        public void UpdateCalcuProperty(Yw.WinFrmUI.HydroCalcuVisualResult calcuResult)
         {
             if (calcuResult == null)
             {
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/01-add/00-viewmodel/ISetSchemeParterList.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/01-add/00-viewmodel/ISetSchemeParterList.cs
index 49856bd..f5ac033 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/01-add/00-viewmodel/ISetSchemeParterList.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/01-add/00-viewmodel/ISetSchemeParterList.cs
@@ -25,7 +25,7 @@
         /// <summary>
         /// 缁戝畾鏁版嵁
         /// </summary>
-        void SetBindingData(Yw.Model.HydroModelInfo hydroInfo, List<HydroCalcuResult> allCalcuResultList);
+        void SetBindingData(Yw.Model.HydroModelInfo hydroInfo, List<HydroCalcuVisualResult> allCalcuResultList);
 
         /// <summary>
         /// 鏇存柊灞炴��
@@ -45,7 +45,7 @@
         /// <summary>
         /// 鏇存柊璁$畻灞炴��
         /// </summary>
-        void UpdateCalcuProperty(List<HydroCalcuResult> allCalcuResultList);
+        void UpdateCalcuProperty(List<HydroCalcuVisualResult> allCalcuResultList);
 
         /// <summary>
         /// 鏄惁鏈夋按鍒╁垪琛�
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/01-add/01-set/01-pump/SetSchemePumpListCtrl.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/01-add/01-set/01-pump/SetSchemePumpListCtrl.cs
index c5a0e7d..66be45a 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/01-add/01-set/01-pump/SetSchemePumpListCtrl.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/01-add/01-set/01-pump/SetSchemePumpListCtrl.cs
@@ -92,7 +92,7 @@
         /// <summary>
         /// 缁戝畾鏁版嵁
         /// </summary>
-        public void SetBindingData(Yw.Model.HydroModelInfo hydroInfo, List<HydroCalcuResult> allCalcuResultList)
+        public void SetBindingData(Yw.Model.HydroModelInfo hydroInfo, List<HydroCalcuVisualResult> allCalcuResultList)
         {
             _allList = new List<HydroPumpViewModel>();
             if (hydroInfo != null && hydroInfo.Pumps != null && hydroInfo.Pumps.Count > 0)
@@ -173,7 +173,7 @@
         /// <summary>
         /// 鏇存柊璁$畻灞炴��
         /// </summary>
-        public void UpdateCalcuProperty(List<HydroCalcuResult> allCalcuResultList)
+        public void UpdateCalcuProperty(List<HydroCalcuVisualResult> allCalcuResultList)
         {
             if (allCalcuResultList != null && allCalcuResultList.Count > 0)
             {
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/01-add/01-set/02-valve/SetSchemeValveListCtrl.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/01-add/01-set/02-valve/SetSchemeValveListCtrl.cs
index 4e17171..c0b44d9 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/01-add/01-set/02-valve/SetSchemeValveListCtrl.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/01-add/01-set/02-valve/SetSchemeValveListCtrl.cs
@@ -88,7 +88,7 @@
         /// <summary>
         /// 缁戝畾鏁版嵁
         /// </summary>
-        public void SetBindingData(Yw.Model.HydroModelInfo hydroInfo, List<HydroCalcuResult> allCalcuResultList)
+        public void SetBindingData(Yw.Model.HydroModelInfo hydroInfo, List<HydroCalcuVisualResult> allCalcuResultList)
         {
             _allList = new List<HydroValveViewModel>();
             if (hydroInfo != null && hydroInfo.Valves != null && hydroInfo.Valves.Count > 0)
@@ -169,7 +169,7 @@
         /// <summary>
         /// 鏇存柊璁$畻灞炴��
         /// </summary>
-        public void UpdateCalcuProperty(List<HydroCalcuResult> allCalcuResultList)
+        public void UpdateCalcuProperty(List<HydroCalcuVisualResult> allCalcuResultList)
         {
             if (allCalcuResultList != null && allCalcuResultList.Count > 0)
             {
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/01-add/01-set/03-pipe/SetSchemePipeListCtrl.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/01-add/01-set/03-pipe/SetSchemePipeListCtrl.cs
index 4635281..9b499a6 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/01-add/01-set/03-pipe/SetSchemePipeListCtrl.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/01-add/01-set/03-pipe/SetSchemePipeListCtrl.cs
@@ -88,7 +88,7 @@
         /// <summary>
         /// 缁戝畾鏁版嵁
         /// </summary>
-        public void SetBindingData(Yw.Model.HydroModelInfo hydroInfo, List<HydroCalcuResult> allCalcuResultList)
+        public void SetBindingData(Yw.Model.HydroModelInfo hydroInfo, List<HydroCalcuVisualResult> allCalcuResultList)
         {
             _allList = new List<HydroPipeViewModel>();
             if (hydroInfo != null && hydroInfo.Pipes != null && hydroInfo.Pipes.Count > 0)
@@ -169,7 +169,7 @@
         /// <summary>
         /// 鏇存柊璁$畻灞炴��
         /// </summary>
-        public void UpdateCalcuProperty(List<HydroCalcuResult> allCalcuResultList)
+        public void UpdateCalcuProperty(List<HydroCalcuVisualResult> allCalcuResultList)
         {
             if (allCalcuResultList != null && allCalcuResultList.Count > 0)
             {
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/XhsProjectSimulationSchemeMgrPage.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/XhsProjectSimulationSchemeMgrPage.cs
index d30191d..cc18e11 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/XhsProjectSimulationSchemeMgrPage.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/XhsProjectSimulationSchemeMgrPage.cs
@@ -1156,11 +1156,11 @@
         #region 璁$畻缁撴灉
 
         //鎵�鏈夎绠楃粨鏋滃垪琛�
-        private List<HydroCalcuResult> _allCalcuResultList = null;
+        private List<HydroCalcuVisualResult> _allCalcuResultList = null;
 
         //鑾峰彇璁$畻缁撴灉
         //true 浣跨敤缂撳瓨锛宖alse 涓嶄娇鐢ㄧ紦瀛�
-        private List<HydroCalcuResult> GetCalcuResultList(bool isCache = true)
+        private List<HydroCalcuVisualResult> GetCalcuResultList(bool isCache = true)
         {
             if (_hydroInfo == null)
             {
@@ -1179,7 +1179,7 @@
                 return _allCalcuResultList;
             }
 
-            _allCalcuResultList = new List<HydroCalcuResult>();
+            _allCalcuResultList = new List<HydroCalcuVisualResult>();
 
             //鑺傜偣
             var allNodeList = _hydroInfo.GetAllNodes();
@@ -2075,7 +2075,7 @@
                     {
                         Code = Yw.Hydro.ParterCatalog.Pipe,
                         Name = Yw.WinFrmUI.HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Pipe),
-                        PropName = HydroCalcuProp.CalcuFlow
+                        PropName = HydroVisualCalcuProp.CalcuFlow
                     });
                 }
             }
@@ -2142,9 +2142,9 @@
                                                     }
                                                 }
                                                 break;
-                                            case HydroCalcuProp.CalcuFlow:
+                                            case HydroVisualCalcuProp.CalcuFlow:
                                                 {
-                                                    var gradingList = allCatalogGradingList.Where(x => x.PropName == HydroCalcuProp.CalcuFlow).OrderBy(t => t.SortCode).ToList();
+                                                    var gradingList = allCatalogGradingList.Where(x => x.PropName == HydroVisualCalcuProp.CalcuFlow).OrderBy(t => t.SortCode).ToList();
                                                     if (gradingList != null && gradingList.Count > 0)
                                                     {
                                                         var calcuResult = allCalcuResultList?.Find(t => t.Code == pump.Code);
@@ -2167,9 +2167,9 @@
                                                     }
                                                 }
                                                 break;
-                                            case HydroCalcuProp.CalcuVelocity:
+                                            case HydroVisualCalcuProp.CalcuVelocity:
                                                 {
-                                                    var gradingList = allCatalogGradingList.Where(x => x.PropName == HydroCalcuProp.CalcuVelocity).OrderBy(t => t.SortCode).ToList();
+                                                    var gradingList = allCatalogGradingList.Where(x => x.PropName == HydroVisualCalcuProp.CalcuVelocity).OrderBy(t => t.SortCode).ToList();
                                                     if (gradingList != null && gradingList.Count > 0)
                                                     {
                                                         var calcuResult = allCalcuResultList?.Find(t => t.Code == pump.Code);
@@ -2192,9 +2192,9 @@
                                                     }
                                                 }
                                                 break;
-                                            case HydroCalcuProp.CalcuHeadLoss:
+                                            case HydroVisualCalcuProp.CalcuHeadLoss:
                                                 {
-                                                    var gradingList = allCatalogGradingList.Where(x => x.PropName == HydroCalcuProp.CalcuHeadLoss).OrderBy(t => t.SortCode).ToList();
+                                                    var gradingList = allCatalogGradingList.Where(x => x.PropName == HydroVisualCalcuProp.CalcuHeadLoss).OrderBy(t => t.SortCode).ToList();
                                                     if (gradingList != null && gradingList.Count > 0)
                                                     {
                                                         var calcuResult = allCalcuResultList?.Find(t => t.Code == pump.Code);
@@ -2249,9 +2249,9 @@
                                                     }
                                                 }
                                                 break;
-                                            case HydroCalcuProp.CalcuFlow:
+                                            case HydroVisualCalcuProp.CalcuFlow:
                                                 {
-                                                    var gradingList = allCatalogGradingList.Where(x => x.PropName == HydroCalcuProp.CalcuFlow).OrderBy(t => t.SortCode).ToList();
+                                                    var gradingList = allCatalogGradingList.Where(x => x.PropName == HydroVisualCalcuProp.CalcuFlow).OrderBy(t => t.SortCode).ToList();
                                                     if (gradingList != null && gradingList.Count > 0)
                                                     {
                                                         var calcuResult = allCalcuResultList?.Find(t => t.Code == valve.Code);
@@ -2274,9 +2274,9 @@
                                                     }
                                                 }
                                                 break;
-                                            case HydroCalcuProp.CalcuVelocity:
+                                            case HydroVisualCalcuProp.CalcuVelocity:
                                                 {
-                                                    var gradingList = allCatalogGradingList.Where(x => x.PropName == HydroCalcuProp.CalcuVelocity).OrderBy(t => t.SortCode).ToList();
+                                                    var gradingList = allCatalogGradingList.Where(x => x.PropName == HydroVisualCalcuProp.CalcuVelocity).OrderBy(t => t.SortCode).ToList();
                                                     if (gradingList != null && gradingList.Count > 0)
                                                     {
                                                         var calcuResult = allCalcuResultList?.Find(t => t.Code == valve.Code);
@@ -2299,9 +2299,9 @@
                                                     }
                                                 }
                                                 break;
-                                            case HydroCalcuProp.CalcuHeadLoss:
+                                            case HydroVisualCalcuProp.CalcuHeadLoss:
                                                 {
-                                                    var gradingList = allCatalogGradingList.Where(x => x.PropName == HydroCalcuProp.CalcuHeadLoss).OrderBy(t => t.SortCode).ToList();
+                                                    var gradingList = allCatalogGradingList.Where(x => x.PropName == HydroVisualCalcuProp.CalcuHeadLoss).OrderBy(t => t.SortCode).ToList();
                                                     if (gradingList != null && gradingList.Count > 0)
                                                     {
                                                         var calcuResult = allCalcuResultList?.Find(t => t.Code == valve.Code);
@@ -2338,9 +2338,9 @@
                                     {
                                         switch (x.PropName)
                                         {
-                                            case HydroCalcuProp.CalcuFlow:
+                                            case HydroVisualCalcuProp.CalcuFlow:
                                                 {
-                                                    var gradingList = allCatalogGradingList.Where(x => x.PropName == HydroCalcuProp.CalcuFlow).OrderBy(t => t.SortCode).ToList();
+                                                    var gradingList = allCatalogGradingList.Where(x => x.PropName == HydroVisualCalcuProp.CalcuFlow).OrderBy(t => t.SortCode).ToList();
                                                     if (gradingList != null && gradingList.Count > 0)
                                                     {
                                                         var calcuResult = allCalcuResultList?.Find(t => t.Code == pipe.Code);
@@ -2363,9 +2363,9 @@
                                                     }
                                                 }
                                                 break;
-                                            case HydroCalcuProp.CalcuVelocity:
+                                            case HydroVisualCalcuProp.CalcuVelocity:
                                                 {
-                                                    var gradingList = allCatalogGradingList.Where(x => x.PropName == HydroCalcuProp.CalcuVelocity).OrderBy(t => t.SortCode).ToList();
+                                                    var gradingList = allCatalogGradingList.Where(x => x.PropName == HydroVisualCalcuProp.CalcuVelocity).OrderBy(t => t.SortCode).ToList();
                                                     if (gradingList != null && gradingList.Count > 0)
                                                     {
                                                         var calcuResult = allCalcuResultList?.Find(t => t.Code == pipe.Code);
@@ -2388,9 +2388,9 @@
                                                     }
                                                 }
                                                 break;
-                                            case HydroCalcuProp.CalcuHeadLoss:
+                                            case HydroVisualCalcuProp.CalcuHeadLoss:
                                                 {
-                                                    var gradingList = allCatalogGradingList.Where(x => x.PropName == HydroCalcuProp.CalcuHeadLoss).OrderBy(t => t.SortCode).ToList();
+                                                    var gradingList = allCatalogGradingList.Where(x => x.PropName == HydroVisualCalcuProp.CalcuHeadLoss).OrderBy(t => t.SortCode).ToList();
                                                     if (gradingList != null && gradingList.Count > 0)
                                                     {
                                                         var calcuResult = allCalcuResultList?.Find(t => t.Code == pipe.Code);
@@ -2496,9 +2496,9 @@
                                             }
                                         }
                                         break;
-                                    case HydroCalcuProp.CalcuFlow:
+                                    case HydroVisualCalcuProp.CalcuFlow:
                                         {
-                                            var gradingList = currentGradingList.Where(x => x.PropName == HydroCalcuProp.CalcuFlow).OrderBy(t => t.SortCode).ToList();
+                                            var gradingList = currentGradingList.Where(x => x.PropName == HydroVisualCalcuProp.CalcuFlow).OrderBy(t => t.SortCode).ToList();
                                             if (gradingList != null && gradingList.Count > 0)
                                             {
                                                 var calcuResult = allCalcuResultList?.Find(t => t.Code == pump.Code);
@@ -2521,9 +2521,9 @@
                                             }
                                         }
                                         break;
-                                    case HydroCalcuProp.CalcuVelocity:
+                                    case HydroVisualCalcuProp.CalcuVelocity:
                                         {
-                                            var gradingList = currentGradingList.Where(x => x.PropName == HydroCalcuProp.CalcuVelocity).OrderBy(t => t.SortCode).ToList();
+                                            var gradingList = currentGradingList.Where(x => x.PropName == HydroVisualCalcuProp.CalcuVelocity).OrderBy(t => t.SortCode).ToList();
                                             if (gradingList != null && gradingList.Count > 0)
                                             {
                                                 var calcuResult = allCalcuResultList?.Find(t => t.Code == pump.Code);
@@ -2546,9 +2546,9 @@
                                             }
                                         }
                                         break;
-                                    case HydroCalcuProp.CalcuHeadLoss:
+                                    case HydroVisualCalcuProp.CalcuHeadLoss:
                                         {
-                                            var gradingList = currentGradingList.Where(x => x.PropName == HydroCalcuProp.CalcuHeadLoss).OrderBy(t => t.SortCode).ToList();
+                                            var gradingList = currentGradingList.Where(x => x.PropName == HydroVisualCalcuProp.CalcuHeadLoss).OrderBy(t => t.SortCode).ToList();
                                             if (gradingList != null && gradingList.Count > 0)
                                             {
                                                 var calcuResult = allCalcuResultList?.Find(t => t.Code == pump.Code);
@@ -2603,9 +2603,9 @@
                                             }
                                         }
                                         break;
-                                    case HydroCalcuProp.CalcuFlow:
+                                    case HydroVisualCalcuProp.CalcuFlow:
                                         {
-                                            var gradingList = currentGradingList.Where(x => x.PropName == HydroCalcuProp.CalcuFlow).OrderBy(t => t.SortCode).ToList();
+                                            var gradingList = currentGradingList.Where(x => x.PropName == HydroVisualCalcuProp.CalcuFlow).OrderBy(t => t.SortCode).ToList();
                                             if (gradingList != null && gradingList.Count > 0)
                                             {
                                                 var calcuResult = allCalcuResultList?.Find(t => t.Code == valve.Code);
@@ -2628,9 +2628,9 @@
                                             }
                                         }
                                         break;
-                                    case HydroCalcuProp.CalcuVelocity:
+                                    case HydroVisualCalcuProp.CalcuVelocity:
                                         {
-                                            var gradingList = currentGradingList.Where(x => x.PropName == HydroCalcuProp.CalcuVelocity).OrderBy(t => t.SortCode).ToList();
+                                            var gradingList = currentGradingList.Where(x => x.PropName == HydroVisualCalcuProp.CalcuVelocity).OrderBy(t => t.SortCode).ToList();
                                             if (gradingList != null && gradingList.Count > 0)
                                             {
                                                 var calcuResult = allCalcuResultList?.Find(t => t.Code == valve.Code);
@@ -2653,9 +2653,9 @@
                                             }
                                         }
                                         break;
-                                    case HydroCalcuProp.CalcuHeadLoss:
+                                    case HydroVisualCalcuProp.CalcuHeadLoss:
                                         {
-                                            var gradingList = currentGradingList.Where(x => x.PropName == HydroCalcuProp.CalcuHeadLoss).OrderBy(t => t.SortCode).ToList();
+                                            var gradingList = currentGradingList.Where(x => x.PropName == HydroVisualCalcuProp.CalcuHeadLoss).OrderBy(t => t.SortCode).ToList();
                                             if (gradingList != null && gradingList.Count > 0)
                                             {
                                                 var calcuResult = allCalcuResultList?.Find(t => t.Code == valve.Code);
@@ -2692,9 +2692,9 @@
                             {
                                 switch (propName)
                                 {
-                                    case HydroCalcuProp.CalcuFlow:
+                                    case HydroVisualCalcuProp.CalcuFlow:
                                         {
-                                            var gradingList = currentGradingList.Where(x => x.PropName == HydroCalcuProp.CalcuFlow).OrderBy(t => t.SortCode).ToList();
+                                            var gradingList = currentGradingList.Where(x => x.PropName == HydroVisualCalcuProp.CalcuFlow).OrderBy(t => t.SortCode).ToList();
                                             if (gradingList != null && gradingList.Count > 0)
                                             {
                                                 var calcuResult = allCalcuResultList?.Find(t => t.Code == pipe.Code);
@@ -2717,9 +2717,9 @@
                                             }
                                         }
                                         break;
-                                    case HydroCalcuProp.CalcuVelocity:
+                                    case HydroVisualCalcuProp.CalcuVelocity:
                                         {
-                                            var gradingList = currentGradingList.Where(x => x.PropName == HydroCalcuProp.CalcuVelocity).OrderBy(t => t.SortCode).ToList();
+                                            var gradingList = currentGradingList.Where(x => x.PropName == HydroVisualCalcuProp.CalcuVelocity).OrderBy(t => t.SortCode).ToList();
                                             if (gradingList != null && gradingList.Count > 0)
                                             {
                                                 var calcuResult = allCalcuResultList?.Find(t => t.Code == pipe.Code);
@@ -2742,9 +2742,9 @@
                                             }
                                         }
                                         break;
-                                    case HydroCalcuProp.CalcuHeadLoss:
+                                    case HydroVisualCalcuProp.CalcuHeadLoss:
                                         {
-                                            var gradingList = currentGradingList.Where(x => x.PropName == HydroCalcuProp.CalcuHeadLoss).OrderBy(t => t.SortCode).ToList();
+                                            var gradingList = currentGradingList.Where(x => x.PropName == HydroVisualCalcuProp.CalcuHeadLoss).OrderBy(t => t.SortCode).ToList();
                                             if (gradingList != null && gradingList.Count > 0)
                                             {
                                                 var calcuResult = allCalcuResultList?.Find(t => t.Code == pipe.Code);
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/01-matching/01-viewmodel/PumpMatchingViewModel.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/01-matching/01-viewmodel/PumpMatchingViewModel.cs
index 80c6d15..362d856 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/01-matching/01-viewmodel/PumpMatchingViewModel.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/01-matching/01-viewmodel/PumpMatchingViewModel.cs
@@ -13,7 +13,7 @@
         /// <summary>
         /// 
         /// </summary>
-        public PumpMatchingViewModel(Yw.Model.HydroPumpInfo rhs, Yw.Model.HydroModelInfo hydroInfo, List<HydroCalcuResult> allCalcuResult)
+        public PumpMatchingViewModel(Yw.Model.HydroPumpInfo rhs, Yw.Model.HydroModelInfo hydroInfo, List<HydroCalcuVisualResult> allCalcuResult)
         {
             this.ID = rhs.ID;
             this.Name = rhs.Name;
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/01-matching/01-viewmodel/ValveMatchingViewModel.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/01-matching/01-viewmodel/ValveMatchingViewModel.cs
index 93494fb..dbd593d 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/01-matching/01-viewmodel/ValveMatchingViewModel.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/01-matching/01-viewmodel/ValveMatchingViewModel.cs
@@ -17,7 +17,7 @@
         /// <summary>
         ///
         /// </summary>
-        public ValveMatchingViewModel(Yw.Model.HydroValveInfo rhs, Yw.Model.HydroModelInfo hydroInfo, List<HydroCalcuResult> allCalcuResult)
+        public ValveMatchingViewModel(Yw.Model.HydroValveInfo rhs, Yw.Model.HydroModelInfo hydroInfo, List<HydroCalcuVisualResult> allCalcuResult)
         {
             this.ID = rhs.ID;
             this.Name = rhs.Name;
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 f0d2b79..6e4490f 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
@@ -33,9 +33,9 @@
             components = new Container();
             ComponentResourceManager resources = new ComponentResourceManager(typeof(XhsProjectSimulationCorePage));
             ribbonControl1 = new DevExpress.XtraBars.Ribbon.RibbonControl();
-            barBtnHydroCheck = new DevExpress.XtraBars.BarButtonItem();
-            barBtnHydroCalcu = new DevExpress.XtraBars.BarButtonItem();
-            barBtnHydroExportInp = new DevExpress.XtraBars.BarButtonItem();
+            barBtnCheck = new DevExpress.XtraBars.BarButtonItem();
+            barBtnWorkingCalcu = new DevExpress.XtraBars.BarButtonItem();
+            barBtnExportInp = new DevExpress.XtraBars.BarButtonItem();
             barBtnSave = new DevExpress.XtraBars.BarButtonItem();
             barBtnHydroVisualList = new DevExpress.XtraBars.BarButtonItem();
             barBtnFastShowHidden = new DevExpress.XtraBars.BarButtonItem();
@@ -67,13 +67,24 @@
             barBtnSetCompressorList = new DevExpress.XtraBars.BarButtonItem();
             barBtnSetFlowmeterList = new DevExpress.XtraBars.BarButtonItem();
             barBtnSetPressmeterList = new DevExpress.XtraBars.BarButtonItem();
-            barBtnLoadFlowDirection = new DevExpress.XtraBars.BarButtonItem();
+            barBtnLoadFlowEffect = new DevExpress.XtraBars.BarButtonItem();
             barBtnUnloadFlowDirection = new DevExpress.XtraBars.BarButtonItem();
             barBtnClearMark = new DevExpress.XtraBars.BarButtonItem();
             batBtnCancelGradingApply = new DevExpress.XtraBars.BarButtonItem();
             barBtnSetMonitor = new DevExpress.XtraBars.BarButtonItem();
             barBtnSetMonitorValue = new DevExpress.XtraBars.BarButtonItem();
             barCkMonitor = new DevExpress.XtraBars.BarCheckItem();
+            barEditCurrentWorking = new DevExpress.XtraBars.BarEditItem();
+            repositoryItemImageComboBox1 = new DevExpress.XtraEditors.Repository.RepositoryItemImageComboBox();
+            barBtnWorkingCompare = new DevExpress.XtraBars.BarButtonItem();
+            barCkMark = new DevExpress.XtraBars.BarCheckItem();
+            barCkFlowEffect = new DevExpress.XtraBars.BarCheckItem();
+            barCkGrading = new DevExpress.XtraBars.BarCheckItem();
+            barCkCalcuResult = new DevExpress.XtraBars.BarCheckItem();
+            barBtnWorkingLossCurve = new DevExpress.XtraBars.BarButtonItem();
+            barBtnWorkingLossScale = new DevExpress.XtraBars.BarButtonItem();
+            barBtnWorkingPower = new DevExpress.XtraBars.BarButtonItem();
+            barBtnWorkingMulti = new DevExpress.XtraBars.BarButtonItem();
             ribbonPage1 = new DevExpress.XtraBars.Ribbon.RibbonPage();
             pageGroupMatching = new DevExpress.XtraBars.Ribbon.RibbonPageGroup();
             pageGroupModel = new DevExpress.XtraBars.Ribbon.RibbonPageGroup();
@@ -82,6 +93,7 @@
             ribbonPageGroup1 = new DevExpress.XtraBars.Ribbon.RibbonPageGroup();
             ribbonPageGroup7 = new DevExpress.XtraBars.Ribbon.RibbonPageGroup();
             ribbonPageGroup2 = new DevExpress.XtraBars.Ribbon.RibbonPageGroup();
+            ribbonPageGroup9 = new DevExpress.XtraBars.Ribbon.RibbonPageGroup();
             ribbonPageGroup3 = new DevExpress.XtraBars.Ribbon.RibbonPageGroup();
             ribbonPageGroup4 = new DevExpress.XtraBars.Ribbon.RibbonPageGroup();
             tabPane1 = new DevExpress.XtraBars.Navigation.TabPane();
@@ -94,10 +106,9 @@
             controlContainerBottom = new DevExpress.XtraBars.Docking.ControlContainer();
             svgImg32 = new DevExpress.Utils.SvgImageCollection(components);
             rmSet = new DevExpress.XtraBars.Ribbon.RadialMenu(components);
-            barEditCurrentWorking = new DevExpress.XtraBars.BarEditItem();
-            repositoryItemImageComboBox1 = new DevExpress.XtraEditors.Repository.RepositoryItemImageComboBox();
-            ribbonPageGroup8 = new DevExpress.XtraBars.Ribbon.RibbonPageGroup();
+            barBtnParallel = new DevExpress.XtraBars.BarButtonItem();
             ((ISupportInitialize)ribbonControl1).BeginInit();
+            ((ISupportInitialize)repositoryItemImageComboBox1).BeginInit();
             ((ISupportInitialize)tabPane1).BeginInit();
             tabPane1.SuspendLayout();
             ((ISupportInitialize)dockManager1).BeginInit();
@@ -105,16 +116,15 @@
             docPnlBottom.SuspendLayout();
             ((ISupportInitialize)svgImg32).BeginInit();
             ((ISupportInitialize)rmSet).BeginInit();
-            ((ISupportInitialize)repositoryItemImageComboBox1).BeginInit();
             SuspendLayout();
             // 
             // ribbonControl1
             // 
             ribbonControl1.ExpandCollapseItem.Id = 0;
             ribbonControl1.ItemPanelStyle = DevExpress.XtraBars.Ribbon.RibbonItemPanelStyle.Classic;
-            ribbonControl1.Items.AddRange(new DevExpress.XtraBars.BarItem[] { ribbonControl1.ExpandCollapseItem, barBtnHydroCheck, barBtnHydroCalcu, barBtnHydroExportInp, barBtnSave, barBtnHydroVisualList, barBtnFastShowHidden, barBtnMatchingList, barBtnUnMatchingList, barBtnSetList, barBtnSetPumpList, barBtnSetValveList, barBtnSetPipeList, barBtnSetElbowsList, barBtnSetThreelinkList, barBtnSetFourlinkList, barBtnSetTranslationList, barBtnSetExchangerList, barBtnSetJunctionList, barBtnParallelAnaly, barBtnSearch, barBtnGradingSet, barBtnGradingApply, barBtnRefresh, barBtnSetMark, barBtnSetReservoirList, barBtnSetTankList, barBtnSetWaterboxList, barBtnSetBluntheadList, barBtnSetNozzleList, barBtnSetHydrantList, barBtnSetMeterList, barBtnSetCompressorList, barBtnSetFlowmeterList, barBtnSetPressmeterList, barBtnLoadFlowDirection, barBtnUnloadFlowDirection, barBtnClearMark, batBtnCancelGradingApply, barBtnSetMonitor, barBtnSetMonitorValue, barCkMonitor, barEditCurrentWorking });
+            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, barBtnParallelAnaly, barBtnSearch, barBtnGradingSet, barBtnGradingApply, barBtnRefresh, barBtnSetMark, barBtnSetReservoirList, barBtnSetTankList, barBtnSetWaterboxList, barBtnSetBluntheadList, barBtnSetNozzleList, barBtnSetHydrantList, barBtnSetMeterList, barBtnSetCompressorList, barBtnSetFlowmeterList, barBtnSetPressmeterList, barBtnLoadFlowEffect, barBtnUnloadFlowDirection, barBtnClearMark, batBtnCancelGradingApply, barBtnSetMonitor, barBtnSetMonitorValue, barCkMonitor, barEditCurrentWorking, barBtnWorkingCompare, barCkMark, barCkFlowEffect, barCkGrading, barCkCalcuResult, barBtnWorkingLossCurve, barBtnWorkingLossScale, barBtnWorkingPower, barBtnWorkingMulti, barBtnParallel });
             ribbonControl1.Location = new Point(0, 0);
-            ribbonControl1.MaxItemId = 64;
+            ribbonControl1.MaxItemId = 74;
             ribbonControl1.Name = "ribbonControl1";
             ribbonControl1.Pages.AddRange(new DevExpress.XtraBars.Ribbon.RibbonPage[] { ribbonPage1 });
             ribbonControl1.RepositoryItems.AddRange(new DevExpress.XtraEditors.Repository.RepositoryItem[] { repositoryItemImageComboBox1 });
@@ -122,33 +132,34 @@
             ribbonControl1.ShowPageHeadersMode = DevExpress.XtraBars.Ribbon.ShowPageHeadersMode.ShowOnMultiplePages;
             ribbonControl1.ShowQatLocationSelector = false;
             ribbonControl1.ShowToolbarCustomizeItem = false;
-            ribbonControl1.Size = new Size(1535, 128);
+            ribbonControl1.Size = new Size(1941, 128);
             ribbonControl1.Toolbar.ShowCustomizeItem = false;
             ribbonControl1.ToolbarLocation = DevExpress.XtraBars.Ribbon.RibbonQuickAccessToolbarLocation.Hidden;
             // 
-            // barBtnHydroCheck
+            // barBtnCheck
             // 
-            barBtnHydroCheck.Caption = "妫�鏌�";
-            barBtnHydroCheck.Id = 1;
-            barBtnHydroCheck.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnHydroCheck.ImageOptions.SvgImage");
-            barBtnHydroCheck.Name = "barBtnHydroCheck";
-            barBtnHydroCheck.ItemClick += barBtnHydroCheck_ItemClick;
+            barBtnCheck.Caption = "姘村姏妫�鏌�";
+            barBtnCheck.Id = 1;
+            barBtnCheck.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnCheck.ImageOptions.SvgImage");
+            barBtnCheck.Name = "barBtnCheck";
+            barBtnCheck.ItemClick += barBtnCheck_ItemClick;
             // 
-            // barBtnHydroCalcu
+            // barBtnWorkingCalcu
             // 
-            barBtnHydroCalcu.Caption = "璁$畻";
-            barBtnHydroCalcu.Id = 2;
-            barBtnHydroCalcu.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnHydroCalcu.ImageOptions.SvgImage");
-            barBtnHydroCalcu.Name = "barBtnHydroCalcu";
-            barBtnHydroCalcu.ItemClick += barBtnHydroCalcu_ItemClick;
+            barBtnWorkingCalcu.Caption = "宸ュ喌璁$畻";
+            barBtnWorkingCalcu.Id = 2;
+            barBtnWorkingCalcu.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnHydroCalcu.ImageOptions.SvgImage");
+            barBtnWorkingCalcu.Name = "barBtnWorkingCalcu";
+            barBtnWorkingCalcu.RibbonStyle = DevExpress.XtraBars.Ribbon.RibbonItemStyles.Large;
+            barBtnWorkingCalcu.ItemClick += barBtnHydroCalcu_ItemClick;
             // 
-            // barBtnHydroExportInp
+            // barBtnExportInp
             // 
-            barBtnHydroExportInp.Caption = "瀵煎嚭Inp";
-            barBtnHydroExportInp.Id = 4;
-            barBtnHydroExportInp.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnHydroExportInp.ImageOptions.SvgImage");
-            barBtnHydroExportInp.Name = "barBtnHydroExportInp";
-            barBtnHydroExportInp.ItemClick += barBtnHydroExportInp_ItemClick;
+            barBtnExportInp.Caption = "瀵煎嚭Inp鏂囦欢";
+            barBtnExportInp.Id = 4;
+            barBtnExportInp.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnExportInp.ImageOptions.SvgImage");
+            barBtnExportInp.Name = "barBtnExportInp";
+            barBtnExportInp.ItemClick += barBtnExportInp_ItemClick;
             // 
             // barBtnSave
             // 
@@ -377,13 +388,13 @@
             barBtnSetPressmeterList.Id = 50;
             barBtnSetPressmeterList.Name = "barBtnSetPressmeterList";
             // 
-            // barBtnLoadFlowDirection
+            // barBtnLoadFlowEffect
             // 
-            barBtnLoadFlowDirection.Caption = "鍔犺浇";
-            barBtnLoadFlowDirection.Id = 51;
-            barBtnLoadFlowDirection.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnLoadFlowDirection.ImageOptions.SvgImage");
-            barBtnLoadFlowDirection.Name = "barBtnLoadFlowDirection";
-            barBtnLoadFlowDirection.ItemClick += barBtnLoadFlowDirection_ItemClick;
+            barBtnLoadFlowEffect.Caption = "鍔犺浇";
+            barBtnLoadFlowEffect.Id = 51;
+            barBtnLoadFlowEffect.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnLoadFlowEffect.ImageOptions.SvgImage");
+            barBtnLoadFlowEffect.Name = "barBtnLoadFlowEffect";
+            barBtnLoadFlowEffect.ItemClick += barBtnLoadFlowDirection_ItemClick;
             // 
             // barBtnUnloadFlowDirection
             // 
@@ -433,9 +444,87 @@
             barCkMonitor.Name = "barCkMonitor";
             barCkMonitor.CheckedChanged += barCkMonitor_CheckedChanged;
             // 
+            // barEditCurrentWorking
+            // 
+            barEditCurrentWorking.Caption = "宸ュ喌";
+            barEditCurrentWorking.Edit = repositoryItemImageComboBox1;
+            barEditCurrentWorking.Id = 63;
+            barEditCurrentWorking.Name = "barEditCurrentWorking";
+            // 
+            // repositoryItemImageComboBox1
+            // 
+            repositoryItemImageComboBox1.AutoHeight = false;
+            repositoryItemImageComboBox1.Buttons.AddRange(new EditorButton[] { new EditorButton(ButtonPredefines.Combo) });
+            repositoryItemImageComboBox1.Name = "repositoryItemImageComboBox1";
+            // 
+            // barBtnWorkingCompare
+            // 
+            barBtnWorkingCompare.Caption = "宸ュ喌瀵规瘮";
+            barBtnWorkingCompare.Id = 64;
+            barBtnWorkingCompare.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnWorkingCompare.ImageOptions.SvgImage");
+            barBtnWorkingCompare.Name = "barBtnWorkingCompare";
+            // 
+            // barCkMark
+            // 
+            barCkMark.Caption = "鏄剧ず";
+            barCkMark.CheckBoxVisibility = DevExpress.XtraBars.CheckBoxVisibility.AfterText;
+            barCkMark.Id = 65;
+            barCkMark.Name = "barCkMark";
+            barCkMark.CheckedChanged += barCkMark_CheckedChanged;
+            // 
+            // barCkFlowEffect
+            // 
+            barCkFlowEffect.Caption = "鏄剧ず";
+            barCkFlowEffect.CheckBoxVisibility = DevExpress.XtraBars.CheckBoxVisibility.AfterText;
+            barCkFlowEffect.Id = 66;
+            barCkFlowEffect.Name = "barCkFlowEffect";
+            barCkFlowEffect.CheckedChanged += barCkFlowEffect_CheckedChanged;
+            // 
+            // barCkGrading
+            // 
+            barCkGrading.Caption = "鏄剧ず";
+            barCkGrading.CheckBoxVisibility = DevExpress.XtraBars.CheckBoxVisibility.AfterText;
+            barCkGrading.Id = 67;
+            barCkGrading.Name = "barCkGrading";
+            // 
+            // barCkCalcuResult
+            // 
+            barCkCalcuResult.Caption = "鏄剧ず";
+            barCkCalcuResult.CheckBoxVisibility = DevExpress.XtraBars.CheckBoxVisibility.AfterText;
+            barCkCalcuResult.Id = 68;
+            barCkCalcuResult.Name = "barCkCalcuResult";
+            // 
+            // barBtnWorkingLossCurve
+            // 
+            barBtnWorkingLossCurve.Caption = "鎹熷け鏇茬嚎";
+            barBtnWorkingLossCurve.Id = 69;
+            barBtnWorkingLossCurve.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnWorkingLossCurve.ImageOptions.SvgImage");
+            barBtnWorkingLossCurve.Name = "barBtnWorkingLossCurve";
+            // 
+            // barBtnWorkingLossScale
+            // 
+            barBtnWorkingLossScale.Caption = "鎹熷け姣斾緥";
+            barBtnWorkingLossScale.Id = 70;
+            barBtnWorkingLossScale.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnWorkingLossScale.ImageOptions.SvgImage");
+            barBtnWorkingLossScale.Name = "barBtnWorkingLossScale";
+            // 
+            // barBtnWorkingPower
+            // 
+            barBtnWorkingPower.Caption = "鍔熻�楀垎鏋�";
+            barBtnWorkingPower.Id = 71;
+            barBtnWorkingPower.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnWorkingPower.ImageOptions.SvgImage");
+            barBtnWorkingPower.Name = "barBtnWorkingPower";
+            // 
+            // barBtnWorkingMulti
+            // 
+            barBtnWorkingMulti.Caption = "缁煎悎鍒嗘瀽";
+            barBtnWorkingMulti.Id = 72;
+            barBtnWorkingMulti.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnWorkingMulti.ImageOptions.SvgImage");
+            barBtnWorkingMulti.Name = "barBtnWorkingMulti";
+            // 
             // ribbonPage1
             // 
-            ribbonPage1.Groups.AddRange(new DevExpress.XtraBars.Ribbon.RibbonPageGroup[] { pageGroupMatching, pageGroupModel, ribbonPageGroup6, ribbonPageGroup5, ribbonPageGroup1, ribbonPageGroup7, ribbonPageGroup2, ribbonPageGroup8, ribbonPageGroup3 });
+            ribbonPage1.Groups.AddRange(new DevExpress.XtraBars.Ribbon.RibbonPageGroup[] { pageGroupMatching, pageGroupModel, ribbonPageGroup6, ribbonPageGroup5, ribbonPageGroup1, ribbonPageGroup7, ribbonPageGroup2, ribbonPageGroup9, ribbonPageGroup3 });
             ribbonPage1.Name = "ribbonPage1";
             ribbonPage1.Text = "ribbonPage1";
             // 
@@ -459,13 +548,15 @@
             // 
             ribbonPageGroup6.ItemLinks.Add(barBtnSetMark);
             ribbonPageGroup6.ItemLinks.Add(barBtnClearMark);
+            ribbonPageGroup6.ItemLinks.Add(barCkMark);
             ribbonPageGroup6.Name = "ribbonPageGroup6";
             ribbonPageGroup6.Text = "鏍囨敞";
             // 
             // ribbonPageGroup5
             // 
-            ribbonPageGroup5.ItemLinks.Add(barBtnLoadFlowDirection);
+            ribbonPageGroup5.ItemLinks.Add(barBtnLoadFlowEffect);
             ribbonPageGroup5.ItemLinks.Add(barBtnUnloadFlowDirection);
+            ribbonPageGroup5.ItemLinks.Add(barCkFlowEffect);
             ribbonPageGroup5.Name = "ribbonPageGroup5";
             ribbonPageGroup5.Text = "娴佸悜";
             // 
@@ -474,6 +565,7 @@
             ribbonPageGroup1.ItemLinks.Add(barBtnGradingSet);
             ribbonPageGroup1.ItemLinks.Add(barBtnGradingApply);
             ribbonPageGroup1.ItemLinks.Add(batBtnCancelGradingApply);
+            ribbonPageGroup1.ItemLinks.Add(barCkGrading);
             ribbonPageGroup1.Name = "ribbonPageGroup1";
             ribbonPageGroup1.Text = "棰滆壊鍒嗙骇";
             // 
@@ -487,17 +579,29 @@
             // 
             // ribbonPageGroup2
             // 
-            ribbonPageGroup2.ItemLinks.Add(barBtnHydroCheck);
-            ribbonPageGroup2.ItemLinks.Add(barEditCurrentWorking);
-            ribbonPageGroup2.ItemLinks.Add(barBtnParallelAnaly);
-            ribbonPageGroup2.ItemLinks.Add(barBtnHydroCalcu);
+            ribbonPageGroup2.ItemLinks.Add(barBtnCheck);
+            ribbonPageGroup2.ItemLinks.Add(barBtnParallel);
+            ribbonPageGroup2.ItemLinks.Add(barBtnExportInp);
+            ribbonPageGroup2.ItemLinks.Add(barBtnWorkingCalcu);
             ribbonPageGroup2.Name = "ribbonPageGroup2";
-            ribbonPageGroup2.Text = "姘村姏";
+            ribbonPageGroup2.Text = "妯℃嫙璁$畻";
+            // 
+            // ribbonPageGroup9
+            // 
+            ribbonPageGroup9.ItemLinks.Add(barEditCurrentWorking);
+            ribbonPageGroup9.ItemLinks.Add(barCkCalcuResult);
+            ribbonPageGroup9.ItemLinks.Add(barBtnWorkingLossCurve);
+            ribbonPageGroup9.ItemLinks.Add(barBtnWorkingLossScale);
+            ribbonPageGroup9.ItemLinks.Add(barBtnWorkingPower);
+            ribbonPageGroup9.ItemLinks.Add(barBtnParallelAnaly);
+            ribbonPageGroup9.ItemLinks.Add(barBtnWorkingMulti);
+            ribbonPageGroup9.ItemLinks.Add(barBtnWorkingCompare);
+            ribbonPageGroup9.Name = "ribbonPageGroup9";
+            ribbonPageGroup9.Text = "宸ュ喌鍒嗘瀽";
             // 
             // ribbonPageGroup3
             // 
             ribbonPageGroup3.ItemLinks.Add(barBtnSave);
-            ribbonPageGroup3.ItemLinks.Add(barBtnHydroExportInp);
             ribbonPageGroup3.ItemLinks.Add(barBtnRefresh);
             ribbonPageGroup3.Name = "ribbonPageGroup3";
             ribbonPageGroup3.Text = "鏇村...";
@@ -515,9 +619,9 @@
             tabPane1.Location = new Point(0, 128);
             tabPane1.Name = "tabPane1";
             tabPane1.Pages.AddRange(new DevExpress.XtraBars.Navigation.NavigationPageBase[] { tabPageBimface, tabPageQ3d });
-            tabPane1.RegularSize = new Size(1260, 407);
+            tabPane1.RegularSize = new Size(1666, 407);
             tabPane1.SelectedPage = tabPageBimface;
-            tabPane1.Size = new Size(1260, 407);
+            tabPane1.Size = new Size(1666, 407);
             tabPane1.TabIndex = 1;
             tabPane1.Text = "tabPane1";
             // 
@@ -525,7 +629,7 @@
             // 
             tabPageBimface.Caption = "涓夌淮妯″瀷";
             tabPageBimface.Name = "tabPageBimface";
-            tabPageBimface.Size = new Size(1260, 374);
+            tabPageBimface.Size = new Size(1666, 374);
             // 
             // tabPageQ3d
             // 
@@ -544,7 +648,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(1260, 128);
+            docPnlRight.Location = new Point(1666, 128);
             docPnlRight.Name = "docPnlRight";
             docPnlRight.OriginalSize = new Size(275, 200);
             docPnlRight.Size = new Size(275, 572);
@@ -565,14 +669,14 @@
             docPnlBottom.Location = new Point(0, 535);
             docPnlBottom.Name = "docPnlBottom";
             docPnlBottom.OriginalSize = new Size(200, 165);
-            docPnlBottom.Size = new Size(1260, 165);
+            docPnlBottom.Size = new Size(1666, 165);
             docPnlBottom.Text = "搴曢儴鍔熻兘闈㈡澘";
             // 
             // controlContainerBottom
             // 
             controlContainerBottom.Location = new Point(3, 27);
             controlContainerBottom.Name = "controlContainerBottom";
-            controlContainerBottom.Size = new Size(1254, 135);
+            controlContainerBottom.Size = new Size(1660, 135);
             controlContainerBottom.TabIndex = 0;
             // 
             // svgImg32
@@ -607,23 +711,13 @@
             rmSet.Ribbon = ribbonControl1;
             rmSet.BeforePopup += rmSet_BeforePopup;
             // 
-            // barEditCurrentWorking
+            // barBtnParallel
             // 
-            barEditCurrentWorking.Caption = "宸ュ喌";
-            barEditCurrentWorking.Edit = repositoryItemImageComboBox1;
-            barEditCurrentWorking.Id = 63;
-            barEditCurrentWorking.Name = "barEditCurrentWorking";
-            // 
-            // repositoryItemImageComboBox1
-            // 
-            repositoryItemImageComboBox1.AutoHeight = false;
-            repositoryItemImageComboBox1.Buttons.AddRange(new EditorButton[] { new EditorButton(ButtonPredefines.Combo) });
-            repositoryItemImageComboBox1.Name = "repositoryItemImageComboBox1";
-            // 
-            // ribbonPageGroup8
-            // 
-            ribbonPageGroup8.Name = "ribbonPageGroup8";
-            ribbonPageGroup8.Text = "璇勪及";
+            barBtnParallel.Caption = "骞惰仈鍒嗘瀽";
+            barBtnParallel.Id = 73;
+            barBtnParallel.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnParallelAnalysis.ImageOptions.SvgImage");
+            barBtnParallel.Name = "barBtnParallel";
+            barBtnParallel.ItemClick += barBtnParallel_ItemClick;
             // 
             // XhsProjectSimulationCorePage
             // 
@@ -637,8 +731,9 @@
             Controls.Add(ribbonControl1);
             Margin = new Padding(2);
             Name = "XhsProjectSimulationCorePage";
-            Size = new Size(1535, 700);
+            Size = new Size(1941, 700);
             ((ISupportInitialize)ribbonControl1).EndInit();
+            ((ISupportInitialize)repositoryItemImageComboBox1).EndInit();
             ((ISupportInitialize)tabPane1).EndInit();
             tabPane1.ResumeLayout(false);
             ((ISupportInitialize)dockManager1).EndInit();
@@ -646,7 +741,6 @@
             docPnlBottom.ResumeLayout(false);
             ((ISupportInitialize)svgImg32).EndInit();
             ((ISupportInitialize)rmSet).EndInit();
-            ((ISupportInitialize)repositoryItemImageComboBox1).EndInit();
             ResumeLayout(false);
             PerformLayout();
         }
@@ -654,11 +748,11 @@
         #endregion
 
         private DevExpress.XtraBars.Ribbon.RibbonControl ribbonControl1;
-        private DevExpress.XtraBars.BarButtonItem barBtnHydroCheck;
-        private DevExpress.XtraBars.BarButtonItem barBtnHydroCalcu;
+        private DevExpress.XtraBars.BarButtonItem barBtnCheck;
+        private DevExpress.XtraBars.BarButtonItem barBtnWorkingCalcu;
         private DevExpress.XtraBars.Ribbon.RibbonPage ribbonPage1;
         private DevExpress.XtraBars.Ribbon.RibbonPageGroup pageGroupMatching;
-        private DevExpress.XtraBars.BarButtonItem barBtnHydroExportInp;
+        private DevExpress.XtraBars.BarButtonItem barBtnExportInp;
         private DevExpress.XtraBars.BarButtonItem barBtnSave;
         private DevExpress.XtraBars.Ribbon.RibbonPageGroup ribbonPageGroup2;
         private DevExpress.XtraBars.BarButtonItem barBtnHydroVisualList;
@@ -704,7 +798,7 @@
         private DevExpress.XtraBars.BarButtonItem barBtnSetCompressorList;
         private DevExpress.XtraBars.BarButtonItem barBtnSetFlowmeterList;
         private DevExpress.XtraBars.BarButtonItem barBtnSetPressmeterList;
-        private DevExpress.XtraBars.BarButtonItem barBtnLoadFlowDirection;
+        private DevExpress.XtraBars.BarButtonItem barBtnLoadFlowEffect;
         private DevExpress.XtraBars.Ribbon.RibbonPageGroup ribbonPageGroup5;
         private DevExpress.XtraBars.BarButtonItem barBtnUnloadFlowDirection;
         public DevExpress.XtraBars.BarButtonItem barBtnUnMatchingList;
@@ -717,6 +811,16 @@
         private DevExpress.XtraBars.BarCheckItem barCkMonitor;
         private DevExpress.XtraBars.BarEditItem barEditCurrentWorking;
         private DevExpress.XtraEditors.Repository.RepositoryItemImageComboBox repositoryItemImageComboBox1;
-        private DevExpress.XtraBars.Ribbon.RibbonPageGroup ribbonPageGroup8;
+        private DevExpress.XtraBars.BarButtonItem barBtnWorkingCompare;
+        private DevExpress.XtraBars.Ribbon.RibbonPageGroup ribbonPageGroup9;
+        private DevExpress.XtraBars.BarCheckItem barCkMark;
+        private DevExpress.XtraBars.BarCheckItem barCkFlowEffect;
+        private DevExpress.XtraBars.BarCheckItem barCkGrading;
+        private DevExpress.XtraBars.BarCheckItem barCkCalcuResult;
+        private DevExpress.XtraBars.BarButtonItem barBtnWorkingLossCurve;
+        private DevExpress.XtraBars.BarButtonItem barBtnWorkingLossScale;
+        private DevExpress.XtraBars.BarButtonItem barBtnWorkingPower;
+        private DevExpress.XtraBars.BarButtonItem barBtnWorkingMulti;
+        private DevExpress.XtraBars.BarButtonItem barBtnParallel;
     }
 }
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 417c85a..7359ca3 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,5 +1,6 @@
 锘縢lobal using Yw.EPAnet;
 using DevExpress.Mvvm.Native;
+using DevExpress.Office.Utils;
 using DevExpress.Utils.Extensions;
 using DevExpress.Xpo.Helpers;
 using DevExpress.XtraBars.Ribbon;
@@ -31,9 +32,6 @@
         private HStation.Vmo.XhsProjectSiteVmo _projectSite = null;//椤圭洰绔�
         private Yw.Model.HydroModelInfo _hydroInfo = null;//姘村姏淇℃伅
 
-
-        private Yw.WinFrmUI.HydroCheckResult _checkResult = null;//妫�鏌ョ粨鏋�
-        private Yw.EPAnet.CalcuResult _calcuResult = null;//璁$畻缁撴灉
 
 
         /// <summary>
@@ -531,27 +529,7 @@
 
 
 
-        #region INP瀵煎嚭
 
-        //瀵煎嚭姘村姏INP鏂囦欢
-        private void barBtnHydroExportInp_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
-        {
-            if (_hydroInfo == null)
-            {
-                return;
-            }
-            var fileName = Yw.WinFrmUI.FileDialogHelper.SaveInp("瀵煎嚭Inp鏂囦欢");
-            if (string.IsNullOrEmpty(fileName))
-            {
-                return;
-            }
-            var netWork = Yw.Hydro.ParseHelper.ToNetwork(_hydroInfo);
-            var result = netWork.ToInpString();
-            File.WriteAllText(fileName, result);
-            TipFormHelper.ShowSucceed("瀵煎嚭鎴愬姛");
-        }
-
-        #endregion INP瀵煎嚭
 
         #region 鎵归噺閰嶇疆
 
@@ -1043,299 +1021,7 @@
 
         #endregion
 
-        #region 姘村姏璁$畻
 
-
-        #region 宸ュ喌
-
-
-        //鏄剧ず宸ュ喌璁$畻绐椾綋
-        private void ShowWorkingCalcuDlg()
-        {
-            var dlg = new SetHydroWorkingInfoDlg();
-            dlg.HydroViewEvent += async (parter) =>
-            {
-                _selectedVisual = parter as Yw.Model.HydroVisualInfo;
-                if (_selectedVisual != null)
-                {
-                    await _bimfaceCtrl?.ZoomAndSelectComponents(new List<string>() { _selectedVisual.Code });
-                }
-                ShowSelectedProperty();
-            };
-            dlg.HydroCalcuEvent += async (hydroInfo, workingInfo) =>
-            {
-                if (_hydroInfo == null)
-                {
-                    return;
-                }
-                _hydroInfo.UpdateWorkingInfo(workingInfo);
-                //鏍¢獙
-                _checkResult = _hydroInfo.Check();
-                if (!_checkResult.Succeed)
-                {
-                    ShowCheckCtrl();
-                    TipFormHelper.ShowWarn("鏍¢獙澶辫触锛岃妫�鏌ュ悗閲嶈瘯");
-                    return;
-                }
-
-                WaitFormHelper.ShowWaitForm(this, "姝e湪璁$畻鍒嗘瀽涓紝璇风◢鍊�...");
-
-
-                //await Task.Delay(5000);
-
-                var netWork = Yw.Hydro.ParseHelper.ToNetwork(_hydroInfo);
-                _calcuResult = netWork.CalcuMinorLoss();
-
-                WaitFormHelper.HideWaitForm();
-                if (_calcuResult.Succeed)
-                {
-                    GetCalcuResultList(false);
-                    UpdateVisualViewModelProperty();
-                    UpdateVisualViewModelCalcuProperty();
-                    UpdateVisualListCtrl();
-                    UpdateSelectedProperty();
-                    await _bimfaceCtrl?.SetLogicCalcuCustomLabels(_calcuResult);
-                    TipFormHelper.ShowSucceed("璁$畻鎴愬姛锛�");
-                    var codes = _hydroInfo.Pumps.Select(x => x.Code).ToList();
-                    await _bimfaceCtrl?.ZoomAndSelectComponents(codes);
-                }
-                else
-                {
-                    ShowCalcuFailedCtrl();
-                    TipFormHelper.ShowError("璁$畻澶辫触锛�");
-                }
-                AutoApplyGrading();
-                UpdateVisualListCtrl();
-                ShowSelectedProperty();
-            };
-            dlg.SetBindingData(_hydroInfo);
-            dlg.ShowDialog();
-        }
-
-        #endregion
-
-        #region 璁$畻澶辫触
-
-        //璁$畻澶辫触鎺т欢
-        private HydroCalcuFailedCtrl _calcuFailedCtrl = null;
-
-        //鑾峰彇璁$畻澶辫触鎺т欢
-        private HydroCalcuFailedCtrl GetCalcuFailedCtrl()
-        {
-            if (_calcuFailedCtrl == null)
-            {
-                _calcuFailedCtrl = new HydroCalcuFailedCtrl();
-                _calcuFailedCtrl.Dock = DockStyle.Fill;
-            }
-            return _calcuFailedCtrl;
-        }
-
-        //鏄剧ず璁$畻澶辫触鎺т欢
-        private void ShowCalcuFailedCtrl()
-        {
-            if (_hydroInfo == null)
-            {
-                return;
-            }
-            if (_calcuResult == null)
-            {
-                return;
-            }
-            if (_calcuResult.Succeed)
-            {
-                return;
-            }
-            var calcuFailedCtrl = GetCalcuFailedCtrl();
-            calcuFailedCtrl.SetBindingData(_calcuResult.FailedList);
-            this.controlContainerBottom.Controls.Clear();
-            this.controlContainerBottom.Controls.Add(calcuFailedCtrl);
-            this.docPnlBottom.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Visible;
-            this.docPnlBottom.Text = "璁$畻澶辫触鍘熷洜";
-            this.docPnlBottom.Height = 350;
-        }
-
-        #endregion
-
-        #region 璁$畻缁撴灉
-
-        //鎵�鏈夎绠楃粨鏋滃垪琛�
-        private List<HydroCalcuResult> _allCalcuResultList = null;
-
-        //鑾峰彇璁$畻缁撴灉
-        //true 浣跨敤缂撳瓨锛宖alse 涓嶄娇鐢ㄧ紦瀛�
-        private List<HydroCalcuResult> GetCalcuResultList(bool isCache = true)
-        {
-            if (_hydroInfo == null)
-            {
-                return default;
-            }
-            if (_calcuResult == null)
-            {
-                return default;
-            }
-            if (!_calcuResult.Succeed)
-            {
-                return default;
-            }
-            if (isCache)
-            {
-                return _allCalcuResultList;
-            }
-
-            _allCalcuResultList = new List<HydroCalcuResult>();
-
-            //鑺傜偣
-            var allNodeList = _hydroInfo.GetAllNodes();
-            if (allNodeList != null && allNodeList.Count > 0)
-            {
-                foreach (var node in allNodeList)
-                {
-                    var calcuNode = _calcuResult.NodeList?.Find(x => x.Id == node.Code);
-                    if (calcuNode != null)
-                    {
-                        var calcuResult = new HydroCalcuNodeResult()
-                        {
-                            Code = node.Code,
-                            CalcuPress = calcuNode.Press,
-                            CalcuHead = calcuNode.Head,
-                            CalcuDemand = calcuNode.Demand
-                        };
-                        _allCalcuResultList.Add(calcuResult);
-                    }
-                }
-            }
-
-            //绠℃
-            var allLinkList = _hydroInfo.GetAllLinks();
-            if (allLinkList != null && allLinkList.Count > 0)
-            {
-                foreach (var link in allLinkList)
-                {
-                    var calcuLink = _calcuResult.LinkList?.Find(x => x.Id == link.Code);
-                    if (calcuLink != null)
-                    {
-                        var calcuResult = new HydroCalcuLinkResult()
-                        {
-                            Code = link.Code,
-                            CalcuFlow = calcuLink.Flow,
-                            CalcuVelocity = calcuLink.Velocity,
-                            CalcuHeadLoss = calcuLink.Headloss
-                        };
-                        _allCalcuResultList.Add(calcuResult);
-                    }
-                }
-            }
-
-            //娴侀噺璁�
-            var allFlowmeterList = _hydroInfo.Flowmeters;
-            if (allFlowmeterList != null && allFlowmeterList.Count > 0)
-            {
-                foreach (var flowmeter in allFlowmeterList)
-                {
-                    var calcuFlowmeterResult = _allCalcuResultList.Find(x => x.Code == flowmeter.Code) as HydroCalcuNodeResult;
-                    if (calcuFlowmeterResult != null)
-                    {
-                        var calcuFlowmeterNewResult = new HydroCalcuFlowmeterResult(calcuFlowmeterResult);
-                        var calcuFlowmeterLinkResultList = new List<HydroCalcuLinkResult>();
-                        var flowmeterLinkList = allLinkList?.Where(x => x.StartCode == flowmeter.Code || x.EndCode == flowmeter.Code).ToList();
-                        if (flowmeterLinkList != null && flowmeterLinkList.Count > 0)
-                        {
-                            foreach (var flowmeterLink in flowmeterLinkList)
-                            {
-                                var calcuFlowmeterLinkResult = _allCalcuResultList.Find(x => x.Code == flowmeterLink.Code) as HydroCalcuLinkResult;
-                                if (calcuFlowmeterLinkResult != null)
-                                {
-                                    calcuFlowmeterLinkResultList.Add(calcuFlowmeterLinkResult);
-                                }
-                            }
-                        }
-                        if (calcuFlowmeterLinkResultList.Exists(x => x.CalcuFlow.HasValue))
-                        {
-                            calcuFlowmeterNewResult.CalcuQ = calcuFlowmeterLinkResultList.Where(x => x.CalcuFlow.HasValue).Average(x => x.CalcuFlow.Value);
-                        }
-                        _allCalcuResultList.Remove(calcuFlowmeterResult);
-                        _allCalcuResultList.Add(calcuFlowmeterNewResult);
-                    }
-                }
-            }
-
-            //鍘嬪姏琛�
-            var allPressmeterList = _hydroInfo.Pressmeters;
-            if (allPressmeterList != null && allPressmeterList.Count > 0)
-            {
-                foreach (var pressmeter in allPressmeterList)
-                {
-                    var calcuPressmeterResult = _allCalcuResultList.Find(x => x.Code == pressmeter.Code) as HydroCalcuNodeResult;
-                    if (calcuPressmeterResult != null)
-                    {
-                        var calcuPressmeterNewResult = new HydroCalcuPressmeterResult(calcuPressmeterResult);
-                        calcuPressmeterNewResult.CalcuPr = calcuPressmeterResult.CalcuPress;
-                        _allCalcuResultList.Remove(calcuPressmeterResult);
-                        _allCalcuResultList.Add(calcuPressmeterNewResult);
-                    }
-                }
-            }
-
-            //姘存车
-            var allPumpList = _hydroInfo.Pumps;
-            if (allPumpList != null && allPumpList.Count > 0)
-            {
-                foreach (var pump in allPumpList)
-                {
-                    var calcuPumpResult = _allCalcuResultList.Find(x => x.Code == pump.Code) as HydroCalcuLinkResult;
-                    if (calcuPumpResult != null)
-                    {
-                        var calcuPumpNewResult = new HydroCalcuPumpResult(calcuPumpResult);
-                        calcuPumpNewResult.CalcuQ = calcuPumpResult.CalcuFlow;
-                        if (calcuPumpNewResult.CalcuQ.HasValue)
-                        {
-                            var calcuNodeStartResult = _allCalcuResultList.Find(x => x.Code == pump.StartCode) as HydroCalcuNodeResult;
-                            var calcuNodeEndResult = _allCalcuResultList.Find(x => x.Code == pump.EndCode) as HydroCalcuNodeResult;
-                            if (calcuNodeStartResult != null && calcuNodeEndResult != null)
-                            {
-                                if (calcuNodeStartResult.CalcuPress.HasValue && calcuNodeEndResult.CalcuPress.HasValue)
-                                {
-                                    calcuPumpNewResult.CalcuH = Math.Abs(calcuNodeStartResult.CalcuPress.Value - calcuNodeEndResult.CalcuPress.Value);
-                                }
-                                if (pump.LinkStatus == Yw.Hydro.PumpStatus.Open && pump.RatedN.HasValue)
-                                {
-                                    var curveqp = _hydroInfo.Curves?.Find(x => x.Code == pump.CurveQP);
-                                    if (curveqp != null)
-                                    {
-                                        if (curveqp.CurveData != null && curveqp.CurveData.Count > 3)
-                                        {
-                                            var point2dList = curveqp.CurveData.Select(x => new Yw.Geometry.Point2d(x.X, x.Y)).ToList();
-                                            var point2dSimularList = point2dList.GetQPPointListByN(pump.RatedN.Value, pump.RatedN.Value * pump.SpeedRatio);
-                                            var pumpCurveQp = new Yw.Pump.CurveQP(eFeatType.Cubic, point2dSimularList);
-                                            calcuPumpNewResult.CalcuP = pumpCurveQp.FeatCurve.GetPointY(calcuPumpNewResult.CalcuQ.Value);
-                                        }
-                                    }
-                                }
-                                if (calcuPumpNewResult.CalcuH.HasValue && calcuPumpNewResult.CalcuP.HasValue)
-                                {
-                                    calcuPumpNewResult.CalcuE = Yw.Pump.CalculationHelper.CalcuE(calcuPumpNewResult.CalcuQ.Value, calcuPumpNewResult.CalcuH.Value, calcuPumpNewResult.CalcuP.Value);
-                                }
-                            }
-                        }
-                        _allCalcuResultList.Remove(calcuPumpResult);
-                        _allCalcuResultList.Add(calcuPumpNewResult);
-                    }
-                }
-            }
-
-            return _allCalcuResultList;
-        }
-
-        #endregion
-
-        //姘村姏璁$畻
-        private void barBtnHydroCalcu_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
-        {
-            //ShowCalcuPrefixDlg();
-            ShowWorkingCalcuDlg();
-        }
-
-        #endregion
 
         #region 鏋勪欢鏌ヨ
 
@@ -1967,6 +1653,17 @@
             await ClearMarkResultList();
         }
 
+
+        #region 鏍囨敞鏄剧ず
+
+        //鏄惁鏄剧ず
+        private void barCkMark_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
+        {
+
+        }
+
+        #endregion
+
         #endregion
 
         #region 棰滆壊鍒嗙骇
@@ -2078,7 +1775,7 @@
                     {
                         Code = Yw.Hydro.ParterCatalog.Pipe,
                         Name = Yw.WinFrmUI.HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Pipe),
-                        PropName = HydroCalcuProp.CalcuFlow
+                        PropName = HydroVisualCalcuProp.CalcuFlow
                     });
                 }
             }
@@ -2145,9 +1842,9 @@
                                                     }
                                                 }
                                                 break;
-                                            case HydroCalcuProp.CalcuFlow:
+                                            case HydroVisualCalcuProp.CalcuFlow:
                                                 {
-                                                    var gradingList = allCatalogGradingList.Where(x => x.PropName == HydroCalcuProp.CalcuFlow).OrderBy(t => t.SortCode).ToList();
+                                                    var gradingList = allCatalogGradingList.Where(x => x.PropName == HydroVisualCalcuProp.CalcuFlow).OrderBy(t => t.SortCode).ToList();
                                                     if (gradingList != null && gradingList.Count > 0)
                                                     {
                                                         var calcuResult = allCalcuResultList?.Find(t => t.Code == pump.Code);
@@ -2170,9 +1867,9 @@
                                                     }
                                                 }
                                                 break;
-                                            case HydroCalcuProp.CalcuVelocity:
+                                            case HydroVisualCalcuProp.CalcuVelocity:
                                                 {
-                                                    var gradingList = allCatalogGradingList.Where(x => x.PropName == HydroCalcuProp.CalcuVelocity).OrderBy(t => t.SortCode).ToList();
+                                                    var gradingList = allCatalogGradingList.Where(x => x.PropName == HydroVisualCalcuProp.CalcuVelocity).OrderBy(t => t.SortCode).ToList();
                                                     if (gradingList != null && gradingList.Count > 0)
                                                     {
                                                         var calcuResult = allCalcuResultList?.Find(t => t.Code == pump.Code);
@@ -2195,9 +1892,9 @@
                                                     }
                                                 }
                                                 break;
-                                            case HydroCalcuProp.CalcuHeadLoss:
+                                            case HydroVisualCalcuProp.CalcuHeadLoss:
                                                 {
-                                                    var gradingList = allCatalogGradingList.Where(x => x.PropName == HydroCalcuProp.CalcuHeadLoss).OrderBy(t => t.SortCode).ToList();
+                                                    var gradingList = allCatalogGradingList.Where(x => x.PropName == HydroVisualCalcuProp.CalcuHeadLoss).OrderBy(t => t.SortCode).ToList();
                                                     if (gradingList != null && gradingList.Count > 0)
                                                     {
                                                         var calcuResult = allCalcuResultList?.Find(t => t.Code == pump.Code);
@@ -2252,9 +1949,9 @@
                                                     }
                                                 }
                                                 break;
-                                            case HydroCalcuProp.CalcuFlow:
+                                            case HydroVisualCalcuProp.CalcuFlow:
                                                 {
-                                                    var gradingList = allCatalogGradingList.Where(x => x.PropName == HydroCalcuProp.CalcuFlow).OrderBy(t => t.SortCode).ToList();
+                                                    var gradingList = allCatalogGradingList.Where(x => x.PropName == HydroVisualCalcuProp.CalcuFlow).OrderBy(t => t.SortCode).ToList();
                                                     if (gradingList != null && gradingList.Count > 0)
                                                     {
                                                         var calcuResult = allCalcuResultList?.Find(t => t.Code == valve.Code);
@@ -2277,9 +1974,9 @@
                                                     }
                                                 }
                                                 break;
-                                            case HydroCalcuProp.CalcuVelocity:
+                                            case HydroVisualCalcuProp.CalcuVelocity:
                                                 {
-                                                    var gradingList = allCatalogGradingList.Where(x => x.PropName == HydroCalcuProp.CalcuVelocity).OrderBy(t => t.SortCode).ToList();
+                                                    var gradingList = allCatalogGradingList.Where(x => x.PropName == HydroVisualCalcuProp.CalcuVelocity).OrderBy(t => t.SortCode).ToList();
                                                     if (gradingList != null && gradingList.Count > 0)
                                                     {
                                                         var calcuResult = allCalcuResultList?.Find(t => t.Code == valve.Code);
@@ -2302,9 +1999,9 @@
                                                     }
                                                 }
                                                 break;
-                                            case HydroCalcuProp.CalcuHeadLoss:
+                                            case HydroVisualCalcuProp.CalcuHeadLoss:
                                                 {
-                                                    var gradingList = allCatalogGradingList.Where(x => x.PropName == HydroCalcuProp.CalcuHeadLoss).OrderBy(t => t.SortCode).ToList();
+                                                    var gradingList = allCatalogGradingList.Where(x => x.PropName == HydroVisualCalcuProp.CalcuHeadLoss).OrderBy(t => t.SortCode).ToList();
                                                     if (gradingList != null && gradingList.Count > 0)
                                                     {
                                                         var calcuResult = allCalcuResultList?.Find(t => t.Code == valve.Code);
@@ -2341,9 +2038,9 @@
                                     {
                                         switch (x.PropName)
                                         {
-                                            case HydroCalcuProp.CalcuFlow:
+                                            case HydroVisualCalcuProp.CalcuFlow:
                                                 {
-                                                    var gradingList = allCatalogGradingList.Where(x => x.PropName == HydroCalcuProp.CalcuFlow).OrderBy(t => t.SortCode).ToList();
+                                                    var gradingList = allCatalogGradingList.Where(x => x.PropName == HydroVisualCalcuProp.CalcuFlow).OrderBy(t => t.SortCode).ToList();
                                                     if (gradingList != null && gradingList.Count > 0)
                                                     {
                                                         var calcuResult = allCalcuResultList?.Find(t => t.Code == pipe.Code);
@@ -2366,9 +2063,9 @@
                                                     }
                                                 }
                                                 break;
-                                            case HydroCalcuProp.CalcuVelocity:
+                                            case HydroVisualCalcuProp.CalcuVelocity:
                                                 {
-                                                    var gradingList = allCatalogGradingList.Where(x => x.PropName == HydroCalcuProp.CalcuVelocity).OrderBy(t => t.SortCode).ToList();
+                                                    var gradingList = allCatalogGradingList.Where(x => x.PropName == HydroVisualCalcuProp.CalcuVelocity).OrderBy(t => t.SortCode).ToList();
                                                     if (gradingList != null && gradingList.Count > 0)
                                                     {
                                                         var calcuResult = allCalcuResultList?.Find(t => t.Code == pipe.Code);
@@ -2391,9 +2088,9 @@
                                                     }
                                                 }
                                                 break;
-                                            case HydroCalcuProp.CalcuHeadLoss:
+                                            case HydroVisualCalcuProp.CalcuHeadLoss:
                                                 {
-                                                    var gradingList = allCatalogGradingList.Where(x => x.PropName == HydroCalcuProp.CalcuHeadLoss).OrderBy(t => t.SortCode).ToList();
+                                                    var gradingList = allCatalogGradingList.Where(x => x.PropName == HydroVisualCalcuProp.CalcuHeadLoss).OrderBy(t => t.SortCode).ToList();
                                                     if (gradingList != null && gradingList.Count > 0)
                                                     {
                                                         var calcuResult = allCalcuResultList?.Find(t => t.Code == pipe.Code);
@@ -2499,9 +2196,9 @@
                                             }
                                         }
                                         break;
-                                    case HydroCalcuProp.CalcuFlow:
+                                    case HydroVisualCalcuProp.CalcuFlow:
                                         {
-                                            var gradingList = currentGradingList.Where(x => x.PropName == HydroCalcuProp.CalcuFlow).OrderBy(t => t.SortCode).ToList();
+                                            var gradingList = currentGradingList.Where(x => x.PropName == HydroVisualCalcuProp.CalcuFlow).OrderBy(t => t.SortCode).ToList();
                                             if (gradingList != null && gradingList.Count > 0)
                                             {
                                                 var calcuResult = allCalcuResultList?.Find(t => t.Code == pump.Code);
@@ -2524,9 +2221,9 @@
                                             }
                                         }
                                         break;
-                                    case HydroCalcuProp.CalcuVelocity:
+                                    case HydroVisualCalcuProp.CalcuVelocity:
                                         {
-                                            var gradingList = currentGradingList.Where(x => x.PropName == HydroCalcuProp.CalcuVelocity).OrderBy(t => t.SortCode).ToList();
+                                            var gradingList = currentGradingList.Where(x => x.PropName == HydroVisualCalcuProp.CalcuVelocity).OrderBy(t => t.SortCode).ToList();
                                             if (gradingList != null && gradingList.Count > 0)
                                             {
                                                 var calcuResult = allCalcuResultList?.Find(t => t.Code == pump.Code);
@@ -2549,9 +2246,9 @@
                                             }
                                         }
                                         break;
-                                    case HydroCalcuProp.CalcuHeadLoss:
+                                    case HydroVisualCalcuProp.CalcuHeadLoss:
                                         {
-                                            var gradingList = currentGradingList.Where(x => x.PropName == HydroCalcuProp.CalcuHeadLoss).OrderBy(t => t.SortCode).ToList();
+                                            var gradingList = currentGradingList.Where(x => x.PropName == HydroVisualCalcuProp.CalcuHeadLoss).OrderBy(t => t.SortCode).ToList();
                                             if (gradingList != null && gradingList.Count > 0)
                                             {
                                                 var calcuResult = allCalcuResultList?.Find(t => t.Code == pump.Code);
@@ -2606,9 +2303,9 @@
                                             }
                                         }
                                         break;
-                                    case HydroCalcuProp.CalcuFlow:
+                                    case HydroVisualCalcuProp.CalcuFlow:
                                         {
-                                            var gradingList = currentGradingList.Where(x => x.PropName == HydroCalcuProp.CalcuFlow).OrderBy(t => t.SortCode).ToList();
+                                            var gradingList = currentGradingList.Where(x => x.PropName == HydroVisualCalcuProp.CalcuFlow).OrderBy(t => t.SortCode).ToList();
                                             if (gradingList != null && gradingList.Count > 0)
                                             {
                                                 var calcuResult = allCalcuResultList?.Find(t => t.Code == valve.Code);
@@ -2631,9 +2328,9 @@
                                             }
                                         }
                                         break;
-                                    case HydroCalcuProp.CalcuVelocity:
+                                    case HydroVisualCalcuProp.CalcuVelocity:
                                         {
-                                            var gradingList = currentGradingList.Where(x => x.PropName == HydroCalcuProp.CalcuVelocity).OrderBy(t => t.SortCode).ToList();
+                                            var gradingList = currentGradingList.Where(x => x.PropName == HydroVisualCalcuProp.CalcuVelocity).OrderBy(t => t.SortCode).ToList();
                                             if (gradingList != null && gradingList.Count > 0)
                                             {
                                                 var calcuResult = allCalcuResultList?.Find(t => t.Code == valve.Code);
@@ -2656,9 +2353,9 @@
                                             }
                                         }
                                         break;
-                                    case HydroCalcuProp.CalcuHeadLoss:
+                                    case HydroVisualCalcuProp.CalcuHeadLoss:
                                         {
-                                            var gradingList = currentGradingList.Where(x => x.PropName == HydroCalcuProp.CalcuHeadLoss).OrderBy(t => t.SortCode).ToList();
+                                            var gradingList = currentGradingList.Where(x => x.PropName == HydroVisualCalcuProp.CalcuHeadLoss).OrderBy(t => t.SortCode).ToList();
                                             if (gradingList != null && gradingList.Count > 0)
                                             {
                                                 var calcuResult = allCalcuResultList?.Find(t => t.Code == valve.Code);
@@ -2695,9 +2392,9 @@
                             {
                                 switch (propName)
                                 {
-                                    case HydroCalcuProp.CalcuFlow:
+                                    case HydroVisualCalcuProp.CalcuFlow:
                                         {
-                                            var gradingList = currentGradingList.Where(x => x.PropName == HydroCalcuProp.CalcuFlow).OrderBy(t => t.SortCode).ToList();
+                                            var gradingList = currentGradingList.Where(x => x.PropName == HydroVisualCalcuProp.CalcuFlow).OrderBy(t => t.SortCode).ToList();
                                             if (gradingList != null && gradingList.Count > 0)
                                             {
                                                 var calcuResult = allCalcuResultList?.Find(t => t.Code == pipe.Code);
@@ -2720,9 +2417,9 @@
                                             }
                                         }
                                         break;
-                                    case HydroCalcuProp.CalcuVelocity:
+                                    case HydroVisualCalcuProp.CalcuVelocity:
                                         {
-                                            var gradingList = currentGradingList.Where(x => x.PropName == HydroCalcuProp.CalcuVelocity).OrderBy(t => t.SortCode).ToList();
+                                            var gradingList = currentGradingList.Where(x => x.PropName == HydroVisualCalcuProp.CalcuVelocity).OrderBy(t => t.SortCode).ToList();
                                             if (gradingList != null && gradingList.Count > 0)
                                             {
                                                 var calcuResult = allCalcuResultList?.Find(t => t.Code == pipe.Code);
@@ -2745,9 +2442,9 @@
                                             }
                                         }
                                         break;
-                                    case HydroCalcuProp.CalcuHeadLoss:
+                                    case HydroVisualCalcuProp.CalcuHeadLoss:
                                         {
-                                            var gradingList = currentGradingList.Where(x => x.PropName == HydroCalcuProp.CalcuHeadLoss).OrderBy(t => t.SortCode).ToList();
+                                            var gradingList = currentGradingList.Where(x => x.PropName == HydroVisualCalcuProp.CalcuHeadLoss).OrderBy(t => t.SortCode).ToList();
                                             if (gradingList != null && gradingList.Count > 0)
                                             {
                                                 var calcuResult = allCalcuResultList?.Find(t => t.Code == pipe.Code);
@@ -2933,17 +2630,17 @@
         #region 姘存祦鍔ㄧ敾
 
         //鎵�鏈夋祦鍚戝垪琛�
-        private List<Yw.WinFrmUI.Bimface.LogicFlowEffect> _allFlowEffectList = null;
+        private List<LogicFlowEffect> _allFlowEffectList = null;
 
         //鑾峰彇娴佸悜鍒楄〃
-        private List<Yw.WinFrmUI.Bimface.LogicFlowEffect> GetFlowEffectList()
+        private List<LogicFlowEffect> GetFlowEffectList()
         {
+            if (_hydroInfo == null)
+            {
+                return default;
+            }
             if (_allFlowEffectList == null)
             {
-                if (_hydroInfo == null)
-                {
-                    return default;
-                }
                 _allFlowEffectList = new List<LogicFlowEffect>();
                 var allCalcuResultList = GetCalcuResultList();
                 if (_hydroInfo.Pipes != null && _hydroInfo.Pipes.Count > 0)
@@ -3086,6 +2783,11 @@
             UnloadFlowEffect();
         }
 
+        private void barCkFlowEffect_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
+        {
+
+        }
+
         #endregion
 
         #region 閫夋嫨鏋勪欢
@@ -3158,6 +2860,46 @@
                 allVisualViewModelList.ForEach(x =>
                 {
                     x.UpdateProperty();
+                });
+            }
+        }
+
+        //鏇存柊鍙瑙嗗浘灞炴��
+        private void UpdateVisualViewModelProperty(List<string> codes)
+        {
+            if (codes == null || codes.Count < 1)
+            {
+                return;
+            }
+            var allVisualViewModelList = GetVisualViewModelList();
+            if (allVisualViewModelList != null && allVisualViewModelList.Count > 0)
+            {
+                allVisualViewModelList.ForEach(x =>
+                {
+                    if (codes.Contains(x.Code))
+                    {
+                        x.UpdateProperty();
+                    }
+                });
+            }
+        }
+
+        //鏇存柊鍙瑙嗗浘灞炴��
+        private void UpdateVisualViewModelProperty(List<Yw.Model.HydroVisualInfo> visualList)
+        {
+            if (visualList == null || visualList.Count < 1)
+            {
+                return;
+            }
+            var allVisualViewModelList = GetVisualViewModelList();
+            if (allVisualViewModelList != null && allVisualViewModelList.Count > 0)
+            {
+                allVisualViewModelList.ForEach(x =>
+                {
+                    if (visualList.Exists(t => t.Code == x.Code))
+                    {
+                        x.UpdateProperty();
+                    }
                 });
             }
         }
@@ -3544,17 +3286,45 @@
 
         #endregion
 
-        #region 姘村姏鏍¢獙
+        #region 妯℃嫙妫�鏌�
 
-        //鏍¢獙鎺т欢
-        private XhsProjectSimulationHydroCheckResultCtrl _checkCtrl = null;
+        #region 妫�鏌ョ粨鏋�
 
-        //鑾峰彇鏍¢獙鎺т欢
-        private XhsProjectSimulationHydroCheckResultCtrl GetCheckCtrl()
+        //妫�鏌ョ粨鏋滅紦瀛�
+        private HydroCheckResult _checkResult = null;
+
+        //鑾峰彇妫�鏌ョ粨鏋�
+        //needCheckAgain 鐢ㄤ簬纭畾鏄惁闇�瑕侀噸鏂版鏌�
+        private HydroCheckResult GetCheckResult(bool needCheckAgain = false)
+        {
+            if (_hydroInfo == null)
+            {
+                return default;
+            }
+            if (needCheckAgain)
+            {
+                _checkResult = _hydroInfo.Check();
+            }
+            if (_checkResult == null)
+            {
+                _checkResult = _hydroInfo.Check();
+            }
+            return _checkResult;
+        }
+
+        #endregion
+
+        #region 妫�鏌ユ帶浠�
+
+        //妫�鏌ユ帶浠�
+        private HydroCheckResultCtrl _checkCtrl = null;
+
+        //鑾峰彇妫�鏌ユ帶浠�
+        private HydroCheckResultCtrl GetCheckCtrl()
         {
             if (_checkCtrl == null)
             {
-                _checkCtrl = new XhsProjectSimulationHydroCheckResultCtrl();
+                _checkCtrl = new HydroCheckResultCtrl();
                 _checkCtrl.Dock = DockStyle.Fill;
                 _checkCtrl.HydroClickEvent += async (code) =>
                 {
@@ -3565,15 +3335,15 @@
                     var elementIds = new List<string>();
                     if (string.IsNullOrEmpty(code))
                     {
-                        _selectedVisual = null;
+                        this.SelectedVisual = null;
                     }
                     else
                     {
-                        var allParterList = _hydroInfo.GetAllVisuals();
-                        _selectedVisual = allParterList?.Find(x => x.Code == code);
-                        if (_selectedVisual != null)
+                        var allVisualViewModelList = GetVisualViewModelList();
+                        this.SelectedVisual = allVisualViewModelList?.Find(x => x.Code == code)?.Vmo;
+                        if (this.SelectedVisual != null)
                         {
-                            elementIds.Add(_selectedVisual.Code);
+                            elementIds.Add(this.SelectedVisual.Code);
                         }
                     }
                     await _bimfaceCtrl?.ZoomAndSelectComponents(elementIds);
@@ -3584,35 +3354,438 @@
         }
 
         //鏄剧ず妫�鏌ユ帶浠�
-        private void ShowCheckCtrl()
+        //needCheckAgain 鐢ㄤ簬纭畾鏄惁闇�瑕侀噸鏂版鏌�
+        private void ShowCheckCtrl(bool needCheckAgain = false)
         {
-            if (_checkResult == null)
+            var checkResult = GetCheckResult(needCheckAgain);
+            if (checkResult == null)
             {
                 return;
             }
             var checkCtrl = GetCheckCtrl();
-            checkCtrl.SetBindingData(_checkResult);
+            checkCtrl.SetBindingData(checkResult);
             this.controlContainerBottom.Controls.Clear();
             this.controlContainerBottom.Controls.Add(checkCtrl);
             this.docPnlBottom.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Visible;
             this.docPnlBottom.Text = "妫�鏌ョ粨鏋�";
             this.docPnlBottom.Height = 350;
-
         }
 
-        //姘村姏妫�鏌�
-        private void barBtnHydroCheck_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
+        #endregion
+
+        //妫�鏌�
+        private void barBtnCheck_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
+        {
+            ShowCheckCtrl(true);
+        }
+
+        #endregion
+
+        #region 瀵煎嚭INP鏂囦欢
+
+        //瀵煎嚭INP鏂囦欢
+        private void barBtnExportInp_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
         {
             if (_hydroInfo == null)
             {
                 return;
             }
-            _checkResult = _hydroInfo.Check();
-            ShowCheckCtrl();
+            var fileName = FileDialogHelper.SaveInp("瀵煎嚭Inp鏂囦欢");
+            if (string.IsNullOrEmpty(fileName))
+            {
+                return;
+            }
+            var netWork = Yw.Hydro.ParseHelper.ToNetwork(_hydroInfo);
+            var result = netWork.ToInpString();
+            File.WriteAllText(fileName, result);
+            TipFormHelper.ShowSucceed("瀵煎嚭鎴愬姛");
         }
 
         #endregion
 
+        #region 骞惰仈鍒嗘瀽
+
+        //骞惰仈鍒嗘瀽
+        private void ParallelAnalysis()
+        {
+            if (_hydroInfo == null)
+            {
+                return;
+            }
+            var pumps = _hydroInfo.Pumps;
+            if (pumps == null || pumps.Count < 1)
+            {
+                XtraMessageBox.Show("鏃犳按娉典俊鎭�");
+                return;
+            }
+            var vmList = new List<XhsSinglePumpViewModel>();
+            foreach (var pump in 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, 1);
+                vm.CurveQH = qhPtList;
+                vm.CurveQE = qePtList;
+                vm.CurveQP = qpPtList;
+
+            }
+
+            var dlg = new PumpParallelAnalyDlg();
+            dlg.SetBindingData(vmList);
+            dlg.ReloadDataEvent += (list) =>
+            {
+                list?.ForEach(x =>
+                {
+                    var pump = pumps.Find(t => t.Code == x.Code);
+                    if (pump != null)
+                    {
+                        pump.LinkStatus = x.RunStatus ? Yw.Hydro.PumpStatus.Open : Yw.Hydro.PumpStatus.Closed;
+                        pump.SpeedRatio = x.CurrentHz / pump.RatedHz;
+                    }
+                });
+                var codes = list?.Select(x => x.Code).ToList();
+                UpdateVisualViewModelProperty(codes);
+                ShowSelectedProperty();
+                UpdateVisualListCtrl();
+                return true;
+            };
+            dlg.ShowDialog();
+        }
+
+        //骞惰仈
+        private void barBtnParallel_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
+        {
+            ParallelAnalysis();
+        }
+
+        #endregion
+
+        #region 妯℃嫙璁$畻
+
+        //鎵�鏈夊伐鍐靛厓缁勫垪琛�
+        private Tuple<HydroWorkingVmo, HydroCheckResult, HydroCalcuResult> _allWorkingTupleList = null;
+
+
+        private Yw.EPAnet.CalcuResult _calcuResult = null;//璁$畻缁撴灉
+
+
+
+
+        #region 宸ュ喌
+
+
+        //鏄剧ず宸ュ喌璁$畻绐椾綋
+        private void ShowWorkingCalcuDlg()
+        {
+            var dlg = new SetHydroWorkingInfoDlg();
+            dlg.HydroViewEvent += async (parter) =>
+            {
+                _selectedVisual = parter as Yw.Model.HydroVisualInfo;
+                if (_selectedVisual != null)
+                {
+                    await _bimfaceCtrl?.ZoomAndSelectComponents(new List<string>() { _selectedVisual.Code });
+                }
+                ShowSelectedProperty();
+            };
+            dlg.HydroCalcuEvent += async (hydroInfo, workingInfo) =>
+            {
+                if (_hydroInfo == null)
+                {
+                    return;
+                }
+                _hydroInfo.UpdateWorkingInfo(workingInfo);
+                //鏍¢獙
+                _checkResult = _hydroInfo.Check();
+                if (!_checkResult.Succeed)
+                {
+                    ShowCheckCtrl();
+                    TipFormHelper.ShowWarn("鏍¢獙澶辫触锛岃妫�鏌ュ悗閲嶈瘯");
+                    return;
+                }
+
+                WaitFormHelper.ShowWaitForm(this, "姝e湪璁$畻鍒嗘瀽涓紝璇风◢鍊�...");
+
+
+                //await Task.Delay(5000);
+
+                var netWork = Yw.Hydro.ParseHelper.ToNetwork(_hydroInfo);
+                _calcuResult = netWork.CalcuMinorLoss();
+
+                WaitFormHelper.HideWaitForm();
+                if (_calcuResult.Succeed)
+                {
+                    GetCalcuResultList(false);
+                    UpdateVisualViewModelProperty();
+                    UpdateVisualViewModelCalcuProperty();
+                    UpdateVisualListCtrl();
+                    UpdateSelectedProperty();
+                    await _bimfaceCtrl?.SetLogicCalcuCustomLabels(_calcuResult);
+                    TipFormHelper.ShowSucceed("璁$畻鎴愬姛锛�");
+                    var codes = _hydroInfo.Pumps.Select(x => x.Code).ToList();
+                    await _bimfaceCtrl?.ZoomAndSelectComponents(codes);
+                }
+                else
+                {
+                    ShowCalcuFailedCtrl();
+                    TipFormHelper.ShowError("璁$畻澶辫触锛�");
+                }
+                AutoApplyGrading();
+                UpdateVisualListCtrl();
+                ShowSelectedProperty();
+            };
+            dlg.SetBindingData(_hydroInfo);
+            dlg.ShowDialog();
+        }
+
+        #endregion
+
+        #region 璁$畻澶辫触
+
+        //璁$畻澶辫触鎺т欢
+        private HydroCalcuFailedCtrl _calcuFailedCtrl = null;
+
+        //鑾峰彇璁$畻澶辫触鎺т欢
+        private HydroCalcuFailedCtrl GetCalcuFailedCtrl()
+        {
+            if (_calcuFailedCtrl == null)
+            {
+                _calcuFailedCtrl = new HydroCalcuFailedCtrl();
+                _calcuFailedCtrl.Dock = DockStyle.Fill;
+            }
+            return _calcuFailedCtrl;
+        }
+
+        //鏄剧ず璁$畻澶辫触鎺т欢
+        private void ShowCalcuFailedCtrl()
+        {
+            if (_hydroInfo == null)
+            {
+                return;
+            }
+            if (_calcuResult == null)
+            {
+                return;
+            }
+            if (_calcuResult.Succeed)
+            {
+                return;
+            }
+            var calcuFailedCtrl = GetCalcuFailedCtrl();
+            calcuFailedCtrl.SetBindingData(_calcuResult.FailedList);
+            this.controlContainerBottom.Controls.Clear();
+            this.controlContainerBottom.Controls.Add(calcuFailedCtrl);
+            this.docPnlBottom.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Visible;
+            this.docPnlBottom.Text = "璁$畻澶辫触鍘熷洜";
+            this.docPnlBottom.Height = 350;
+        }
+
+        #endregion
+
+        #region 璁$畻缁撴灉
+
+        //鎵�鏈夎绠楃粨鏋滃垪琛�
+        private List<HydroCalcuVisualResult> _allCalcuResultList = null;
+
+        //鑾峰彇璁$畻缁撴灉
+        //true 浣跨敤缂撳瓨锛宖alse 涓嶄娇鐢ㄧ紦瀛�
+        private List<HydroCalcuVisualResult> GetCalcuResultList(bool isCache = true)
+        {
+            if (_hydroInfo == null)
+            {
+                return default;
+            }
+            if (_calcuResult == null)
+            {
+                return default;
+            }
+            if (!_calcuResult.Succeed)
+            {
+                return default;
+            }
+            if (isCache)
+            {
+                return _allCalcuResultList;
+            }
+
+            _allCalcuResultList = new List<HydroCalcuVisualResult>();
+
+            //鑺傜偣
+            var allNodeList = _hydroInfo.GetAllNodes();
+            if (allNodeList != null && allNodeList.Count > 0)
+            {
+                foreach (var node in allNodeList)
+                {
+                    var calcuNode = _calcuResult.NodeList?.Find(x => x.Id == node.Code);
+                    if (calcuNode != null)
+                    {
+                        var calcuResult = new HydroCalcuNodeResult()
+                        {
+                            Code = node.Code,
+                            CalcuPress = calcuNode.Press,
+                            CalcuHead = calcuNode.Head,
+                            CalcuDemand = calcuNode.Demand
+                        };
+                        _allCalcuResultList.Add(calcuResult);
+                    }
+                }
+            }
+
+            //绠℃
+            var allLinkList = _hydroInfo.GetAllLinks();
+            if (allLinkList != null && allLinkList.Count > 0)
+            {
+                foreach (var link in allLinkList)
+                {
+                    var calcuLink = _calcuResult.LinkList?.Find(x => x.Id == link.Code);
+                    if (calcuLink != null)
+                    {
+                        var calcuResult = new HydroCalcuLinkResult()
+                        {
+                            Code = link.Code,
+                            CalcuFlow = calcuLink.Flow,
+                            CalcuVelocity = calcuLink.Velocity,
+                            CalcuHeadLoss = calcuLink.Headloss
+                        };
+                        _allCalcuResultList.Add(calcuResult);
+                    }
+                }
+            }
+
+            //娴侀噺璁�
+            var allFlowmeterList = _hydroInfo.Flowmeters;
+            if (allFlowmeterList != null && allFlowmeterList.Count > 0)
+            {
+                foreach (var flowmeter in allFlowmeterList)
+                {
+                    var calcuFlowmeterResult = _allCalcuResultList.Find(x => x.Code == flowmeter.Code) as HydroCalcuNodeResult;
+                    if (calcuFlowmeterResult != null)
+                    {
+                        var calcuFlowmeterNewResult = new HydroCalcuFlowmeterResult(calcuFlowmeterResult);
+                        var calcuFlowmeterLinkResultList = new List<HydroCalcuLinkResult>();
+                        var flowmeterLinkList = allLinkList?.Where(x => x.StartCode == flowmeter.Code || x.EndCode == flowmeter.Code).ToList();
+                        if (flowmeterLinkList != null && flowmeterLinkList.Count > 0)
+                        {
+                            foreach (var flowmeterLink in flowmeterLinkList)
+                            {
+                                var calcuFlowmeterLinkResult = _allCalcuResultList.Find(x => x.Code == flowmeterLink.Code) as HydroCalcuLinkResult;
+                                if (calcuFlowmeterLinkResult != null)
+                                {
+                                    calcuFlowmeterLinkResultList.Add(calcuFlowmeterLinkResult);
+                                }
+                            }
+                        }
+                        if (calcuFlowmeterLinkResultList.Exists(x => x.CalcuFlow.HasValue))
+                        {
+                            calcuFlowmeterNewResult.CalcuQ = calcuFlowmeterLinkResultList.Where(x => x.CalcuFlow.HasValue).Average(x => x.CalcuFlow.Value);
+                        }
+                        _allCalcuResultList.Remove(calcuFlowmeterResult);
+                        _allCalcuResultList.Add(calcuFlowmeterNewResult);
+                    }
+                }
+            }
+
+            //鍘嬪姏琛�
+            var allPressmeterList = _hydroInfo.Pressmeters;
+            if (allPressmeterList != null && allPressmeterList.Count > 0)
+            {
+                foreach (var pressmeter in allPressmeterList)
+                {
+                    var calcuPressmeterResult = _allCalcuResultList.Find(x => x.Code == pressmeter.Code) as HydroCalcuNodeResult;
+                    if (calcuPressmeterResult != null)
+                    {
+                        var calcuPressmeterNewResult = new HydroCalcuPressmeterResult(calcuPressmeterResult);
+                        calcuPressmeterNewResult.CalcuPr = calcuPressmeterResult.CalcuPress;
+                        _allCalcuResultList.Remove(calcuPressmeterResult);
+                        _allCalcuResultList.Add(calcuPressmeterNewResult);
+                    }
+                }
+            }
+
+            //姘存车
+            var allPumpList = _hydroInfo.Pumps;
+            if (allPumpList != null && allPumpList.Count > 0)
+            {
+                foreach (var pump in allPumpList)
+                {
+                    var calcuPumpResult = _allCalcuResultList.Find(x => x.Code == pump.Code) as HydroCalcuLinkResult;
+                    if (calcuPumpResult != null)
+                    {
+                        var calcuPumpNewResult = new HydroCalcuPumpResult(calcuPumpResult);
+                        calcuPumpNewResult.CalcuQ = calcuPumpResult.CalcuFlow;
+                        if (calcuPumpNewResult.CalcuQ.HasValue)
+                        {
+                            var calcuNodeStartResult = _allCalcuResultList.Find(x => x.Code == pump.StartCode) as HydroCalcuNodeResult;
+                            var calcuNodeEndResult = _allCalcuResultList.Find(x => x.Code == pump.EndCode) as HydroCalcuNodeResult;
+                            if (calcuNodeStartResult != null && calcuNodeEndResult != null)
+                            {
+                                if (calcuNodeStartResult.CalcuPress.HasValue && calcuNodeEndResult.CalcuPress.HasValue)
+                                {
+                                    calcuPumpNewResult.CalcuH = Math.Abs(calcuNodeStartResult.CalcuPress.Value - calcuNodeEndResult.CalcuPress.Value);
+                                }
+                                if (pump.LinkStatus == Yw.Hydro.PumpStatus.Open && pump.RatedN.HasValue)
+                                {
+                                    var curveqp = _hydroInfo.Curves?.Find(x => x.Code == pump.CurveQP);
+                                    if (curveqp != null)
+                                    {
+                                        if (curveqp.CurveData != null && curveqp.CurveData.Count > 3)
+                                        {
+                                            var point2dList = curveqp.CurveData.Select(x => new Yw.Geometry.Point2d(x.X, x.Y)).ToList();
+                                            var point2dSimularList = point2dList.GetQPPointListByN(pump.RatedN.Value, pump.RatedN.Value * pump.SpeedRatio);
+                                            var pumpCurveQp = new Yw.Pump.CurveQP(eFeatType.Cubic, point2dSimularList);
+                                            calcuPumpNewResult.CalcuP = pumpCurveQp.FeatCurve.GetPointY(calcuPumpNewResult.CalcuQ.Value);
+                                        }
+                                    }
+                                }
+                                if (calcuPumpNewResult.CalcuH.HasValue && calcuPumpNewResult.CalcuP.HasValue)
+                                {
+                                    calcuPumpNewResult.CalcuE = Yw.Pump.CalculationHelper.CalcuE(calcuPumpNewResult.CalcuQ.Value, calcuPumpNewResult.CalcuH.Value, calcuPumpNewResult.CalcuP.Value);
+                                }
+                            }
+                        }
+                        _allCalcuResultList.Remove(calcuPumpResult);
+                        _allCalcuResultList.Add(calcuPumpNewResult);
+                    }
+                }
+            }
+
+            return _allCalcuResultList;
+        }
+
+        #endregion
+
+        //姘村姏璁$畻
+        private void barBtnHydroCalcu_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
+        {
+            ShowWorkingCalcuDlg();
+        }
+
+        #endregion
+
+
 
 
 
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 1f1c08d..1e7cede 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
@@ -118,7 +118,7 @@
     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
   <assembly alias="DevExpress.Data.v23.2" name="DevExpress.Data.v23.2, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
-  <data name="barBtnHydroCheck.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+  <data name="barBtnCheck.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
         LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
@@ -141,22 +141,49 @@
     <value>
         AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
         LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
-        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAKoCAAAC77u/
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAPwIAAAC77u/
         PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
-        IHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
         MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
         Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
-        MTYgMTYiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsdWV7ZmlsbDojMzQ3NUJBO30KCS5C
-        bGFja3tmaWxsOiM3MzczNzM7fQo8L3N0eWxlPg0KICA8cGF0aCBkPSJNMCwxdjE0aDE2VjFIMHogTTE1
-        LDE0SDFWMmgxNFYxNHoiIGNsYXNzPSJCbGFjayIgLz4NCiAgPHBhdGggZD0iTTcuMiw4SDYuMWwwLjIt
-        MWgxLjFsMC4zLTEuNkM3LjksNSw4LDQuNCw5LjIsNC4xQzkuOSw0LDEwLjUsNCwxMSw0bC0wLjIsMWMt
-        MC4xLDAtMC42LDAtMS4xLDAuMSAgQzkuNCw1LjIsOS4zLDUuMyw5LjMsNS41TDguOSw3aDEuM0wxMCw4
-        SDguN2wtMC41LDIuNmMtMC4xLDAuNC0wLjIsMS0xLjQsMS4zQzYuMSwxMiw1LjUsMTIsNSwxMmwwLjIt
-        MWMwLjEsMCwwLjYsMCwxLjEtMC4xICBjMC4zLTAuMSwwLjQtMC4yLDAuNC0wLjRMNy4yLDh6IiBjbGFz
-        cz0iQmx1ZSIgLz4NCjwvc3ZnPgs=
+        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLlllbGxvd3tmaWxsOiNGRkIxMTU7fQoJ
+        LlJlZHtmaWxsOiNEMTFDMUM7fQoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9CgkuQmx1ZXtmaWxsOiMxMTc3
+        RDc7fQoJLldoaXRle2ZpbGw6I0ZGRkZGRjt9CgkuR3JlZW57ZmlsbDojMDM5QzIzO30KCS5zdDB7b3Bh
+        Y2l0eTowLjc1O30KCS5zdDF7b3BhY2l0eTowLjU7fQoJLnN0MntvcGFjaXR5OjAuMjU7fQoJLnN0M3tm
+        aWxsOiNGRkIxMTU7fQo8L3N0eWxlPg0KICA8ZyBpZD0iQWRkQ2FsY3VsYXRlZEZpZWxkIj4NCiAgICA8
+        cGF0aCBkPSJNMTgsMjhIMWMtMC41LDAtMS0wLjUtMS0xVjNjMC0wLjUsMC41LTEsMS0xaDI2YzAuNSww
+        LDEsMC41LDEsMXYxNWgtMlY0SDJ2MjJoMTZWMjh6IE03LjcsMjEuOSAgIGMtMC4xLDAtMC4yLDAtMC4z
+        LTAuMWMtMC4xLDAtMC4yLTAuMS0wLjMtMC4zYy0wLjMtMC4zLTAuNS0wLjUtMC42LTAuNmMtMC4yLTAu
+        MS0wLjMtMC4yLTAuNS0wLjNjLTAuMi0wLjEtMC40LTAuMS0wLjUtMC4xICAgYy0wLjQsMC0wLjgsMC4x
+        LTEuMSwwLjRTNCwyMS42LDQsMjJjMCwwLjUsMC4zLDEsMC45LDEuNEM1LjQsMjMuOCw2LjEsMjQsNywy
+        NGMwLjksMCwxLjctMC4yLDIuMy0wLjVzMS4yLTAuOCwxLjctMS42ICAgYzAuNS0wLjcsMC45LTEuNiwx
+        LjEtMi42bDEuNy01LjNoMmwwLjUtMmgtMkwxNSw5LjZjMC4xLTAuNiwwLjMtMSwwLjQtMS4xYzAuMi0w
+        LjMsMC40LTAuNCwwLjctMC40YzAuMSwwLDAuMywwLDAuNCwwLjEgICBjMC4xLDAuMSwwLjMsMC4yLDAu
+        NiwwLjVjMC4yLDAuMywwLjQsMC40LDAuNywwLjVzMC41LDAuMiwwLjgsMC4yYzAuMywwLDAuNi0wLjEs
+        MC44LTAuMmMwLjItMC4xLDAuNC0wLjMsMC42LTAuNiAgIEMxOS45LDguNSwyMCw4LjIsMjAsOGMwLTAu
+        My0wLjEtMC43LTAuNC0xYy0wLjItMC4zLTAuNi0wLjYtMS0wLjdjLTAuNC0wLjItMS0wLjMtMS43LTAu
+        M2MtMS41LDAtMi43LDAuMy0zLjYsMSAgIGMtMC45LDAuNy0xLjcsMi42LTEuOSwzLjhMMTEuMSwxMkg5
+        LjVsLTAuNCwyaDEuNWwtMS44LDYuNEM4LjYsMjEuNCw4LjIsMjEuOSw3LjcsMjEuOXogTTE0LjQsMjEu
+        OWMwLjIsMC4xLDAuMywwLjEsMC41LDAuMSAgIGMwLjIsMCwwLjUtMC4xLDAuNy0wLjJjMC4zLTAuMSww
+        LjYtMC4zLDAuOS0wLjdjMC4zLTAuMywwLjctMC43LDEtMS4ybDAuMywwLjdjMC4yLDAuNCwwLjQsMC43
+        LDAuNiwwLjljMC4yLDAuMiwwLjQsMC4zLDAuNiwwLjQgICBjMC4yLDAuMSwwLjUsMC4xLDAuOCwwLjFj
+        MC43LDAsMS41LTAuMywyLjItMC45bC0wLjctMC43Yy0wLjMsMC4zLTAuNiwwLjQtMC45LDAuNGMtMC4y
+        LDAtMC4zLTAuMS0wLjUtMC4ycy0wLjQtMC41LTAuNi0wLjkgICBMMTkuMSwxOWMwLjQtMC41LDAuNi0w
+        LjgsMC43LTAuOGMwLjEtMC4xLDAuMi0wLjIsMC40LTAuM2MwLjEtMC4xLDAuMi0wLjEsMC4zLTAuMmMw
+        LjEsMCwwLjIsMCwwLjUtMC4xYzAuMiwwLDAuNCwwLDAuNCwwICAgYzAuMSwwLDAuMi0wLjEsMC4zLTAu
+        MnMwLjItMC4yLDAuMy0wLjNjMC4xLTAuMSwwLjEtMC4yLDAuMS0wLjRjMC0wLjItMC4xLTAuNC0wLjIt
+        MC41UzIxLjQsMTYsMjEuMSwxNmMtMC4yLDAtMC41LDAuMS0wLjcsMC4yICAgcy0wLjUsMC4zLTAuOCww
+        LjVjLTAuMiwwLjItMC41LDAuNi0xLjEsMS4zbC0wLjktMS45aC0wLjVjLTAuNCwwLjMtMC45LDAuNC0x
+        LjQsMC41bC0wLjIsMS4xaDAuOWwwLjYsMS4yYy0wLjQsMC41LTAuNiwwLjktMC44LDEgICBjLTAuMiww
+        LjItMC4zLDAuMy0wLjUsMC40Yy0wLjEsMC4xLTAuMywwLjEtMC42LDAuMWMtMC4zLDAtMC42LDAuMS0w
+        LjcsMC4xYy0wLjEsMC4xLTAuMiwwLjItMC4zLDAuM0MxNCwyMC45LDE0LDIxLjEsMTQsMjEuMiAgIGMw
+        LDAuMSwwLDAuMywwLjEsMC40QzE0LjIsMjEuNywxNC4zLDIxLjgsMTQuNCwyMS45eiIgY2xhc3M9IkJs
+        YWNrIiAvPg0KICAgIDxwb2x5Z29uIHBvaW50cz0iMzIsMjQgMjgsMjQgMjgsMjAgMjQsMjAgMjQsMjQg
+        MjAsMjQgMjAsMjggMjQsMjggMjQsMzIgMjgsMzIgMjgsMjggMzIsMjggICIgY2xhc3M9IkdyZWVuIiAv
+        Pg0KICA8L2c+DQo8L3N2Zz4L
 </value>
   </data>
-  <data name="barBtnHydroExportInp.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+  <data name="barBtnExportInp.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
         LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
@@ -460,7 +487,7 @@
         ICIgY2xhc3M9IlJlZCIgLz4NCiAgPC9nPg0KPC9zdmc+Cw==
 </value>
   </data>
-  <data name="barBtnLoadFlowDirection.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+  <data name="barBtnLoadFlowEffect.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
         LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
@@ -598,6 +625,153 @@
         PSJSZWQiIC8+DQogIDwvZz4NCjwvc3ZnPgs=
 </value>
   </data>
+  <data name="barBtnWorkingCompare.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAGwDAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9Cgku
+        WWVsbG93e2ZpbGw6I0ZGQjExNTt9CgkuQmx1ZXtmaWxsOiMxMTc3RDc7fQoJLkdyZWVue2ZpbGw6IzAz
+        OUMyMzt9CgkuUmVke2ZpbGw6I0QxMUMxQzt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh
+        Y2l0eTowLjc1O30KCS5zdDF7b3BhY2l0eTowLjU7fQoJLnN0MntvcGFjaXR5OjAuMjU7fQo8L3N0eWxl
+        Pg0KICA8ZyBpZD0iR3JvdXBGaWVsZENvbGxlY3Rpb25fMV8iPg0KICAgIDxwYXRoIGQ9Ik0xNywxNEgx
+        Yy0wLjYsMC0xLTAuNC0xLTFWNWMwLTAuNiwwLjQtMSwxLTFoMTZjMC41LDAsMSwwLjQsMSwxdjhDMTgs
+        MTMuNiwxNy41LDE0LDE3LDE0eiBNMzIsMjV2LTggICBjMC0wLjUtMC41LTEtMS0xSDE1Yy0wLjYsMC0x
+        LDAuNS0xLDF2OGMwLDAuNSwwLjQsMSwxLDFoMTZDMzEuNSwyNiwzMiwyNS41LDMyLDI1eiIgY2xhc3M9
+        IkJsdWUiIC8+DQogICAgPHBhdGggZD0iTTgsMjB2NGg0djJIN2MtMC42LDAtMS0wLjQtMS0xdi01SDJs
+        NS01bDUsNUg4eiBNMjYsMTBWNWMwLTAuNi0wLjQtMS0xLTFoLTV2Mmg0djRoLTRsNSw1bDUtNUgyNnoi
+        IGNsYXNzPSJHcmVlbiIgLz4NCiAgPC9nPg0KPC9zdmc+Cw==
+</value>
+  </data>
+  <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
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAHsCAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLlJlZHtmaWxsOiNEMTFDMUM7fQoJLlll
+        bGxvd3tmaWxsOiNGRkIxMTU7fQoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5HcmVlbntmaWxsOiMwMzlD
+        MjM7fQoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh
+        Y2l0eTowLjU7fQoJLnN0MXtvcGFjaXR5OjAuNzU7fQoJLnN0MntvcGFjaXR5OjAuMzU7fQoJLnN0M3tv
+        cGFjaXR5OjAuNjU7fQo8L3N0eWxlPg0KICA8ZyBpZD0iU3RlcEFyZWEiPg0KICAgIDxwb2x5Z29uIHBv
+        aW50cz0iNiwxMCA2LDIgMTQsMiAxNCw2IDIyLDYgMjIsMTYgMzAsMTYgMzAsMjggMCwyOCAwLDEwICAi
+        IGNsYXNzPSJCbHVlIiAvPg0KICA8L2c+DQo8L3N2Zz4L
+</value>
+  </data>
+  <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
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAACIDAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkdyZWVue2ZpbGw6IzAzOUMyMzt9Cgku
+        QmxhY2t7ZmlsbDojNzI3MjcyO30KCS5SZWR7ZmlsbDojRDExQzFDO30KCS5ZZWxsb3d7ZmlsbDojRkZC
+        MTE1O30KCS5CbHVle2ZpbGw6IzExNzdENzt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh
+        Y2l0eTowLjU7fQoJLnN0MXtvcGFjaXR5OjAuNzU7fQo8L3N0eWxlPg0KICA8ZyBpZD0iUGllU2VyaWVz
+        Ij4NCiAgICA8cGF0aCBkPSJNMjYuMyw1LjFMMTYuNCwxNWw5LjksOS45YzIuMy0yLjYsMy43LTYuMSwz
+        LjctOS45UzI4LjYsNy44LDI2LjMsNS4xeiIgY2xhc3M9IlllbGxvdyIgLz4NCiAgICA8cGF0aCBkPSJN
+        MTQsMTZ2LTF2LTAuNEwyNC45LDMuN0MyMi4yLDEuNCwxOC44LDAsMTUsMEM2LjcsMCwwLDYuNywwLDE1
+        YzAsNy45LDYuMiwxNC40LDE0LDE0LjlWMTZ6IiBjbGFzcz0iR3JlZW4iIC8+DQogICAgPHBhdGggZD0i
+        TTE2LDI5LjljMy40LTAuMiw2LjUtMS42LDguOS0zLjdMMTYsMTcuNFYyOS45eiIgY2xhc3M9IkJsdWUi
+        IC8+DQogIDwvZz4NCjwvc3ZnPgs=
+</value>
+  </data>
+  <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
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAF4JAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLlJlZHtmaWxsOiNEMTFDMUM7fQoJLlll
+        bGxvd3tmaWxsOiNGRkIxMTU7fQoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5HcmVlbntmaWxsOiMwMzlD
+        MjM7fQoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh
+        Y2l0eTowLjU7fQoJLnN0MXtvcGFjaXR5OjAuNzU7fQoJLnN0MntvcGFjaXR5OjAuMzU7fQoJLnN0M3tv
+        cGFjaXR5OjAuNjU7fQo8L3N0eWxlPg0KICA8ZyBpZD0iUmFkYXJBcmVhIj4NCiAgICA8ZyBjbGFzcz0i
+        c3QyIj4NCiAgICAgIDxwYXRoIGQ9Ik0xNiwxMmMtMi4yLDAtNCwxLjgtNCw0YzAsMi4yLDEuOCw0LDQs
+        NHM0LTEuOCw0LTRDMjAsMTMuOCwxOC4yLDEyLDE2LDEyeiBNMTYsMThjLTEuMSwwLTItMC45LTItMiAg
+        ICBjMC0xLjEsMC45LTIsMi0yczIsMC45LDIsMkMxOCwxNy4xLDE3LjEsMTgsMTYsMTh6IE0xNiwwQzcu
+        MiwwLDAsNy4yLDAsMTZzNy4yLDE2LDE2LDE2czE2LTcuMiwxNi0xNlMyNC44LDAsMTYsMHogTTE2LDMw
+        ICAgIEM4LjMsMzAsMiwyMy43LDIsMTZTOC4zLDIsMTYsMnMxNCw2LjMsMTQsMTRTMjMuNywzMCwxNiwz
+        MHogTTIzLjcsOS43QzIzLjYsOS45LDIzLjMsMTAsMjMsMTBjLTAuNiwwLTEtMC40LTEtMSAgICBjMC0w
+        LjMsMC4xLTAuNiwwLjMtMC43QzIwLjYsNi44LDE4LjQsNiwxNiw2Yy01LDAtOS4yLDMuNy05LjksOC42
+        QzYuMywxNC4yLDYuNiwxNCw3LDE0YzAuNiwwLDEsMC40LDEsMWMwLDAuNi0wLjQsMS0xLDEgICAgYy0w
+        LjUsMC0wLjktMC4zLTEtMC44YzAsMC4zLDAsMC41LDAsMC44YzAsNS41LDQuNSwxMCwxMCwxMGMwLjMs
+        MCwwLjUsMCwwLjgsMGMtMC41LTAuMS0wLjgtMC41LTAuOC0xYzAtMC42LDAuNC0xLDEtMXMxLDAuNCwx
+        LDEgICAgYzAsMC40LTAuMiwwLjctMC42LDAuOUMyMi4zLDI1LjIsMjYsMjEsMjYsMTZDMjYsMTMuNiwy
+        NS4yLDExLjQsMjMuNyw5Ljd6IE0xNiwyNGMtNC40LDAtOC0zLjYtOC04YzAtMywxLjYtNS41LDQtNi45
+        ICAgIGMwLDAsMCwwLDAtMC4xYzAtMC42LDAuNC0xLDEtMWMwLjMsMCwwLjUsMC4xLDAuNywwLjNDMTQu
+        NSw4LjEsMTUuMiw4LDE2LDhjNC40LDAsOCwzLjYsOCw4UzIwLjQsMjQsMTYsMjR6IiBjbGFzcz0iQmxh
+        Y2siIC8+DQogICAgPC9nPg0KICAgIDxnIGNsYXNzPSJzdDEiPg0KICAgICAgPHBvbHlnb24gcG9pbnRz
+        PSIyMiw4IDE0LDggMTQsMTAgMTAuNiwxMCA3LDEzLjYgNi40LDEzIDUuNCwxNCA4LDE0IDgsMTcuNCAx
+        NS44LDI1LjIgMTUuNiwyNS43IDE2LDI1LjggMTYsMjQgICAgIDE4LjQsMjQgMjMuOCwxMCAyMiwxMCAg
+        ICIgY2xhc3M9IkdyZWVuIiAvPg0KICAgIDwvZz4NCiAgICA8cGF0aCBkPSJNMjMsNmMtMS4zLDAtMi40
+        LDAuOC0yLjgsMmgtNC40Yy0wLjQtMS4yLTEuNS0yLTIuOC0yYy0xLjcsMC0zLDEuMy0zLDNjMCwwLjUs
+        MC4xLDAuOSwwLjMsMS4zbC0yLDIgICBDNy45LDEyLjEsNy41LDEyLDcsMTJjLTEuNywwLTMsMS4zLTMs
+        M3MxLjMsMywzLDNjMC41LDAsMC45LTAuMSwxLjMtMC4zbDYsNkMxNC4xLDI0LjEsMTQsMjQuNSwxNCwy
+        NWMwLDEuNywxLjMsMywzLDNzMy0xLjMsMy0zICAgYzAtMC45LTAuNC0xLjgtMS4xLTIuM0wyMywxMmMx
+        LjYsMCwzLTEuNCwzLTNDMjYsNy4zLDI0LjcsNiwyMyw2eiBNNywxNmMtMC42LDAtMS0wLjQtMS0xYzAt
+        MC42LDAuNC0xLDEtMXMxLDAuNCwxLDEgICBDOCwxNS42LDcuNiwxNiw3LDE2eiBNMTMsOGMwLjYsMCwx
+        LDAuNCwxLDFjMCwwLjYtMC40LDEtMSwxcy0xLTAuNC0xLTFDMTIsOC40LDEyLjQsOCwxMyw4eiBNMTcs
+        MjZjLTAuNiwwLTEtMC40LTEtMSAgIGMwLTAuNiwwLjQtMSwxLTFzMSwwLjQsMSwxQzE4LDI1LjYsMTcu
+        NiwyNiwxNywyNnogTTE3LDIyQzE3LDIyLDE3LDIyLDE3LDIyYy0wLjUsMC0wLjksMC4xLTEuMywwLjNs
+        LTYtNkM5LjksMTUuOSwxMCwxNS41LDEwLDE1ICAgcy0wLjEtMC45LTAuMy0xLjNsMi0yYzAuNCwwLjIs
+        MC44LDAuMywxLjMsMC4zYzEuMywwLDIuNC0wLjgsMi44LTJoNC40YzAuMiwwLjUsMC41LDEsMSwxLjNM
+        MTcsMjJ6IE0yMywxMGMtMC42LDAtMS0wLjQtMS0xICAgYzAtMC42LDAuNC0xLDEtMXMxLDAuNCwxLDFD
+        MjQsOS42LDIzLjYsMTAsMjMsMTB6IiBjbGFzcz0iR3JlZW4iIC8+DQogIDwvZz4NCjwvc3ZnPgs=
+</value>
+  </data>
+  <data name="barBtnWorkingMulti.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAA0DAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9Cgku
+        WWVsbG93e2ZpbGw6I0ZGQjExNTt9CgkuQmx1ZXtmaWxsOiMxMTc3RDc7fQoJLkdyZWVue2ZpbGw6IzAz
+        OUMyMzt9CgkuUmVke2ZpbGw6I0QxMUMxQzt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh
+        Y2l0eTowLjc1O30KCS5zdDF7b3BhY2l0eTowLjU7fQoJLnN0MntvcGFjaXR5OjAuMjU7fQo8L3N0eWxl
+        Pg0KICA8ZyBpZD0iU3BhcmtsaW5lIj4NCiAgICA8cGF0aCBkPSJNMzEsNEgxQzAuNSw0LDAsNC41LDAs
+        NXYyMmMwLDAuNSwwLjUsMSwxLDFoMzBjMC41LDAsMS0wLjUsMS0xVjVDMzIsNC41LDMxLjUsNCwzMSw0
+        eiBNMzAsMjZIMlY2aDI4VjI2eiIgY2xhc3M9IkJsYWNrIiAvPg0KICAgIDxwb2x5bGluZSBwb2ludHM9
+        IjQsMjAgOCwxNiAxMCwxOCAxNiwxMiAxOCwxNCAyNCw4IDI4LDEyIDI4LDE1IDI0LDExIDE4LDE3IDE2
+        LDE1IDEwLDIxIDgsMTkgNCwyMyA0LDIwICAiIGNsYXNzPSJSZWQiIC8+DQogIDwvZz4NCjwvc3ZnPgs=
+</value>
+  </data>
+  <data name="barBtnParallelAnalysis.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAMYCAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iQ3JlYXRlX0Z1bGxfU3RhY2tlZF9MaW5lX0NoYXJ0X05vX01hcmtlcnMi
+        IHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDMyIDMyIj4NCiAgPHN0eWxlIHR5cGU9InRl
+        eHQvY3NzIj4KCS5CbHVle2ZpbGw6IzExNzdENzt9CgkuWWVsbG93e2ZpbGw6I0ZGQjExNTt9CgkuUmVk
+        e2ZpbGw6I0QxMUMxQzt9Cjwvc3R5bGU+DQogIDxyZWN0IHg9IjIiIHk9IjQiIHdpZHRoPSIyNiIgaGVp
+        Z2h0PSIyIiBjbGFzcz0iUmVkIiAvPg0KICA8cG9seWdvbiBwb2ludHM9IjEuNywxMy45IDEuNywxMy45
+        IDIuMywxMiAxNCwxNS45IDI3LjcsMTIgMjguMywxMy45IDE0LDE4IDEuNywxMy45ICIgY2xhc3M9Illl
+        bGxvdyIgLz4NCiAgPHBhdGggZD0iTTIuNCwyOS45TDIuNCwyOS45TDIuNCwyOS45TDIuNCwyOS45TDIu
+        NCwyOS45eiBNMS42LDI4LjFMMTMuOSwyMmwxNC40LDQuMUwyNy43LDI4bC0xMy42LTMuOUwyLjQsMjku
+        OSAgTDEuNiwyOC4xTDEuNiwyOC4xeiIgY2xhc3M9IkJsdWUiIC8+DQo8L3N2Zz4L
+</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.Hydro.Core/00-core/03-helper/HydroParterPropHelper.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/00-core/03-helper/HydroParterPropHelper.cs
index e4a402f..ec6eda9 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/00-core/03-helper/HydroParterPropHelper.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/00-core/03-helper/HydroParterPropHelper.cs
@@ -15,12 +15,12 @@
         private static readonly Dictionary<string, string> _dict = new Dictionary<string, string>()
         {
             { Yw.Hydro.ParterProp.LinkStatus,"鐘舵��"},
-            { HydroCalcuProp.CalcuPress,"鑷敱鍘嬪姏"},
-            { HydroCalcuProp.CalcuHead,"缁濆鍘嬪姏"},
-            { HydroCalcuProp.CalcuDemand,"闇�姘撮噺"},
-            { HydroCalcuProp.CalcuFlow,"娴侀噺"},
-            { HydroCalcuProp.CalcuVelocity,"娴侀��"},
-            { HydroCalcuProp.CalcuHeadLoss,"姘村ご鎹熷け"}
+            { HydroVisualCalcuProp.CalcuPress,"鑷敱鍘嬪姏"},
+            { HydroVisualCalcuProp.CalcuHead,"缁濆鍘嬪姏"},
+            { HydroVisualCalcuProp.CalcuDemand,"闇�姘撮噺"},
+            { HydroVisualCalcuProp.CalcuFlow,"娴侀噺"},
+            { HydroVisualCalcuProp.CalcuVelocity,"娴侀��"},
+            { HydroVisualCalcuProp.CalcuHeadLoss,"姘村ご鎹熷け"}
         };
 
         /// <summary>
@@ -33,159 +33,159 @@
             {
                 case Yw.Hydro.ParterCatalog.Node:
                     {
-                        dict.Add(HydroCalcuProp.CalcuPress, "鑷敱鍘嬪姏");
-                        dict.Add(HydroCalcuProp.CalcuHead, "缁濆鍘嬪姏");
-                        dict.Add(HydroCalcuProp.CalcuDemand, "闇�姘撮噺");
+                        dict.Add(HydroVisualCalcuProp.CalcuPress, "鑷敱鍘嬪姏");
+                        dict.Add(HydroVisualCalcuProp.CalcuHead, "缁濆鍘嬪姏");
+                        dict.Add(HydroVisualCalcuProp.CalcuDemand, "闇�姘撮噺");
                     }
                     break;
                 case Yw.Hydro.ParterCatalog.Reservoir:
                     {
-                        dict.Add(HydroCalcuProp.CalcuPress, "鑷敱鍘嬪姏");
-                        dict.Add(HydroCalcuProp.CalcuHead, "缁濆鍘嬪姏");
-                        dict.Add(HydroCalcuProp.CalcuDemand, "闇�姘撮噺");
+                        dict.Add(HydroVisualCalcuProp.CalcuPress, "鑷敱鍘嬪姏");
+                        dict.Add(HydroVisualCalcuProp.CalcuHead, "缁濆鍘嬪姏");
+                        dict.Add(HydroVisualCalcuProp.CalcuDemand, "闇�姘撮噺");
                     }
                     break;
                 case Yw.Hydro.ParterCatalog.Tank:
                     {
-                        dict.Add(HydroCalcuProp.CalcuPress, "鑷敱鍘嬪姏");
-                        dict.Add(HydroCalcuProp.CalcuHead, "缁濆鍘嬪姏");
-                        dict.Add(HydroCalcuProp.CalcuDemand, "闇�姘撮噺");
+                        dict.Add(HydroVisualCalcuProp.CalcuPress, "鑷敱鍘嬪姏");
+                        dict.Add(HydroVisualCalcuProp.CalcuHead, "缁濆鍘嬪姏");
+                        dict.Add(HydroVisualCalcuProp.CalcuDemand, "闇�姘撮噺");
                     }
                     break;
                 case Yw.Hydro.ParterCatalog.Waterbox:
                     {
-                        dict.Add(HydroCalcuProp.CalcuPress, "鑷敱鍘嬪姏");
-                        dict.Add(HydroCalcuProp.CalcuHead, "缁濆鍘嬪姏");
-                        dict.Add(HydroCalcuProp.CalcuDemand, "闇�姘撮噺");
+                        dict.Add(HydroVisualCalcuProp.CalcuPress, "鑷敱鍘嬪姏");
+                        dict.Add(HydroVisualCalcuProp.CalcuHead, "缁濆鍘嬪姏");
+                        dict.Add(HydroVisualCalcuProp.CalcuDemand, "闇�姘撮噺");
                     }
                     break;
                 case Yw.Hydro.ParterCatalog.Junction:
                     {
-                        dict.Add(HydroCalcuProp.CalcuPress, "鑷敱鍘嬪姏");
-                        dict.Add(HydroCalcuProp.CalcuHead, "缁濆鍘嬪姏");
-                        dict.Add(HydroCalcuProp.CalcuDemand, "闇�姘撮噺");
+                        dict.Add(HydroVisualCalcuProp.CalcuPress, "鑷敱鍘嬪姏");
+                        dict.Add(HydroVisualCalcuProp.CalcuHead, "缁濆鍘嬪姏");
+                        dict.Add(HydroVisualCalcuProp.CalcuDemand, "闇�姘撮噺");
                     }
                     break;
                 case Yw.Hydro.ParterCatalog.Blunthead:
                     {
-                        dict.Add(HydroCalcuProp.CalcuPress, "鑷敱鍘嬪姏");
-                        dict.Add(HydroCalcuProp.CalcuHead, "缁濆鍘嬪姏");
-                        dict.Add(HydroCalcuProp.CalcuDemand, "闇�姘撮噺");
+                        dict.Add(HydroVisualCalcuProp.CalcuPress, "鑷敱鍘嬪姏");
+                        dict.Add(HydroVisualCalcuProp.CalcuHead, "缁濆鍘嬪姏");
+                        dict.Add(HydroVisualCalcuProp.CalcuDemand, "闇�姘撮噺");
                     }
                     break;
                 case Yw.Hydro.ParterCatalog.Elbow:
                     {
-                        dict.Add(HydroCalcuProp.CalcuPress, "鑷敱鍘嬪姏");
-                        dict.Add(HydroCalcuProp.CalcuHead, "缁濆鍘嬪姏");
-                        dict.Add(HydroCalcuProp.CalcuDemand, "闇�姘撮噺");
+                        dict.Add(HydroVisualCalcuProp.CalcuPress, "鑷敱鍘嬪姏");
+                        dict.Add(HydroVisualCalcuProp.CalcuHead, "缁濆鍘嬪姏");
+                        dict.Add(HydroVisualCalcuProp.CalcuDemand, "闇�姘撮噺");
                     }
                     break;
                 case Yw.Hydro.ParterCatalog.Threelink:
                     {
-                        dict.Add(HydroCalcuProp.CalcuPress, "鑷敱鍘嬪姏");
-                        dict.Add(HydroCalcuProp.CalcuHead, "缁濆鍘嬪姏");
-                        dict.Add(HydroCalcuProp.CalcuDemand, "闇�姘撮噺");
+                        dict.Add(HydroVisualCalcuProp.CalcuPress, "鑷敱鍘嬪姏");
+                        dict.Add(HydroVisualCalcuProp.CalcuHead, "缁濆鍘嬪姏");
+                        dict.Add(HydroVisualCalcuProp.CalcuDemand, "闇�姘撮噺");
                     }
                     break;
                 case Yw.Hydro.ParterCatalog.Fourlink:
                     {
-                        dict.Add(HydroCalcuProp.CalcuPress, "鑷敱鍘嬪姏");
-                        dict.Add(HydroCalcuProp.CalcuHead, "缁濆鍘嬪姏");
-                        dict.Add(HydroCalcuProp.CalcuDemand, "闇�姘撮噺");
+                        dict.Add(HydroVisualCalcuProp.CalcuPress, "鑷敱鍘嬪姏");
+                        dict.Add(HydroVisualCalcuProp.CalcuHead, "缁濆鍘嬪姏");
+                        dict.Add(HydroVisualCalcuProp.CalcuDemand, "闇�姘撮噺");
                     }
                     break;
                 case Yw.Hydro.ParterCatalog.Emitter:
                     {
-                        dict.Add(HydroCalcuProp.CalcuPress, "鑷敱鍘嬪姏");
-                        dict.Add(HydroCalcuProp.CalcuHead, "缁濆鍘嬪姏");
-                        dict.Add(HydroCalcuProp.CalcuDemand, "闇�姘撮噺");
+                        dict.Add(HydroVisualCalcuProp.CalcuPress, "鑷敱鍘嬪姏");
+                        dict.Add(HydroVisualCalcuProp.CalcuHead, "缁濆鍘嬪姏");
+                        dict.Add(HydroVisualCalcuProp.CalcuDemand, "闇�姘撮噺");
                     }
                     break;
                 case Yw.Hydro.ParterCatalog.Nozzle:
                     {
-                        dict.Add(HydroCalcuProp.CalcuPress, "鑷敱鍘嬪姏");
-                        dict.Add(HydroCalcuProp.CalcuHead, "缁濆鍘嬪姏");
-                        dict.Add(HydroCalcuProp.CalcuDemand, "闇�姘撮噺");
+                        dict.Add(HydroVisualCalcuProp.CalcuPress, "鑷敱鍘嬪姏");
+                        dict.Add(HydroVisualCalcuProp.CalcuHead, "缁濆鍘嬪姏");
+                        dict.Add(HydroVisualCalcuProp.CalcuDemand, "闇�姘撮噺");
                     }
                     break;
                 case Yw.Hydro.ParterCatalog.Hydrant:
                     {
-                        dict.Add(HydroCalcuProp.CalcuPress, "鑷敱鍘嬪姏");
-                        dict.Add(HydroCalcuProp.CalcuHead, "缁濆鍘嬪姏");
-                        dict.Add(HydroCalcuProp.CalcuDemand, "闇�姘撮噺");
+                        dict.Add(HydroVisualCalcuProp.CalcuPress, "鑷敱鍘嬪姏");
+                        dict.Add(HydroVisualCalcuProp.CalcuHead, "缁濆鍘嬪姏");
+                        dict.Add(HydroVisualCalcuProp.CalcuDemand, "闇�姘撮噺");
                     }
                     break;
                 case Yw.Hydro.ParterCatalog.Meter:
                     {
-                        dict.Add(HydroCalcuProp.CalcuPress, "鑷敱鍘嬪姏");
-                        dict.Add(HydroCalcuProp.CalcuHead, "缁濆鍘嬪姏");
-                        dict.Add(HydroCalcuProp.CalcuDemand, "闇�姘撮噺");
+                        dict.Add(HydroVisualCalcuProp.CalcuPress, "鑷敱鍘嬪姏");
+                        dict.Add(HydroVisualCalcuProp.CalcuHead, "缁濆鍘嬪姏");
+                        dict.Add(HydroVisualCalcuProp.CalcuDemand, "闇�姘撮噺");
                     }
                     break;
                 case Yw.Hydro.ParterCatalog.Flowmeter:
                     {
-                        dict.Add(HydroCalcuProp.CalcuPress, "鑷敱鍘嬪姏");
-                        dict.Add(HydroCalcuProp.CalcuHead, "缁濆鍘嬪姏");
-                        dict.Add(HydroCalcuProp.CalcuDemand, "闇�姘撮噺");
+                        dict.Add(HydroVisualCalcuProp.CalcuPress, "鑷敱鍘嬪姏");
+                        dict.Add(HydroVisualCalcuProp.CalcuHead, "缁濆鍘嬪姏");
+                        dict.Add(HydroVisualCalcuProp.CalcuDemand, "闇�姘撮噺");
                     }
                     break;
                 case Yw.Hydro.ParterCatalog.Pressmeter:
                     {
-                        dict.Add(HydroCalcuProp.CalcuPress, "鑷敱鍘嬪姏");
-                        dict.Add(HydroCalcuProp.CalcuHead, "缁濆鍘嬪姏");
-                        dict.Add(HydroCalcuProp.CalcuDemand, "闇�姘撮噺");
+                        dict.Add(HydroVisualCalcuProp.CalcuPress, "鑷敱鍘嬪姏");
+                        dict.Add(HydroVisualCalcuProp.CalcuHead, "缁濆鍘嬪姏");
+                        dict.Add(HydroVisualCalcuProp.CalcuDemand, "闇�姘撮噺");
                     }
                     break;
                 case Yw.Hydro.ParterCatalog.Link:
                     {
-                        dict.Add(HydroCalcuProp.CalcuFlow, "娴侀噺");
-                        dict.Add(HydroCalcuProp.CalcuVelocity, "娴侀��");
-                        dict.Add(HydroCalcuProp.CalcuHeadLoss, "姘村ご鎹熷け");
+                        dict.Add(HydroVisualCalcuProp.CalcuFlow, "娴侀噺");
+                        dict.Add(HydroVisualCalcuProp.CalcuVelocity, "娴侀��");
+                        dict.Add(HydroVisualCalcuProp.CalcuHeadLoss, "姘村ご鎹熷け");
                     }
                     break;
                 case Yw.Hydro.ParterCatalog.Pipe:
                     {
                         dict.Add(Yw.Hydro.ParterProp.LinkStatus, "鐘舵��");
-                        dict.Add(HydroCalcuProp.CalcuFlow, "娴侀噺");
-                        dict.Add(HydroCalcuProp.CalcuVelocity, "娴侀��");
-                        dict.Add(HydroCalcuProp.CalcuHeadLoss, "姘村ご鎹熷け");
+                        dict.Add(HydroVisualCalcuProp.CalcuFlow, "娴侀噺");
+                        dict.Add(HydroVisualCalcuProp.CalcuVelocity, "娴侀��");
+                        dict.Add(HydroVisualCalcuProp.CalcuHeadLoss, "姘村ご鎹熷け");
                     }
                     break;
                 case Yw.Hydro.ParterCatalog.Translation:
                     {
-                        dict.Add(HydroCalcuProp.CalcuFlow, "娴侀噺");
-                        dict.Add(HydroCalcuProp.CalcuVelocity, "娴侀��");
-                        dict.Add(HydroCalcuProp.CalcuHeadLoss, "姘村ご鎹熷け");
+                        dict.Add(HydroVisualCalcuProp.CalcuFlow, "娴侀噺");
+                        dict.Add(HydroVisualCalcuProp.CalcuVelocity, "娴侀��");
+                        dict.Add(HydroVisualCalcuProp.CalcuHeadLoss, "姘村ご鎹熷け");
                     }
                     break;
                 case Yw.Hydro.ParterCatalog.Exchanger:
                     {
-                        dict.Add(HydroCalcuProp.CalcuFlow, "娴侀噺");
-                        dict.Add(HydroCalcuProp.CalcuVelocity, "娴侀��");
-                        dict.Add(HydroCalcuProp.CalcuHeadLoss, "姘村ご鎹熷け");
+                        dict.Add(HydroVisualCalcuProp.CalcuFlow, "娴侀噺");
+                        dict.Add(HydroVisualCalcuProp.CalcuVelocity, "娴侀��");
+                        dict.Add(HydroVisualCalcuProp.CalcuHeadLoss, "姘村ご鎹熷け");
                     }
                     break;
                 case Yw.Hydro.ParterCatalog.Compressor:
                     {
-                        dict.Add(HydroCalcuProp.CalcuFlow, "娴侀噺");
-                        dict.Add(HydroCalcuProp.CalcuVelocity, "娴侀��");
-                        dict.Add(HydroCalcuProp.CalcuHeadLoss, "姘村ご鎹熷け");
+                        dict.Add(HydroVisualCalcuProp.CalcuFlow, "娴侀噺");
+                        dict.Add(HydroVisualCalcuProp.CalcuVelocity, "娴侀��");
+                        dict.Add(HydroVisualCalcuProp.CalcuHeadLoss, "姘村ご鎹熷け");
                     }
                     break;
                 case Yw.Hydro.ParterCatalog.Pump:
                     {
                         dict.Add(Yw.Hydro.ParterProp.LinkStatus, "鐘舵��");
-                        dict.Add(HydroCalcuProp.CalcuFlow, "娴侀噺");
-                        dict.Add(HydroCalcuProp.CalcuVelocity, "娴侀��");
-                        dict.Add(HydroCalcuProp.CalcuHeadLoss, "姘村ご鎹熷け");
+                        dict.Add(HydroVisualCalcuProp.CalcuFlow, "娴侀噺");
+                        dict.Add(HydroVisualCalcuProp.CalcuVelocity, "娴侀��");
+                        dict.Add(HydroVisualCalcuProp.CalcuHeadLoss, "姘村ご鎹熷け");
                     }
                     break;
                 case Yw.Hydro.ParterCatalog.Valve:
                     {
                         dict.Add(Yw.Hydro.ParterProp.LinkStatus, "鐘舵��");
-                        dict.Add(HydroCalcuProp.CalcuFlow, "娴侀噺");
-                        dict.Add(HydroCalcuProp.CalcuVelocity, "娴侀��");
-                        dict.Add(HydroCalcuProp.CalcuHeadLoss, "姘村ご鎹熷け");
+                        dict.Add(HydroVisualCalcuProp.CalcuFlow, "娴侀噺");
+                        dict.Add(HydroVisualCalcuProp.CalcuVelocity, "娴侀��");
+                        dict.Add(HydroVisualCalcuProp.CalcuHeadLoss, "姘村ご鎹熷け");
                     }
                     break;
                 default: break;
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/00-core/HydroCalcuPropHelper.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/00-core/HydroCalcuPropHelper.cs
deleted file mode 100644
index 9c0fb2c..0000000
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/00-core/HydroCalcuPropHelper.cs
+++ /dev/null
@@ -1,458 +0,0 @@
-锘縩amespace Yw.WinFrmUI
-{
-    /// <summary>
-    /// 姘村姏璁$畻灞炴�ц緟鍔╃被
-    /// </summary>
-    public class HydroCalcuPropHelper
-    {
-        //鍚嶇О瀛楀吀
-        private static Dictionary<string, string> _nameDict = new Dictionary<string, string>()
-        {
-            { HydroCalcuProp.CalcuPress,"鑷敱鍘嬪姏"},
-            { HydroCalcuProp.CalcuHead,"缁濆鍘嬪姏"},
-            { HydroCalcuProp.CalcuDemand,"闇�姘撮噺"},
-            { HydroCalcuProp.CalcuFlow,"娴侀噺"},
-            { HydroCalcuProp.CalcuVelocity,"娴侀��"},
-            { HydroCalcuProp.CalcuHeadLoss,"姘村ご鎹熷け"},
-            { HydroCalcuProp.CalcuQ,"娴侀噺"},
-            { HydroCalcuProp.CalcuPr,"鍘嬪姏"},
-            { HydroCalcuProp.CalcuH,"鎵▼"},
-            { HydroCalcuProp.CalcuP,"鍔熺巼"},
-            { HydroCalcuProp.CalcuE,"鏁堢巼"}
-        };
-
-        //鍗曚綅瀛楀吀
-        private static Dictionary<string, string> _unitDict = new Dictionary<string, string>()
-        {
-            { HydroCalcuProp.CalcuPress,"m"},
-            { HydroCalcuProp.CalcuHead,"m"},
-            { HydroCalcuProp.CalcuDemand,"m鲁/h"},
-            { HydroCalcuProp.CalcuFlow,"m鲁/h"},
-            { HydroCalcuProp.CalcuVelocity,"m/s"},
-            { HydroCalcuProp.CalcuHeadLoss,"m"},
-            { HydroCalcuProp.CalcuQ,"m鲁/h"},
-            { HydroCalcuProp.CalcuPr,"m"},
-            { HydroCalcuProp.CalcuH,"m"},
-            { HydroCalcuProp.CalcuP,"kW"},
-            { HydroCalcuProp.CalcuE,"%"}
-        };
-
-        /// <summary>
-        /// 鑾峰彇鍚嶇О瀛楀吀
-        /// </summary>
-        public static Dictionary<string, string> GetNameDict(string catalog)
-        {
-            if (string.IsNullOrEmpty(catalog))
-            {
-                return default;
-            }
-            var dict = new Dictionary<string, string>();
-            switch (catalog)
-            {
-                case Yw.Hydro.ParterCatalog.Node:
-                    {
-                        dict.Add(HydroCalcuProp.CalcuPress, GetName(HydroCalcuProp.CalcuPress));
-                        dict.Add(HydroCalcuProp.CalcuHead, GetName(HydroCalcuProp.CalcuHead));
-                        dict.Add(HydroCalcuProp.CalcuDemand, GetName(HydroCalcuProp.CalcuDemand));
-                    }
-                    break;
-                case Yw.Hydro.ParterCatalog.Source:
-                    {
-                        dict.Add(HydroCalcuProp.CalcuPress, GetName(HydroCalcuProp.CalcuPress));
-                        dict.Add(HydroCalcuProp.CalcuHead, GetName(HydroCalcuProp.CalcuHead));
-                        dict.Add(HydroCalcuProp.CalcuDemand, GetName(HydroCalcuProp.CalcuDemand));
-                    }
-                    break;
-                case Yw.Hydro.ParterCatalog.Reservoir:
-                    {
-                        dict.Add(HydroCalcuProp.CalcuPress, GetName(HydroCalcuProp.CalcuPress));
-                        dict.Add(HydroCalcuProp.CalcuHead, GetName(HydroCalcuProp.CalcuHead));
-                        dict.Add(HydroCalcuProp.CalcuDemand, GetName(HydroCalcuProp.CalcuDemand));
-                    }
-                    break;
-                case Yw.Hydro.ParterCatalog.Tank:
-                    {
-                        dict.Add(HydroCalcuProp.CalcuPress, GetName(HydroCalcuProp.CalcuPress));
-                        dict.Add(HydroCalcuProp.CalcuHead, GetName(HydroCalcuProp.CalcuHead));
-                        dict.Add(HydroCalcuProp.CalcuDemand, GetName(HydroCalcuProp.CalcuDemand));
-                    }
-                    break;
-                case Yw.Hydro.ParterCatalog.Waterbox:
-                    {
-                        dict.Add(HydroCalcuProp.CalcuPress, GetName(HydroCalcuProp.CalcuPress));
-                        dict.Add(HydroCalcuProp.CalcuHead, GetName(HydroCalcuProp.CalcuHead));
-                        dict.Add(HydroCalcuProp.CalcuDemand, GetName(HydroCalcuProp.CalcuDemand));
-                    }
-                    break;
-                case Yw.Hydro.ParterCatalog.Junction:
-                    {
-                        dict.Add(HydroCalcuProp.CalcuPress, GetName(HydroCalcuProp.CalcuPress));
-                        dict.Add(HydroCalcuProp.CalcuHead, GetName(HydroCalcuProp.CalcuHead));
-                        dict.Add(HydroCalcuProp.CalcuDemand, GetName(HydroCalcuProp.CalcuDemand));
-                    }
-                    break;
-                case Yw.Hydro.ParterCatalog.Coupling:
-                    {
-                        dict.Add(HydroCalcuProp.CalcuPress, GetName(HydroCalcuProp.CalcuPress));
-                        dict.Add(HydroCalcuProp.CalcuHead, GetName(HydroCalcuProp.CalcuHead));
-                        dict.Add(HydroCalcuProp.CalcuDemand, GetName(HydroCalcuProp.CalcuDemand));
-                    }
-                    break;
-                case Yw.Hydro.ParterCatalog.Blunthead:
-                    {
-                        dict.Add(HydroCalcuProp.CalcuPress, GetName(HydroCalcuProp.CalcuPress));
-                        dict.Add(HydroCalcuProp.CalcuHead, GetName(HydroCalcuProp.CalcuHead));
-                        dict.Add(HydroCalcuProp.CalcuDemand, GetName(HydroCalcuProp.CalcuDemand));
-                    }
-                    break;
-                case Yw.Hydro.ParterCatalog.Elbow:
-                    {
-                        dict.Add(HydroCalcuProp.CalcuPress, GetName(HydroCalcuProp.CalcuPress));
-                        dict.Add(HydroCalcuProp.CalcuHead, GetName(HydroCalcuProp.CalcuHead));
-                        dict.Add(HydroCalcuProp.CalcuDemand, GetName(HydroCalcuProp.CalcuDemand));
-                    }
-                    break;
-                case Yw.Hydro.ParterCatalog.Threelink:
-                    {
-                        dict.Add(HydroCalcuProp.CalcuPress, GetName(HydroCalcuProp.CalcuPress));
-                        dict.Add(HydroCalcuProp.CalcuHead, GetName(HydroCalcuProp.CalcuHead));
-                        dict.Add(HydroCalcuProp.CalcuDemand, GetName(HydroCalcuProp.CalcuDemand));
-                    }
-                    break;
-                case Yw.Hydro.ParterCatalog.Fourlink:
-                    {
-                        dict.Add(HydroCalcuProp.CalcuPress, GetName(HydroCalcuProp.CalcuPress));
-                        dict.Add(HydroCalcuProp.CalcuHead, GetName(HydroCalcuProp.CalcuHead));
-                        dict.Add(HydroCalcuProp.CalcuDemand, GetName(HydroCalcuProp.CalcuDemand));
-                    }
-                    break;
-                case Yw.Hydro.ParterCatalog.Emitter:
-                    {
-                        dict.Add(HydroCalcuProp.CalcuPress, GetName(HydroCalcuProp.CalcuPress));
-                        dict.Add(HydroCalcuProp.CalcuHead, GetName(HydroCalcuProp.CalcuHead));
-                        dict.Add(HydroCalcuProp.CalcuDemand, GetName(HydroCalcuProp.CalcuDemand));
-                    }
-                    break;
-                case Yw.Hydro.ParterCatalog.Nozzle:
-                    {
-                        dict.Add(HydroCalcuProp.CalcuPress, GetName(HydroCalcuProp.CalcuPress));
-                        dict.Add(HydroCalcuProp.CalcuHead, GetName(HydroCalcuProp.CalcuHead));
-                        dict.Add(HydroCalcuProp.CalcuDemand, GetName(HydroCalcuProp.CalcuDemand));
-                    }
-                    break;
-                case Yw.Hydro.ParterCatalog.Hydrant:
-                    {
-                        dict.Add(HydroCalcuProp.CalcuPress, GetName(HydroCalcuProp.CalcuPress));
-                        dict.Add(HydroCalcuProp.CalcuHead, GetName(HydroCalcuProp.CalcuHead));
-                        dict.Add(HydroCalcuProp.CalcuDemand, GetName(HydroCalcuProp.CalcuDemand));
-                    }
-                    break;
-                case Yw.Hydro.ParterCatalog.Meter:
-                    {
-                        dict.Add(HydroCalcuProp.CalcuPress, GetName(HydroCalcuProp.CalcuPress));
-                        dict.Add(HydroCalcuProp.CalcuHead, GetName(HydroCalcuProp.CalcuHead));
-                        dict.Add(HydroCalcuProp.CalcuDemand, GetName(HydroCalcuProp.CalcuDemand));
-                    }
-                    break;
-                case Yw.Hydro.ParterCatalog.Instrument:
-                    {
-                        dict.Add(HydroCalcuProp.CalcuPress, GetName(HydroCalcuProp.CalcuPress));
-                        dict.Add(HydroCalcuProp.CalcuHead, GetName(HydroCalcuProp.CalcuHead));
-                        dict.Add(HydroCalcuProp.CalcuDemand, GetName(HydroCalcuProp.CalcuDemand));
-                    }
-                    break;
-                case Yw.Hydro.ParterCatalog.Flowmeter:
-                    {
-                        dict.Add(HydroCalcuProp.CalcuQ, GetName(HydroCalcuProp.CalcuQ));
-                    }
-                    break;
-                case Yw.Hydro.ParterCatalog.Pressmeter:
-                    {
-                        dict.Add(HydroCalcuProp.CalcuPr, GetName(HydroCalcuProp.CalcuPr));
-                    }
-                    break;
-                case Yw.Hydro.ParterCatalog.Link:
-                    {
-                        dict.Add(HydroCalcuProp.CalcuFlow, GetName(HydroCalcuProp.CalcuFlow));
-                        dict.Add(HydroCalcuProp.CalcuVelocity, GetName(HydroCalcuProp.CalcuVelocity));
-                        dict.Add(HydroCalcuProp.CalcuHeadLoss, GetName(HydroCalcuProp.CalcuHeadLoss));
-                    }
-                    break;
-                case Yw.Hydro.ParterCatalog.Pipe:
-                    {
-                        dict.Add(HydroCalcuProp.CalcuFlow, GetName(HydroCalcuProp.CalcuFlow));
-                        dict.Add(HydroCalcuProp.CalcuVelocity, GetName(HydroCalcuProp.CalcuVelocity));
-                        dict.Add(HydroCalcuProp.CalcuHeadLoss, GetName(HydroCalcuProp.CalcuHeadLoss));
-                    }
-                    break;
-                case Yw.Hydro.ParterCatalog.Translation:
-                    {
-                        dict.Add(HydroCalcuProp.CalcuFlow, GetName(HydroCalcuProp.CalcuFlow));
-                        dict.Add(HydroCalcuProp.CalcuVelocity, GetName(HydroCalcuProp.CalcuVelocity));
-                        dict.Add(HydroCalcuProp.CalcuHeadLoss, GetName(HydroCalcuProp.CalcuHeadLoss));
-                    }
-                    break;
-                case Yw.Hydro.ParterCatalog.Pump:
-                    {
-                        dict.Add(HydroCalcuProp.CalcuQ, GetName(HydroCalcuProp.CalcuQ));
-                        dict.Add(HydroCalcuProp.CalcuH, GetName(HydroCalcuProp.CalcuH));
-                        dict.Add(HydroCalcuProp.CalcuP, GetName(HydroCalcuProp.CalcuP));
-                        dict.Add(HydroCalcuProp.CalcuE, GetName(HydroCalcuProp.CalcuE));
-                    }
-                    break;
-                case Yw.Hydro.ParterCatalog.Valve:
-                    {
-                        dict.Add(HydroCalcuProp.CalcuFlow, GetName(HydroCalcuProp.CalcuFlow));
-                        dict.Add(HydroCalcuProp.CalcuVelocity, GetName(HydroCalcuProp.CalcuVelocity));
-                        dict.Add(HydroCalcuProp.CalcuHeadLoss, GetName(HydroCalcuProp.CalcuHeadLoss));
-                    }
-                    break;
-                case Yw.Hydro.ParterCatalog.Resistance:
-                    {
-                        dict.Add(HydroCalcuProp.CalcuFlow, GetName(HydroCalcuProp.CalcuFlow));
-                        dict.Add(HydroCalcuProp.CalcuVelocity, GetName(HydroCalcuProp.CalcuVelocity));
-                        dict.Add(HydroCalcuProp.CalcuHeadLoss, GetName(HydroCalcuProp.CalcuHeadLoss));
-                    }
-                    break;
-                case Yw.Hydro.ParterCatalog.Exchanger:
-                    {
-                        dict.Add(HydroCalcuProp.CalcuFlow, GetName(HydroCalcuProp.CalcuFlow));
-                        dict.Add(HydroCalcuProp.CalcuVelocity, GetName(HydroCalcuProp.CalcuVelocity));
-                        dict.Add(HydroCalcuProp.CalcuHeadLoss, GetName(HydroCalcuProp.CalcuHeadLoss));
-                    }
-                    break;
-                case Yw.Hydro.ParterCatalog.Compressor:
-                    {
-                        dict.Add(HydroCalcuProp.CalcuFlow, GetName(HydroCalcuProp.CalcuFlow));
-                        dict.Add(HydroCalcuProp.CalcuVelocity, GetName(HydroCalcuProp.CalcuVelocity));
-                        dict.Add(HydroCalcuProp.CalcuHeadLoss, GetName(HydroCalcuProp.CalcuHeadLoss));
-                    }
-                    break;
-                default: break;
-            }
-            return dict;
-        }
-
-        /// <summary>
-        /// 鑾峰彇鍗曚綅瀛楀吀
-        /// </summary>
-        public static Dictionary<string, string> GetUnitDict(string catalog)
-        {
-            if (string.IsNullOrEmpty(catalog))
-            {
-                return default;
-            }
-            var dict = new Dictionary<string, string>();
-            switch (catalog)
-            {
-                case Yw.Hydro.ParterCatalog.Node:
-                    {
-                        dict.Add(HydroCalcuProp.CalcuPress, GetUnit(HydroCalcuProp.CalcuPress));
-                        dict.Add(HydroCalcuProp.CalcuHead, GetUnit(HydroCalcuProp.CalcuHead));
-                        dict.Add(HydroCalcuProp.CalcuDemand, GetUnit(HydroCalcuProp.CalcuDemand));
-                    }
-                    break;
-                case Yw.Hydro.ParterCatalog.Source:
-                    {
-                        dict.Add(HydroCalcuProp.CalcuPress, GetUnit(HydroCalcuProp.CalcuPress));
-                        dict.Add(HydroCalcuProp.CalcuHead, GetUnit(HydroCalcuProp.CalcuHead));
-                        dict.Add(HydroCalcuProp.CalcuDemand, GetUnit(HydroCalcuProp.CalcuDemand));
-                    }
-                    break;
-                case Yw.Hydro.ParterCatalog.Reservoir:
-                    {
-                        dict.Add(HydroCalcuProp.CalcuPress, GetUnit(HydroCalcuProp.CalcuPress));
-                        dict.Add(HydroCalcuProp.CalcuHead, GetUnit(HydroCalcuProp.CalcuHead));
-                        dict.Add(HydroCalcuProp.CalcuDemand, GetUnit(HydroCalcuProp.CalcuDemand));
-                    }
-                    break;
-                case Yw.Hydro.ParterCatalog.Tank:
-                    {
-                        dict.Add(HydroCalcuProp.CalcuPress, GetUnit(HydroCalcuProp.CalcuPress));
-                        dict.Add(HydroCalcuProp.CalcuHead, GetUnit(HydroCalcuProp.CalcuHead));
-                        dict.Add(HydroCalcuProp.CalcuDemand, GetUnit(HydroCalcuProp.CalcuDemand));
-                    }
-                    break;
-                case Yw.Hydro.ParterCatalog.Waterbox:
-                    {
-                        dict.Add(HydroCalcuProp.CalcuPress, GetUnit(HydroCalcuProp.CalcuPress));
-                        dict.Add(HydroCalcuProp.CalcuHead, GetUnit(HydroCalcuProp.CalcuHead));
-                        dict.Add(HydroCalcuProp.CalcuDemand, GetUnit(HydroCalcuProp.CalcuDemand));
-                    }
-                    break;
-                case Yw.Hydro.ParterCatalog.Junction:
-                    {
-                        dict.Add(HydroCalcuProp.CalcuPress, GetUnit(HydroCalcuProp.CalcuPress));
-                        dict.Add(HydroCalcuProp.CalcuHead, GetUnit(HydroCalcuProp.CalcuHead));
-                        dict.Add(HydroCalcuProp.CalcuDemand, GetUnit(HydroCalcuProp.CalcuDemand));
-                    }
-                    break;
-                case Yw.Hydro.ParterCatalog.Coupling:
-                    {
-                        dict.Add(HydroCalcuProp.CalcuPress, GetUnit(HydroCalcuProp.CalcuPress));
-                        dict.Add(HydroCalcuProp.CalcuHead, GetUnit(HydroCalcuProp.CalcuHead));
-                        dict.Add(HydroCalcuProp.CalcuDemand, GetUnit(HydroCalcuProp.CalcuDemand));
-                    }
-                    break;
-                case Yw.Hydro.ParterCatalog.Blunthead:
-                    {
-                        dict.Add(HydroCalcuProp.CalcuPress, GetUnit(HydroCalcuProp.CalcuPress));
-                        dict.Add(HydroCalcuProp.CalcuHead, GetUnit(HydroCalcuProp.CalcuHead));
-                        dict.Add(HydroCalcuProp.CalcuDemand, GetUnit(HydroCalcuProp.CalcuDemand));
-                    }
-                    break;
-                case Yw.Hydro.ParterCatalog.Elbow:
-                    {
-                        dict.Add(HydroCalcuProp.CalcuPress, GetUnit(HydroCalcuProp.CalcuPress));
-                        dict.Add(HydroCalcuProp.CalcuHead, GetUnit(HydroCalcuProp.CalcuHead));
-                        dict.Add(HydroCalcuProp.CalcuDemand, GetUnit(HydroCalcuProp.CalcuDemand));
-                    }
-                    break;
-                case Yw.Hydro.ParterCatalog.Threelink:
-                    {
-                        dict.Add(HydroCalcuProp.CalcuPress, GetUnit(HydroCalcuProp.CalcuPress));
-                        dict.Add(HydroCalcuProp.CalcuHead, GetUnit(HydroCalcuProp.CalcuHead));
-                        dict.Add(HydroCalcuProp.CalcuDemand, GetUnit(HydroCalcuProp.CalcuDemand));
-                    }
-                    break;
-                case Yw.Hydro.ParterCatalog.Fourlink:
-                    {
-                        dict.Add(HydroCalcuProp.CalcuPress, GetUnit(HydroCalcuProp.CalcuPress));
-                        dict.Add(HydroCalcuProp.CalcuHead, GetUnit(HydroCalcuProp.CalcuHead));
-                        dict.Add(HydroCalcuProp.CalcuDemand, GetUnit(HydroCalcuProp.CalcuDemand));
-                    }
-                    break;
-                case Yw.Hydro.ParterCatalog.Emitter:
-                    {
-                        dict.Add(HydroCalcuProp.CalcuPress, GetUnit(HydroCalcuProp.CalcuPress));
-                        dict.Add(HydroCalcuProp.CalcuHead, GetUnit(HydroCalcuProp.CalcuHead));
-                        dict.Add(HydroCalcuProp.CalcuDemand, GetUnit(HydroCalcuProp.CalcuDemand));
-                    }
-                    break;
-                case Yw.Hydro.ParterCatalog.Nozzle:
-                    {
-                        dict.Add(HydroCalcuProp.CalcuPress, GetUnit(HydroCalcuProp.CalcuPress));
-                        dict.Add(HydroCalcuProp.CalcuHead, GetUnit(HydroCalcuProp.CalcuHead));
-                        dict.Add(HydroCalcuProp.CalcuDemand, GetUnit(HydroCalcuProp.CalcuDemand));
-                    }
-                    break;
-                case Yw.Hydro.ParterCatalog.Hydrant:
-                    {
-                        dict.Add(HydroCalcuProp.CalcuPress, GetUnit(HydroCalcuProp.CalcuPress));
-                        dict.Add(HydroCalcuProp.CalcuHead, GetUnit(HydroCalcuProp.CalcuHead));
-                        dict.Add(HydroCalcuProp.CalcuDemand, GetUnit(HydroCalcuProp.CalcuDemand));
-                    }
-                    break;
-                case Yw.Hydro.ParterCatalog.Meter:
-                    {
-                        dict.Add(HydroCalcuProp.CalcuPress, GetUnit(HydroCalcuProp.CalcuPress));
-                        dict.Add(HydroCalcuProp.CalcuHead, GetUnit(HydroCalcuProp.CalcuHead));
-                        dict.Add(HydroCalcuProp.CalcuDemand, GetUnit(HydroCalcuProp.CalcuDemand));
-                    }
-                    break;
-                case Yw.Hydro.ParterCatalog.Instrument:
-                    {
-                        dict.Add(HydroCalcuProp.CalcuPress, GetUnit(HydroCalcuProp.CalcuPress));
-                        dict.Add(HydroCalcuProp.CalcuHead, GetUnit(HydroCalcuProp.CalcuHead));
-                        dict.Add(HydroCalcuProp.CalcuDemand, GetUnit(HydroCalcuProp.CalcuDemand));
-                    }
-                    break;
-                case Yw.Hydro.ParterCatalog.Flowmeter:
-                    {
-                        dict.Add(HydroCalcuProp.CalcuQ, GetUnit(HydroCalcuProp.CalcuQ));
-                    }
-                    break;
-                case Yw.Hydro.ParterCatalog.Pressmeter:
-                    {
-                        dict.Add(HydroCalcuProp.CalcuPr, GetUnit(HydroCalcuProp.CalcuPr));
-                    }
-                    break;
-                case Yw.Hydro.ParterCatalog.Link:
-                    {
-                        dict.Add(HydroCalcuProp.CalcuFlow, GetUnit(HydroCalcuProp.CalcuFlow));
-                        dict.Add(HydroCalcuProp.CalcuVelocity, GetUnit(HydroCalcuProp.CalcuVelocity));
-                        dict.Add(HydroCalcuProp.CalcuHeadLoss, GetUnit(HydroCalcuProp.CalcuHeadLoss));
-                    }
-                    break;
-                case Yw.Hydro.ParterCatalog.Pipe:
-                    {
-                        dict.Add(HydroCalcuProp.CalcuFlow, GetUnit(HydroCalcuProp.CalcuFlow));
-                        dict.Add(HydroCalcuProp.CalcuVelocity, GetUnit(HydroCalcuProp.CalcuVelocity));
-                        dict.Add(HydroCalcuProp.CalcuHeadLoss, GetUnit(HydroCalcuProp.CalcuHeadLoss));
-                    }
-                    break;
-                case Yw.Hydro.ParterCatalog.Translation:
-                    {
-                        dict.Add(HydroCalcuProp.CalcuFlow, GetUnit(HydroCalcuProp.CalcuFlow));
-                        dict.Add(HydroCalcuProp.CalcuVelocity, GetUnit(HydroCalcuProp.CalcuVelocity));
-                        dict.Add(HydroCalcuProp.CalcuHeadLoss, GetUnit(HydroCalcuProp.CalcuHeadLoss));
-                    }
-                    break;
-                case Yw.Hydro.ParterCatalog.Pump:
-                    {
-                        dict.Add(HydroCalcuProp.CalcuQ, GetUnit(HydroCalcuProp.CalcuQ));
-                        dict.Add(HydroCalcuProp.CalcuH, GetUnit(HydroCalcuProp.CalcuH));
-                        dict.Add(HydroCalcuProp.CalcuP, GetUnit(HydroCalcuProp.CalcuP));
-                        dict.Add(HydroCalcuProp.CalcuE, GetUnit(HydroCalcuProp.CalcuE));
-                    }
-                    break;
-                case Yw.Hydro.ParterCatalog.Valve:
-                    {
-                        dict.Add(HydroCalcuProp.CalcuFlow, GetUnit(HydroCalcuProp.CalcuFlow));
-                        dict.Add(HydroCalcuProp.CalcuVelocity, GetUnit(HydroCalcuProp.CalcuVelocity));
-                        dict.Add(HydroCalcuProp.CalcuHeadLoss, GetUnit(HydroCalcuProp.CalcuHeadLoss));
-                    }
-                    break;
-                case Yw.Hydro.ParterCatalog.Resistance:
-                    {
-                        dict.Add(HydroCalcuProp.CalcuFlow, GetUnit(HydroCalcuProp.CalcuFlow));
-                        dict.Add(HydroCalcuProp.CalcuVelocity, GetUnit(HydroCalcuProp.CalcuVelocity));
-                        dict.Add(HydroCalcuProp.CalcuHeadLoss, GetUnit(HydroCalcuProp.CalcuHeadLoss));
-                    }
-                    break;
-                case Yw.Hydro.ParterCatalog.Exchanger:
-                    {
-                        dict.Add(HydroCalcuProp.CalcuFlow, GetUnit(HydroCalcuProp.CalcuFlow));
-                        dict.Add(HydroCalcuProp.CalcuVelocity, GetUnit(HydroCalcuProp.CalcuVelocity));
-                        dict.Add(HydroCalcuProp.CalcuHeadLoss, GetUnit(HydroCalcuProp.CalcuHeadLoss));
-                    }
-                    break;
-                case Yw.Hydro.ParterCatalog.Compressor:
-                    {
-                        dict.Add(HydroCalcuProp.CalcuFlow, GetUnit(HydroCalcuProp.CalcuFlow));
-                        dict.Add(HydroCalcuProp.CalcuVelocity, GetUnit(HydroCalcuProp.CalcuVelocity));
-                        dict.Add(HydroCalcuProp.CalcuHeadLoss, GetUnit(HydroCalcuProp.CalcuHeadLoss));
-                    }
-                    break;
-                default: break;
-            }
-            return dict;
-        }
-
-        /// <summary>
-        /// 鑾峰彇鍚嶇О
-        /// </summary>
-        public static string GetName(string code)
-        {
-            if (_nameDict.ContainsKey(code))
-            {
-                return _nameDict[code];
-            }
-            return default;
-        }
-
-        /// <summary>
-        /// 鑾峰彇鍗曚綅
-        /// </summary>
-        public static string GetUnit(string code)
-        {
-            if (_unitDict.ContainsKey(code))
-            {
-                return _unitDict[code];
-            }
-            return default;
-        }
-
-
-    }
-}
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/00-core/HydroCalcuProp.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/00-core/HydroVisualCalcuProp.cs
similarity index 97%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/00-core/HydroCalcuProp.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/00-core/HydroVisualCalcuProp.cs
index 5537048..69585dc 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/00-core/HydroCalcuProp.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/00-core/HydroVisualCalcuProp.cs
@@ -3,7 +3,7 @@
     /// <summary>
     /// 
     /// </summary>
-    public class HydroCalcuProp
+    public class HydroVisualCalcuProp
     {
         /// <summary>
         /// 鑷敱鍘嬪姏(鍘婚櫎楂樼▼ m)
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/00-core/HydroVisualCalcuPropHelper.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/00-core/HydroVisualCalcuPropHelper.cs
new file mode 100644
index 0000000..f731808
--- /dev/null
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/00-core/HydroVisualCalcuPropHelper.cs
@@ -0,0 +1,458 @@
+锘縩amespace Yw.WinFrmUI
+{
+    /// <summary>
+    /// 姘村姏璁$畻灞炴�ц緟鍔╃被
+    /// </summary>
+    public class HydroVisualCalcuPropHelper
+    {
+        //鍚嶇О瀛楀吀
+        private static Dictionary<string, string> _nameDict = new Dictionary<string, string>()
+        {
+            { HydroVisualCalcuProp.CalcuPress,"鑷敱鍘嬪姏"},
+            { HydroVisualCalcuProp.CalcuHead,"缁濆鍘嬪姏"},
+            { HydroVisualCalcuProp.CalcuDemand,"闇�姘撮噺"},
+            { HydroVisualCalcuProp.CalcuFlow,"娴侀噺"},
+            { HydroVisualCalcuProp.CalcuVelocity,"娴侀��"},
+            { HydroVisualCalcuProp.CalcuHeadLoss,"姘村ご鎹熷け"},
+            { HydroVisualCalcuProp.CalcuQ,"娴侀噺"},
+            { HydroVisualCalcuProp.CalcuPr,"鍘嬪姏"},
+            { HydroVisualCalcuProp.CalcuH,"鎵▼"},
+            { HydroVisualCalcuProp.CalcuP,"鍔熺巼"},
+            { HydroVisualCalcuProp.CalcuE,"鏁堢巼"}
+        };
+
+        //鍗曚綅瀛楀吀
+        private static Dictionary<string, string> _unitDict = new Dictionary<string, string>()
+        {
+            { HydroVisualCalcuProp.CalcuPress,"m"},
+            { HydroVisualCalcuProp.CalcuHead,"m"},
+            { HydroVisualCalcuProp.CalcuDemand,"m鲁/h"},
+            { HydroVisualCalcuProp.CalcuFlow,"m鲁/h"},
+            { HydroVisualCalcuProp.CalcuVelocity,"m/s"},
+            { HydroVisualCalcuProp.CalcuHeadLoss,"m"},
+            { HydroVisualCalcuProp.CalcuQ,"m鲁/h"},
+            { HydroVisualCalcuProp.CalcuPr,"m"},
+            { HydroVisualCalcuProp.CalcuH,"m"},
+            { HydroVisualCalcuProp.CalcuP,"kW"},
+            { HydroVisualCalcuProp.CalcuE,"%"}
+        };
+
+        /// <summary>
+        /// 鑾峰彇鍚嶇О瀛楀吀
+        /// </summary>
+        public static Dictionary<string, string> GetNameDict(string catalog)
+        {
+            if (string.IsNullOrEmpty(catalog))
+            {
+                return default;
+            }
+            var dict = new Dictionary<string, string>();
+            switch (catalog)
+            {
+                case Yw.Hydro.ParterCatalog.Node:
+                    {
+                        dict.Add(HydroVisualCalcuProp.CalcuPress, GetName(HydroVisualCalcuProp.CalcuPress));
+                        dict.Add(HydroVisualCalcuProp.CalcuHead, GetName(HydroVisualCalcuProp.CalcuHead));
+                        dict.Add(HydroVisualCalcuProp.CalcuDemand, GetName(HydroVisualCalcuProp.CalcuDemand));
+                    }
+                    break;
+                case Yw.Hydro.ParterCatalog.Source:
+                    {
+                        dict.Add(HydroVisualCalcuProp.CalcuPress, GetName(HydroVisualCalcuProp.CalcuPress));
+                        dict.Add(HydroVisualCalcuProp.CalcuHead, GetName(HydroVisualCalcuProp.CalcuHead));
+                        dict.Add(HydroVisualCalcuProp.CalcuDemand, GetName(HydroVisualCalcuProp.CalcuDemand));
+                    }
+                    break;
+                case Yw.Hydro.ParterCatalog.Reservoir:
+                    {
+                        dict.Add(HydroVisualCalcuProp.CalcuPress, GetName(HydroVisualCalcuProp.CalcuPress));
+                        dict.Add(HydroVisualCalcuProp.CalcuHead, GetName(HydroVisualCalcuProp.CalcuHead));
+                        dict.Add(HydroVisualCalcuProp.CalcuDemand, GetName(HydroVisualCalcuProp.CalcuDemand));
+                    }
+                    break;
+                case Yw.Hydro.ParterCatalog.Tank:
+                    {
+                        dict.Add(HydroVisualCalcuProp.CalcuPress, GetName(HydroVisualCalcuProp.CalcuPress));
+                        dict.Add(HydroVisualCalcuProp.CalcuHead, GetName(HydroVisualCalcuProp.CalcuHead));
+                        dict.Add(HydroVisualCalcuProp.CalcuDemand, GetName(HydroVisualCalcuProp.CalcuDemand));
+                    }
+                    break;
+                case Yw.Hydro.ParterCatalog.Waterbox:
+                    {
+                        dict.Add(HydroVisualCalcuProp.CalcuPress, GetName(HydroVisualCalcuProp.CalcuPress));
+                        dict.Add(HydroVisualCalcuProp.CalcuHead, GetName(HydroVisualCalcuProp.CalcuHead));
+                        dict.Add(HydroVisualCalcuProp.CalcuDemand, GetName(HydroVisualCalcuProp.CalcuDemand));
+                    }
+                    break;
+                case Yw.Hydro.ParterCatalog.Junction:
+                    {
+                        dict.Add(HydroVisualCalcuProp.CalcuPress, GetName(HydroVisualCalcuProp.CalcuPress));
+                        dict.Add(HydroVisualCalcuProp.CalcuHead, GetName(HydroVisualCalcuProp.CalcuHead));
+                        dict.Add(HydroVisualCalcuProp.CalcuDemand, GetName(HydroVisualCalcuProp.CalcuDemand));
+                    }
+                    break;
+                case Yw.Hydro.ParterCatalog.Coupling:
+                    {
+                        dict.Add(HydroVisualCalcuProp.CalcuPress, GetName(HydroVisualCalcuProp.CalcuPress));
+                        dict.Add(HydroVisualCalcuProp.CalcuHead, GetName(HydroVisualCalcuProp.CalcuHead));
+                        dict.Add(HydroVisualCalcuProp.CalcuDemand, GetName(HydroVisualCalcuProp.CalcuDemand));
+                    }
+                    break;
+                case Yw.Hydro.ParterCatalog.Blunthead:
+                    {
+                        dict.Add(HydroVisualCalcuProp.CalcuPress, GetName(HydroVisualCalcuProp.CalcuPress));
+                        dict.Add(HydroVisualCalcuProp.CalcuHead, GetName(HydroVisualCalcuProp.CalcuHead));
+                        dict.Add(HydroVisualCalcuProp.CalcuDemand, GetName(HydroVisualCalcuProp.CalcuDemand));
+                    }
+                    break;
+                case Yw.Hydro.ParterCatalog.Elbow:
+                    {
+                        dict.Add(HydroVisualCalcuProp.CalcuPress, GetName(HydroVisualCalcuProp.CalcuPress));
+                        dict.Add(HydroVisualCalcuProp.CalcuHead, GetName(HydroVisualCalcuProp.CalcuHead));
+                        dict.Add(HydroVisualCalcuProp.CalcuDemand, GetName(HydroVisualCalcuProp.CalcuDemand));
+                    }
+                    break;
+                case Yw.Hydro.ParterCatalog.Threelink:
+                    {
+                        dict.Add(HydroVisualCalcuProp.CalcuPress, GetName(HydroVisualCalcuProp.CalcuPress));
+                        dict.Add(HydroVisualCalcuProp.CalcuHead, GetName(HydroVisualCalcuProp.CalcuHead));
+                        dict.Add(HydroVisualCalcuProp.CalcuDemand, GetName(HydroVisualCalcuProp.CalcuDemand));
+                    }
+                    break;
+                case Yw.Hydro.ParterCatalog.Fourlink:
+                    {
+                        dict.Add(HydroVisualCalcuProp.CalcuPress, GetName(HydroVisualCalcuProp.CalcuPress));
+                        dict.Add(HydroVisualCalcuProp.CalcuHead, GetName(HydroVisualCalcuProp.CalcuHead));
+                        dict.Add(HydroVisualCalcuProp.CalcuDemand, GetName(HydroVisualCalcuProp.CalcuDemand));
+                    }
+                    break;
+                case Yw.Hydro.ParterCatalog.Emitter:
+                    {
+                        dict.Add(HydroVisualCalcuProp.CalcuPress, GetName(HydroVisualCalcuProp.CalcuPress));
+                        dict.Add(HydroVisualCalcuProp.CalcuHead, GetName(HydroVisualCalcuProp.CalcuHead));
+                        dict.Add(HydroVisualCalcuProp.CalcuDemand, GetName(HydroVisualCalcuProp.CalcuDemand));
+                    }
+                    break;
+                case Yw.Hydro.ParterCatalog.Nozzle:
+                    {
+                        dict.Add(HydroVisualCalcuProp.CalcuPress, GetName(HydroVisualCalcuProp.CalcuPress));
+                        dict.Add(HydroVisualCalcuProp.CalcuHead, GetName(HydroVisualCalcuProp.CalcuHead));
+                        dict.Add(HydroVisualCalcuProp.CalcuDemand, GetName(HydroVisualCalcuProp.CalcuDemand));
+                    }
+                    break;
+                case Yw.Hydro.ParterCatalog.Hydrant:
+                    {
+                        dict.Add(HydroVisualCalcuProp.CalcuPress, GetName(HydroVisualCalcuProp.CalcuPress));
+                        dict.Add(HydroVisualCalcuProp.CalcuHead, GetName(HydroVisualCalcuProp.CalcuHead));
+                        dict.Add(HydroVisualCalcuProp.CalcuDemand, GetName(HydroVisualCalcuProp.CalcuDemand));
+                    }
+                    break;
+                case Yw.Hydro.ParterCatalog.Meter:
+                    {
+                        dict.Add(HydroVisualCalcuProp.CalcuPress, GetName(HydroVisualCalcuProp.CalcuPress));
+                        dict.Add(HydroVisualCalcuProp.CalcuHead, GetName(HydroVisualCalcuProp.CalcuHead));
+                        dict.Add(HydroVisualCalcuProp.CalcuDemand, GetName(HydroVisualCalcuProp.CalcuDemand));
+                    }
+                    break;
+                case Yw.Hydro.ParterCatalog.Instrument:
+                    {
+                        dict.Add(HydroVisualCalcuProp.CalcuPress, GetName(HydroVisualCalcuProp.CalcuPress));
+                        dict.Add(HydroVisualCalcuProp.CalcuHead, GetName(HydroVisualCalcuProp.CalcuHead));
+                        dict.Add(HydroVisualCalcuProp.CalcuDemand, GetName(HydroVisualCalcuProp.CalcuDemand));
+                    }
+                    break;
+                case Yw.Hydro.ParterCatalog.Flowmeter:
+                    {
+                        dict.Add(HydroVisualCalcuProp.CalcuQ, GetName(HydroVisualCalcuProp.CalcuQ));
+                    }
+                    break;
+                case Yw.Hydro.ParterCatalog.Pressmeter:
+                    {
+                        dict.Add(HydroVisualCalcuProp.CalcuPr, GetName(HydroVisualCalcuProp.CalcuPr));
+                    }
+                    break;
+                case Yw.Hydro.ParterCatalog.Link:
+                    {
+                        dict.Add(HydroVisualCalcuProp.CalcuFlow, GetName(HydroVisualCalcuProp.CalcuFlow));
+                        dict.Add(HydroVisualCalcuProp.CalcuVelocity, GetName(HydroVisualCalcuProp.CalcuVelocity));
+                        dict.Add(HydroVisualCalcuProp.CalcuHeadLoss, GetName(HydroVisualCalcuProp.CalcuHeadLoss));
+                    }
+                    break;
+                case Yw.Hydro.ParterCatalog.Pipe:
+                    {
+                        dict.Add(HydroVisualCalcuProp.CalcuFlow, GetName(HydroVisualCalcuProp.CalcuFlow));
+                        dict.Add(HydroVisualCalcuProp.CalcuVelocity, GetName(HydroVisualCalcuProp.CalcuVelocity));
+                        dict.Add(HydroVisualCalcuProp.CalcuHeadLoss, GetName(HydroVisualCalcuProp.CalcuHeadLoss));
+                    }
+                    break;
+                case Yw.Hydro.ParterCatalog.Translation:
+                    {
+                        dict.Add(HydroVisualCalcuProp.CalcuFlow, GetName(HydroVisualCalcuProp.CalcuFlow));
+                        dict.Add(HydroVisualCalcuProp.CalcuVelocity, GetName(HydroVisualCalcuProp.CalcuVelocity));
+                        dict.Add(HydroVisualCalcuProp.CalcuHeadLoss, GetName(HydroVisualCalcuProp.CalcuHeadLoss));
+                    }
+                    break;
+                case Yw.Hydro.ParterCatalog.Pump:
+                    {
+                        dict.Add(HydroVisualCalcuProp.CalcuQ, GetName(HydroVisualCalcuProp.CalcuQ));
+                        dict.Add(HydroVisualCalcuProp.CalcuH, GetName(HydroVisualCalcuProp.CalcuH));
+                        dict.Add(HydroVisualCalcuProp.CalcuP, GetName(HydroVisualCalcuProp.CalcuP));
+                        dict.Add(HydroVisualCalcuProp.CalcuE, GetName(HydroVisualCalcuProp.CalcuE));
+                    }
+                    break;
+                case Yw.Hydro.ParterCatalog.Valve:
+                    {
+                        dict.Add(HydroVisualCalcuProp.CalcuFlow, GetName(HydroVisualCalcuProp.CalcuFlow));
+                        dict.Add(HydroVisualCalcuProp.CalcuVelocity, GetName(HydroVisualCalcuProp.CalcuVelocity));
+                        dict.Add(HydroVisualCalcuProp.CalcuHeadLoss, GetName(HydroVisualCalcuProp.CalcuHeadLoss));
+                    }
+                    break;
+                case Yw.Hydro.ParterCatalog.Resistance:
+                    {
+                        dict.Add(HydroVisualCalcuProp.CalcuFlow, GetName(HydroVisualCalcuProp.CalcuFlow));
+                        dict.Add(HydroVisualCalcuProp.CalcuVelocity, GetName(HydroVisualCalcuProp.CalcuVelocity));
+                        dict.Add(HydroVisualCalcuProp.CalcuHeadLoss, GetName(HydroVisualCalcuProp.CalcuHeadLoss));
+                    }
+                    break;
+                case Yw.Hydro.ParterCatalog.Exchanger:
+                    {
+                        dict.Add(HydroVisualCalcuProp.CalcuFlow, GetName(HydroVisualCalcuProp.CalcuFlow));
+                        dict.Add(HydroVisualCalcuProp.CalcuVelocity, GetName(HydroVisualCalcuProp.CalcuVelocity));
+                        dict.Add(HydroVisualCalcuProp.CalcuHeadLoss, GetName(HydroVisualCalcuProp.CalcuHeadLoss));
+                    }
+                    break;
+                case Yw.Hydro.ParterCatalog.Compressor:
+                    {
+                        dict.Add(HydroVisualCalcuProp.CalcuFlow, GetName(HydroVisualCalcuProp.CalcuFlow));
+                        dict.Add(HydroVisualCalcuProp.CalcuVelocity, GetName(HydroVisualCalcuProp.CalcuVelocity));
+                        dict.Add(HydroVisualCalcuProp.CalcuHeadLoss, GetName(HydroVisualCalcuProp.CalcuHeadLoss));
+                    }
+                    break;
+                default: break;
+            }
+            return dict;
+        }
+
+        /// <summary>
+        /// 鑾峰彇鍗曚綅瀛楀吀
+        /// </summary>
+        public static Dictionary<string, string> GetUnitDict(string catalog)
+        {
+            if (string.IsNullOrEmpty(catalog))
+            {
+                return default;
+            }
+            var dict = new Dictionary<string, string>();
+            switch (catalog)
+            {
+                case Yw.Hydro.ParterCatalog.Node:
+                    {
+                        dict.Add(HydroVisualCalcuProp.CalcuPress, GetUnit(HydroVisualCalcuProp.CalcuPress));
+                        dict.Add(HydroVisualCalcuProp.CalcuHead, GetUnit(HydroVisualCalcuProp.CalcuHead));
+                        dict.Add(HydroVisualCalcuProp.CalcuDemand, GetUnit(HydroVisualCalcuProp.CalcuDemand));
+                    }
+                    break;
+                case Yw.Hydro.ParterCatalog.Source:
+                    {
+                        dict.Add(HydroVisualCalcuProp.CalcuPress, GetUnit(HydroVisualCalcuProp.CalcuPress));
+                        dict.Add(HydroVisualCalcuProp.CalcuHead, GetUnit(HydroVisualCalcuProp.CalcuHead));
+                        dict.Add(HydroVisualCalcuProp.CalcuDemand, GetUnit(HydroVisualCalcuProp.CalcuDemand));
+                    }
+                    break;
+                case Yw.Hydro.ParterCatalog.Reservoir:
+                    {
+                        dict.Add(HydroVisualCalcuProp.CalcuPress, GetUnit(HydroVisualCalcuProp.CalcuPress));
+                        dict.Add(HydroVisualCalcuProp.CalcuHead, GetUnit(HydroVisualCalcuProp.CalcuHead));
+                        dict.Add(HydroVisualCalcuProp.CalcuDemand, GetUnit(HydroVisualCalcuProp.CalcuDemand));
+                    }
+                    break;
+                case Yw.Hydro.ParterCatalog.Tank:
+                    {
+                        dict.Add(HydroVisualCalcuProp.CalcuPress, GetUnit(HydroVisualCalcuProp.CalcuPress));
+                        dict.Add(HydroVisualCalcuProp.CalcuHead, GetUnit(HydroVisualCalcuProp.CalcuHead));
+                        dict.Add(HydroVisualCalcuProp.CalcuDemand, GetUnit(HydroVisualCalcuProp.CalcuDemand));
+                    }
+                    break;
+                case Yw.Hydro.ParterCatalog.Waterbox:
+                    {
+                        dict.Add(HydroVisualCalcuProp.CalcuPress, GetUnit(HydroVisualCalcuProp.CalcuPress));
+                        dict.Add(HydroVisualCalcuProp.CalcuHead, GetUnit(HydroVisualCalcuProp.CalcuHead));
+                        dict.Add(HydroVisualCalcuProp.CalcuDemand, GetUnit(HydroVisualCalcuProp.CalcuDemand));
+                    }
+                    break;
+                case Yw.Hydro.ParterCatalog.Junction:
+                    {
+                        dict.Add(HydroVisualCalcuProp.CalcuPress, GetUnit(HydroVisualCalcuProp.CalcuPress));
+                        dict.Add(HydroVisualCalcuProp.CalcuHead, GetUnit(HydroVisualCalcuProp.CalcuHead));
+                        dict.Add(HydroVisualCalcuProp.CalcuDemand, GetUnit(HydroVisualCalcuProp.CalcuDemand));
+                    }
+                    break;
+                case Yw.Hydro.ParterCatalog.Coupling:
+                    {
+                        dict.Add(HydroVisualCalcuProp.CalcuPress, GetUnit(HydroVisualCalcuProp.CalcuPress));
+                        dict.Add(HydroVisualCalcuProp.CalcuHead, GetUnit(HydroVisualCalcuProp.CalcuHead));
+                        dict.Add(HydroVisualCalcuProp.CalcuDemand, GetUnit(HydroVisualCalcuProp.CalcuDemand));
+                    }
+                    break;
+                case Yw.Hydro.ParterCatalog.Blunthead:
+                    {
+                        dict.Add(HydroVisualCalcuProp.CalcuPress, GetUnit(HydroVisualCalcuProp.CalcuPress));
+                        dict.Add(HydroVisualCalcuProp.CalcuHead, GetUnit(HydroVisualCalcuProp.CalcuHead));
+                        dict.Add(HydroVisualCalcuProp.CalcuDemand, GetUnit(HydroVisualCalcuProp.CalcuDemand));
+                    }
+                    break;
+                case Yw.Hydro.ParterCatalog.Elbow:
+                    {
+                        dict.Add(HydroVisualCalcuProp.CalcuPress, GetUnit(HydroVisualCalcuProp.CalcuPress));
+                        dict.Add(HydroVisualCalcuProp.CalcuHead, GetUnit(HydroVisualCalcuProp.CalcuHead));
+                        dict.Add(HydroVisualCalcuProp.CalcuDemand, GetUnit(HydroVisualCalcuProp.CalcuDemand));
+                    }
+                    break;
+                case Yw.Hydro.ParterCatalog.Threelink:
+                    {
+                        dict.Add(HydroVisualCalcuProp.CalcuPress, GetUnit(HydroVisualCalcuProp.CalcuPress));
+                        dict.Add(HydroVisualCalcuProp.CalcuHead, GetUnit(HydroVisualCalcuProp.CalcuHead));
+                        dict.Add(HydroVisualCalcuProp.CalcuDemand, GetUnit(HydroVisualCalcuProp.CalcuDemand));
+                    }
+                    break;
+                case Yw.Hydro.ParterCatalog.Fourlink:
+                    {
+                        dict.Add(HydroVisualCalcuProp.CalcuPress, GetUnit(HydroVisualCalcuProp.CalcuPress));
+                        dict.Add(HydroVisualCalcuProp.CalcuHead, GetUnit(HydroVisualCalcuProp.CalcuHead));
+                        dict.Add(HydroVisualCalcuProp.CalcuDemand, GetUnit(HydroVisualCalcuProp.CalcuDemand));
+                    }
+                    break;
+                case Yw.Hydro.ParterCatalog.Emitter:
+                    {
+                        dict.Add(HydroVisualCalcuProp.CalcuPress, GetUnit(HydroVisualCalcuProp.CalcuPress));
+                        dict.Add(HydroVisualCalcuProp.CalcuHead, GetUnit(HydroVisualCalcuProp.CalcuHead));
+                        dict.Add(HydroVisualCalcuProp.CalcuDemand, GetUnit(HydroVisualCalcuProp.CalcuDemand));
+                    }
+                    break;
+                case Yw.Hydro.ParterCatalog.Nozzle:
+                    {
+                        dict.Add(HydroVisualCalcuProp.CalcuPress, GetUnit(HydroVisualCalcuProp.CalcuPress));
+                        dict.Add(HydroVisualCalcuProp.CalcuHead, GetUnit(HydroVisualCalcuProp.CalcuHead));
+                        dict.Add(HydroVisualCalcuProp.CalcuDemand, GetUnit(HydroVisualCalcuProp.CalcuDemand));
+                    }
+                    break;
+                case Yw.Hydro.ParterCatalog.Hydrant:
+                    {
+                        dict.Add(HydroVisualCalcuProp.CalcuPress, GetUnit(HydroVisualCalcuProp.CalcuPress));
+                        dict.Add(HydroVisualCalcuProp.CalcuHead, GetUnit(HydroVisualCalcuProp.CalcuHead));
+                        dict.Add(HydroVisualCalcuProp.CalcuDemand, GetUnit(HydroVisualCalcuProp.CalcuDemand));
+                    }
+                    break;
+                case Yw.Hydro.ParterCatalog.Meter:
+                    {
+                        dict.Add(HydroVisualCalcuProp.CalcuPress, GetUnit(HydroVisualCalcuProp.CalcuPress));
+                        dict.Add(HydroVisualCalcuProp.CalcuHead, GetUnit(HydroVisualCalcuProp.CalcuHead));
+                        dict.Add(HydroVisualCalcuProp.CalcuDemand, GetUnit(HydroVisualCalcuProp.CalcuDemand));
+                    }
+                    break;
+                case Yw.Hydro.ParterCatalog.Instrument:
+                    {
+                        dict.Add(HydroVisualCalcuProp.CalcuPress, GetUnit(HydroVisualCalcuProp.CalcuPress));
+                        dict.Add(HydroVisualCalcuProp.CalcuHead, GetUnit(HydroVisualCalcuProp.CalcuHead));
+                        dict.Add(HydroVisualCalcuProp.CalcuDemand, GetUnit(HydroVisualCalcuProp.CalcuDemand));
+                    }
+                    break;
+                case Yw.Hydro.ParterCatalog.Flowmeter:
+                    {
+                        dict.Add(HydroVisualCalcuProp.CalcuQ, GetUnit(HydroVisualCalcuProp.CalcuQ));
+                    }
+                    break;
+                case Yw.Hydro.ParterCatalog.Pressmeter:
+                    {
+                        dict.Add(HydroVisualCalcuProp.CalcuPr, GetUnit(HydroVisualCalcuProp.CalcuPr));
+                    }
+                    break;
+                case Yw.Hydro.ParterCatalog.Link:
+                    {
+                        dict.Add(HydroVisualCalcuProp.CalcuFlow, GetUnit(HydroVisualCalcuProp.CalcuFlow));
+                        dict.Add(HydroVisualCalcuProp.CalcuVelocity, GetUnit(HydroVisualCalcuProp.CalcuVelocity));
+                        dict.Add(HydroVisualCalcuProp.CalcuHeadLoss, GetUnit(HydroVisualCalcuProp.CalcuHeadLoss));
+                    }
+                    break;
+                case Yw.Hydro.ParterCatalog.Pipe:
+                    {
+                        dict.Add(HydroVisualCalcuProp.CalcuFlow, GetUnit(HydroVisualCalcuProp.CalcuFlow));
+                        dict.Add(HydroVisualCalcuProp.CalcuVelocity, GetUnit(HydroVisualCalcuProp.CalcuVelocity));
+                        dict.Add(HydroVisualCalcuProp.CalcuHeadLoss, GetUnit(HydroVisualCalcuProp.CalcuHeadLoss));
+                    }
+                    break;
+                case Yw.Hydro.ParterCatalog.Translation:
+                    {
+                        dict.Add(HydroVisualCalcuProp.CalcuFlow, GetUnit(HydroVisualCalcuProp.CalcuFlow));
+                        dict.Add(HydroVisualCalcuProp.CalcuVelocity, GetUnit(HydroVisualCalcuProp.CalcuVelocity));
+                        dict.Add(HydroVisualCalcuProp.CalcuHeadLoss, GetUnit(HydroVisualCalcuProp.CalcuHeadLoss));
+                    }
+                    break;
+                case Yw.Hydro.ParterCatalog.Pump:
+                    {
+                        dict.Add(HydroVisualCalcuProp.CalcuQ, GetUnit(HydroVisualCalcuProp.CalcuQ));
+                        dict.Add(HydroVisualCalcuProp.CalcuH, GetUnit(HydroVisualCalcuProp.CalcuH));
+                        dict.Add(HydroVisualCalcuProp.CalcuP, GetUnit(HydroVisualCalcuProp.CalcuP));
+                        dict.Add(HydroVisualCalcuProp.CalcuE, GetUnit(HydroVisualCalcuProp.CalcuE));
+                    }
+                    break;
+                case Yw.Hydro.ParterCatalog.Valve:
+                    {
+                        dict.Add(HydroVisualCalcuProp.CalcuFlow, GetUnit(HydroVisualCalcuProp.CalcuFlow));
+                        dict.Add(HydroVisualCalcuProp.CalcuVelocity, GetUnit(HydroVisualCalcuProp.CalcuVelocity));
+                        dict.Add(HydroVisualCalcuProp.CalcuHeadLoss, GetUnit(HydroVisualCalcuProp.CalcuHeadLoss));
+                    }
+                    break;
+                case Yw.Hydro.ParterCatalog.Resistance:
+                    {
+                        dict.Add(HydroVisualCalcuProp.CalcuFlow, GetUnit(HydroVisualCalcuProp.CalcuFlow));
+                        dict.Add(HydroVisualCalcuProp.CalcuVelocity, GetUnit(HydroVisualCalcuProp.CalcuVelocity));
+                        dict.Add(HydroVisualCalcuProp.CalcuHeadLoss, GetUnit(HydroVisualCalcuProp.CalcuHeadLoss));
+                    }
+                    break;
+                case Yw.Hydro.ParterCatalog.Exchanger:
+                    {
+                        dict.Add(HydroVisualCalcuProp.CalcuFlow, GetUnit(HydroVisualCalcuProp.CalcuFlow));
+                        dict.Add(HydroVisualCalcuProp.CalcuVelocity, GetUnit(HydroVisualCalcuProp.CalcuVelocity));
+                        dict.Add(HydroVisualCalcuProp.CalcuHeadLoss, GetUnit(HydroVisualCalcuProp.CalcuHeadLoss));
+                    }
+                    break;
+                case Yw.Hydro.ParterCatalog.Compressor:
+                    {
+                        dict.Add(HydroVisualCalcuProp.CalcuFlow, GetUnit(HydroVisualCalcuProp.CalcuFlow));
+                        dict.Add(HydroVisualCalcuProp.CalcuVelocity, GetUnit(HydroVisualCalcuProp.CalcuVelocity));
+                        dict.Add(HydroVisualCalcuProp.CalcuHeadLoss, GetUnit(HydroVisualCalcuProp.CalcuHeadLoss));
+                    }
+                    break;
+                default: break;
+            }
+            return dict;
+        }
+
+        /// <summary>
+        /// 鑾峰彇鍚嶇О
+        /// </summary>
+        public static string GetName(string code)
+        {
+            if (_nameDict.ContainsKey(code))
+            {
+                return _nameDict[code];
+            }
+            return default;
+        }
+
+        /// <summary>
+        /// 鑾峰彇鍗曚綅
+        /// </summary>
+        public static string GetUnit(string code)
+        {
+            if (_unitDict.ContainsKey(code))
+            {
+                return _unitDict[code];
+            }
+            return default;
+        }
+
+
+    }
+}
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/01-result/HydroCalcuResult.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/01-result/HydroCalcuResult.cs
index e69c59b..a9a6992 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/01-result/HydroCalcuResult.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/01-result/HydroCalcuResult.cs
@@ -1,36 +1,53 @@
 锘縩amespace Yw.WinFrmUI
 {
     /// <summary>
-    /// 姘村姏璁$畻缁撴灉
+    /// 璁$畻缁撴灉
     /// </summary>
-    public class HydroCalcuResult : IHydroCalcuResult
+    public class HydroCalcuResult
     {
         /// <summary>
         /// 
         /// </summary>
-        public HydroCalcuResult() { }
-
-        /// <summary>
-        /// 
-        /// </summary>
-        public HydroCalcuResult(IHydroCalcuResult rhs)
+        public HydroCalcuResult()
         {
-            this.Code = rhs.Code;
+            this.Succeed = true;
+            this.FailedList = new List<HydroCalcuFailed>();
+            this.NodeList = new List<HydroCalcuNodeResult>();
+            this.LinkList = new List<HydroCalcuLinkResult>();
         }
 
         /// <summary>
-        /// 
+        /// 鏄惁鎴愬姛
         /// </summary>
-        public HydroCalcuResult(HydroCalcuResult rhs)
+        public bool Succeed { get; set; }
+
+        /// <summary>
+        /// 澶辫触鍒楄〃
+        /// </summary>
+        public List<HydroCalcuFailed> FailedList { get; set; }
+
+        /// <summary>
+        /// 鑺傜偣鍒楄〃
+        /// </summary>
+        public List<HydroCalcuNodeResult> NodeList { get; set; }
+
+        /// <summary>
+        /// 绠℃鍒楄〃
+        /// </summary>
+        public List<HydroCalcuLinkResult> LinkList { get; set; }
+
+        /// <summary>
+        /// 鑾峰彇鍙鍒楄〃
+        /// </summary>
+        public List<HydroCalcuVisualResult> GetVisualList()
         {
-            this.Code = rhs.Code;
+            var list = new List<HydroCalcuVisualResult>();
+            this.NodeList?.ForEach(x => list.Add(x));
+            this.LinkList?.ForEach(x => list.Add(x));
+            return list;
         }
 
 
-        /// <summary>
-        /// 缂栫爜
-        /// </summary>
-        public string Code { get; set; }
 
     }
 }
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/02-visual/HydroCalcuVisualResult.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/02-visual/HydroCalcuVisualResult.cs
new file mode 100644
index 0000000..63e6327
--- /dev/null
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/02-visual/HydroCalcuVisualResult.cs
@@ -0,0 +1,36 @@
+锘縩amespace Yw.WinFrmUI
+{
+    /// <summary>
+    /// 姘村姏鍙缁勪欢璁$畻缁撴灉
+    /// </summary>
+    public class HydroCalcuVisualResult : IHydroCalcuVisualResult
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        public HydroCalcuVisualResult() { }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public HydroCalcuVisualResult(IHydroCalcuVisualResult rhs)
+        {
+            this.Code = rhs.Code;
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public HydroCalcuVisualResult(HydroCalcuVisualResult rhs)
+        {
+            this.Code = rhs.Code;
+        }
+
+
+        /// <summary>
+        /// 缂栫爜
+        /// </summary>
+        public string Code { get; set; }
+
+    }
+}
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/01-result/IHydroCalcuResult.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/02-visual/IHydroCalcuVisualResult.cs
similarity index 66%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/01-result/IHydroCalcuResult.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/02-visual/IHydroCalcuVisualResult.cs
index 32f00d8..cd625e8 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/01-result/IHydroCalcuResult.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/02-visual/IHydroCalcuVisualResult.cs
@@ -1,9 +1,9 @@
 锘縩amespace Yw.WinFrmUI
 {
     /// <summary>
-    /// 姘村姏璁$畻缁撴灉鎺ュ彛
+    /// 姘村姏鍙缁勪欢璁$畻缁撴灉鎺ュ彛
     /// </summary>
-    public interface IHydroCalcuResult
+    public interface IHydroCalcuVisualResult
     {
 
         /// <summary>
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/02-node/00-core/HydroCalcuNodeResult.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/03-node/00-core/HydroCalcuNodeResult.cs
similarity index 83%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/02-node/00-core/HydroCalcuNodeResult.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/03-node/00-core/HydroCalcuNodeResult.cs
index 3b46d8e..ce37bcd 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/02-node/00-core/HydroCalcuNodeResult.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/03-node/00-core/HydroCalcuNodeResult.cs
@@ -3,7 +3,7 @@
     /// <summary>
     /// 姘村姏璁$畻缁撴灉灞炴��
     /// </summary>
-    public class HydroCalcuNodeResult : HydroCalcuResult, IHydroCalcuNodeResult
+    public class HydroCalcuNodeResult : HydroCalcuVisualResult, IHydroCalcuNodeResult
     {
         /// <summary>
         /// 
@@ -13,12 +13,12 @@
         /// <summary>
         /// 
         /// </summary>
-        public HydroCalcuNodeResult(IHydroCalcuResult rhs) : base(rhs) { }
+        public HydroCalcuNodeResult(IHydroCalcuVisualResult rhs) : base(rhs) { }
 
         /// <summary>
         /// 
         /// </summary>
-        public HydroCalcuNodeResult(HydroCalcuResult rhs) : base(rhs) { }
+        public HydroCalcuNodeResult(HydroCalcuVisualResult rhs) : base(rhs) { }
 
         /// <summary>
         /// 
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/02-node/00-core/IHydroCalcuNodeResult.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/03-node/00-core/IHydroCalcuNodeResult.cs
similarity index 87%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/02-node/00-core/IHydroCalcuNodeResult.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/03-node/00-core/IHydroCalcuNodeResult.cs
index 6ee6ff9..06b7cfd 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/02-node/00-core/IHydroCalcuNodeResult.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/03-node/00-core/IHydroCalcuNodeResult.cs
@@ -3,7 +3,7 @@
     /// <summary>
     /// 姘村姏璁$畻鑺傜偣缁撴灉鎺ュ彛
     /// </summary>
-    public interface IHydroCalcuNodeResult : IHydroCalcuResult
+    public interface IHydroCalcuNodeResult : IHydroCalcuVisualResult
     {
         /// <summary>
         /// 鍘嬪姏(鍘婚櫎楂樼▼ m)
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/02-node/01-flowmeter/HydroCalcuFlowmeterResult.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/03-node/01-flowmeter/HydroCalcuFlowmeterResult.cs
similarity index 87%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/02-node/01-flowmeter/HydroCalcuFlowmeterResult.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/03-node/01-flowmeter/HydroCalcuFlowmeterResult.cs
index 95a20b8..fff404a 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/02-node/01-flowmeter/HydroCalcuFlowmeterResult.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/03-node/01-flowmeter/HydroCalcuFlowmeterResult.cs
@@ -13,12 +13,12 @@
         /// <summary>
         /// 
         /// </summary>
-        public HydroCalcuFlowmeterResult(IHydroCalcuResult rhs) : base(rhs) { }
+        public HydroCalcuFlowmeterResult(IHydroCalcuVisualResult rhs) : base(rhs) { }
 
         /// <summary>
         /// 
         /// </summary>
-        public HydroCalcuFlowmeterResult(HydroCalcuResult rhs) : base(rhs) { }
+        public HydroCalcuFlowmeterResult(HydroCalcuVisualResult rhs) : base(rhs) { }
 
         /// <summary>
         /// 
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/02-node/01-flowmeter/IHydroCalcuFlowmeterResult.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/03-node/01-flowmeter/IHydroCalcuFlowmeterResult.cs
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/02-node/01-flowmeter/IHydroCalcuFlowmeterResult.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/03-node/01-flowmeter/IHydroCalcuFlowmeterResult.cs
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/02-node/02-pressmeter/HydroCalcuPressmeterResult.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/03-node/02-pressmeter/HydroCalcuPressmeterResult.cs
similarity index 87%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/02-node/02-pressmeter/HydroCalcuPressmeterResult.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/03-node/02-pressmeter/HydroCalcuPressmeterResult.cs
index f163e59..f4aa2d0 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/02-node/02-pressmeter/HydroCalcuPressmeterResult.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/03-node/02-pressmeter/HydroCalcuPressmeterResult.cs
@@ -13,12 +13,12 @@
         /// <summary>
         /// 
         /// </summary>
-        public HydroCalcuPressmeterResult(IHydroCalcuResult rhs) : base(rhs) { }
+        public HydroCalcuPressmeterResult(IHydroCalcuVisualResult rhs) : base(rhs) { }
 
         /// <summary>
         /// 
         /// </summary>
-        public HydroCalcuPressmeterResult(HydroCalcuResult rhs) : base(rhs) { }
+        public HydroCalcuPressmeterResult(HydroCalcuVisualResult rhs) : base(rhs) { }
 
         /// <summary>
         /// 
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/02-node/02-pressmeter/IHydroCalcuPressmeterResult.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/03-node/02-pressmeter/IHydroCalcuPressmeterResult.cs
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/02-node/02-pressmeter/IHydroCalcuPressmeterResult.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/03-node/02-pressmeter/IHydroCalcuPressmeterResult.cs
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/03-link/00-core/HydroCalcuLinkResult.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/04-link/00-core/HydroCalcuLinkResult.cs
similarity index 83%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/03-link/00-core/HydroCalcuLinkResult.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/04-link/00-core/HydroCalcuLinkResult.cs
index c8e20a5..a6e0f56 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/03-link/00-core/HydroCalcuLinkResult.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/04-link/00-core/HydroCalcuLinkResult.cs
@@ -3,7 +3,7 @@
     /// <summary>
     /// 姘村姏璁$畻绠℃灞炴��
     /// </summary>
-    public class HydroCalcuLinkResult : HydroCalcuResult, IHydroCalcuLinkResult
+    public class HydroCalcuLinkResult : HydroCalcuVisualResult, IHydroCalcuLinkResult
     {
         /// <summary>
         /// 
@@ -13,12 +13,12 @@
         /// <summary>
         /// 
         /// </summary>
-        public HydroCalcuLinkResult(IHydroCalcuResult rhs) : base(rhs) { }
+        public HydroCalcuLinkResult(IHydroCalcuVisualResult rhs) : base(rhs) { }
 
         /// <summary>
         /// 
         /// </summary>
-        public HydroCalcuLinkResult(HydroCalcuResult rhs) : base(rhs) { }
+        public HydroCalcuLinkResult(HydroCalcuVisualResult rhs) : base(rhs) { }
 
         /// <summary>
         /// 
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/03-link/00-core/IHydroCalcuLinkResult.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/04-link/00-core/IHydroCalcuLinkResult.cs
similarity index 87%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/03-link/00-core/IHydroCalcuLinkResult.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/04-link/00-core/IHydroCalcuLinkResult.cs
index 9aa41ea..957637d 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/03-link/00-core/IHydroCalcuLinkResult.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/04-link/00-core/IHydroCalcuLinkResult.cs
@@ -3,7 +3,7 @@
     /// <summary>
     /// 姘村姏璁$畻绠℃缁撴灉鎺ュ彛
     /// </summary>
-    public interface IHydroCalcuLinkResult : IHydroCalcuResult
+    public interface IHydroCalcuLinkResult : IHydroCalcuVisualResult
     {
         /// <summary>
         /// 娴侀噺 锛坢鲁/h锛�
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/03-link/01-pump/HydroCalcuPumpResult.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/04-link/01-pump/HydroCalcuPumpResult.cs
similarity index 91%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/03-link/01-pump/HydroCalcuPumpResult.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/04-link/01-pump/HydroCalcuPumpResult.cs
index bc487c1..ab84abf 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/03-link/01-pump/HydroCalcuPumpResult.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/04-link/01-pump/HydroCalcuPumpResult.cs
@@ -13,12 +13,12 @@
         /// <summary>
         /// 
         /// </summary>
-        public HydroCalcuPumpResult(IHydroCalcuResult rhs) : base(rhs) { }
+        public HydroCalcuPumpResult(IHydroCalcuVisualResult rhs) : base(rhs) { }
 
         /// <summary>
         /// 
         /// </summary>
-        public HydroCalcuPumpResult(HydroCalcuResult rhs) : base(rhs) { }
+        public HydroCalcuPumpResult(HydroCalcuVisualResult rhs) : base(rhs) { }
 
         /// <summary>
         /// 
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/03-link/01-pump/IHydroCalcuPumpResult.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/04-link/01-pump/IHydroCalcuPumpResult.cs
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/03-link/01-pump/IHydroCalcuPumpResult.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/04-link/01-pump/IHydroCalcuPumpResult.cs
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/99-failed/HydroCalcuFailed.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/99-failed/HydroCalcuFailed.cs
new file mode 100644
index 0000000..d9f8149
--- /dev/null
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/99-failed/HydroCalcuFailed.cs
@@ -0,0 +1,41 @@
+锘縩amespace Yw.WinFrmUI
+{
+    /// <summary>
+    /// 璁$畻澶辫触
+    /// </summary>
+    public class HydroCalcuFailed
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        public HydroCalcuFailed() { }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public HydroCalcuFailed(Yw.EPAnet.CalcuFailed rhs)
+        {
+            this.Code = rhs.Code;
+            this.Message = rhs.Message;
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public HydroCalcuFailed(int code, string message)
+        {
+            this.Code = code;
+            this.Message = message;
+        }
+
+        /// <summary>
+        /// 閿欒缂栫爜
+        /// </summary>
+        public int Code { get; set; }
+
+        /// <summary>
+        /// 閿欒淇℃伅
+        /// </summary>
+        public string Message { get; set; }
+    }
+}
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/01-parter/HydroParterViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/01-parter/HydroParterViewModel.cs
index 85a4d57..b96133e 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/01-parter/HydroParterViewModel.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/01-parter/HydroParterViewModel.cs
@@ -219,7 +219,7 @@
         /// <summary>
         /// 鏇存柊璁$畻灞炴��
         /// </summary>
-        public virtual void UpdateCalcuProperty(HydroCalcuResult rhs)
+        public virtual void UpdateCalcuProperty(HydroCalcuVisualResult rhs)
         {
 
         }
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/03-node/00-core/HydroNodeViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/03-node/00-core/HydroNodeViewModel.cs
index 1e37ee0..8c8c641 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/03-node/00-core/HydroNodeViewModel.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/03-node/00-core/HydroNodeViewModel.cs
@@ -78,7 +78,7 @@
         /// <summary>
         /// 鏇存柊璁$畻灞炴��
         /// </summary>
-        public override void UpdateCalcuProperty(HydroCalcuResult rhs)
+        public override void UpdateCalcuProperty(HydroCalcuVisualResult rhs)
         {
             base.UpdateCalcuProperty(rhs);
             if (rhs is HydroCalcuNodeResult calcuNodeProperty)
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/03-node/03-junction/04-instrument/01-flowmeter/HydroFlowmeterViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/03-node/03-junction/04-instrument/01-flowmeter/HydroFlowmeterViewModel.cs
index 93cc3e2..4b20731 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/03-node/03-junction/04-instrument/01-flowmeter/HydroFlowmeterViewModel.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/03-node/03-junction/04-instrument/01-flowmeter/HydroFlowmeterViewModel.cs
@@ -43,7 +43,7 @@
         /// <summary>
         /// 鏇存柊璁$畻灞炴��
         /// </summary>
-        public override void UpdateCalcuProperty(HydroCalcuResult rhs)
+        public override void UpdateCalcuProperty(HydroCalcuVisualResult rhs)
         {
             base.UpdateCalcuProperty(rhs);
             if (rhs is HydroCalcuFlowmeterResult calcuFlowmeterProperty)
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/03-node/03-junction/04-instrument/02-pressmeter/HydroPressmeterViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/03-node/03-junction/04-instrument/02-pressmeter/HydroPressmeterViewModel.cs
index 42bde9e..4717591 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/03-node/03-junction/04-instrument/02-pressmeter/HydroPressmeterViewModel.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/03-node/03-junction/04-instrument/02-pressmeter/HydroPressmeterViewModel.cs
@@ -42,7 +42,7 @@
         /// <summary>
         /// 鏇存柊璁$畻灞炴��
         /// </summary>
-        public override void UpdateCalcuProperty(HydroCalcuResult rhs)
+        public override void UpdateCalcuProperty(HydroCalcuVisualResult rhs)
         {
             base.UpdateCalcuProperty(rhs);
             if (rhs is HydroCalcuPressmeterResult calcuPressmeterProperty)
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/04-link/00-core/HydroLinkViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/04-link/00-core/HydroLinkViewModel.cs
index 0ebb435..923c6d7 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/04-link/00-core/HydroLinkViewModel.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/04-link/00-core/HydroLinkViewModel.cs
@@ -142,7 +142,7 @@
         /// 鏇存柊璁$畻灞炴��
         /// </summary>
         /// <param name="rhs"></param>
-        public override void UpdateCalcuProperty(HydroCalcuResult rhs)
+        public override void UpdateCalcuProperty(HydroCalcuVisualResult rhs)
         {
             base.UpdateCalcuProperty(rhs);
             if (rhs is HydroCalcuLinkResult calcuLinkProperty)
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/04-link/02-pump/HydroPumpViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/04-link/02-pump/HydroPumpViewModel.cs
index f4dd64b..ff04437 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/04-link/02-pump/HydroPumpViewModel.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/04-link/02-pump/HydroPumpViewModel.cs
@@ -343,7 +343,7 @@
         /// <summary>
         /// 鏇存柊璁$畻灞炴��
         /// </summary>
-        public override void UpdateCalcuProperty(HydroCalcuResult rhs)
+        public override void UpdateCalcuProperty(HydroCalcuVisualResult rhs)
         {
             base.UpdateCalcuProperty(rhs);
             if (rhs is HydroCalcuPumpResult calcuPumpProperty)
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/00-core/HydroVisualListCtrl.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/00-core/HydroVisualListCtrl.cs
index a68f853..5d7cfb7 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/00-core/HydroVisualListCtrl.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/00-core/HydroVisualListCtrl.cs
@@ -73,7 +73,7 @@
         /// <summary>
         /// 缁戝畾鏁版嵁
         /// </summary>
-        public void SetBindingData(Yw.Model.HydroModelInfo hydroInfo, List<HydroCalcuResult> allCalcuResultList)
+        public void SetBindingData(Yw.Model.HydroModelInfo hydroInfo, List<HydroCalcuVisualResult> allCalcuResultList)
         {
             if (hydroInfo == null)
             {
@@ -199,7 +199,7 @@
         /// <summary>
         /// 鏇存柊璁$畻灞炴��
         /// </summary>
-        public void UpdateCalcuProperty(List<HydroCalcuResult> allCalcuResultList)
+        public void UpdateCalcuProperty(List<HydroCalcuVisualResult> allCalcuResultList)
         {
             if (allCalcuResultList == null || allCalcuResultList.Count < 1)
             {
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/00-core/IHydroVisualList.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/00-core/IHydroVisualList.cs
index 8870257..f4f7e93 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/00-core/IHydroVisualList.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/00-core/IHydroVisualList.cs
@@ -33,7 +33,7 @@
         /// <summary>
         /// 缁戝畾鏁版嵁
         /// </summary>
-        void SetBindingData(Yw.Model.HydroModelInfo hydroInfo, List<HydroCalcuResult> allCalcuResultList);
+        void SetBindingData(Yw.Model.HydroModelInfo hydroInfo, List<HydroCalcuVisualResult> allCalcuResultList);
 
         /// <summary>
         /// 缁戝畾鏁版嵁
@@ -63,7 +63,7 @@
         /// <summary>
         /// 鏇存柊璁$畻灞炴��
         /// </summary>
-        void UpdateCalcuProperty(List<HydroCalcuResult> allCalcuResultList);
+        void UpdateCalcuProperty(List<HydroCalcuVisualResult> allCalcuResultList);
 
         /// <summary>
         /// 鏄惁鏈夋按鍔涘垪琛�
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/01-reservoir/HydroReservoirListCtrl.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/01-reservoir/HydroReservoirListCtrl.cs
index 933d7dc..256be36 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/01-reservoir/HydroReservoirListCtrl.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/01-reservoir/HydroReservoirListCtrl.cs
@@ -74,7 +74,7 @@
         /// <summary>
         /// 缁戝畾鏁版嵁
         /// </summary>
-        public void SetBindingData(Yw.Model.HydroModelInfo hydroInfo, List<HydroCalcuResult> allCalcuResultList)
+        public void SetBindingData(Yw.Model.HydroModelInfo hydroInfo, List<HydroCalcuVisualResult> allCalcuResultList)
         {
             _allList = new List<HydroReservoirViewModel>();
             if (hydroInfo != null && hydroInfo.Reservoirs != null && hydroInfo.Reservoirs.Count > 0)
@@ -179,7 +179,7 @@
         /// <summary>
         /// 鏇存柊璁$畻灞炴��
         /// </summary>
-        public void UpdateCalcuProperty(List<HydroCalcuResult> allCalcuResultList)
+        public void UpdateCalcuProperty(List<HydroCalcuVisualResult> allCalcuResultList)
         {
             if (allCalcuResultList != null && allCalcuResultList.Count > 0)
             {
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/02-tank/HydroTankListCtrl.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/02-tank/HydroTankListCtrl.cs
index c3e82c9..614cef3 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/02-tank/HydroTankListCtrl.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/02-tank/HydroTankListCtrl.cs
@@ -74,7 +74,7 @@
         /// <summary>
         /// 缁戝畾鏁版嵁
         /// </summary>
-        public void SetBindingData(Yw.Model.HydroModelInfo hydroInfo, List<HydroCalcuResult> allCalcuResultList)
+        public void SetBindingData(Yw.Model.HydroModelInfo hydroInfo, List<HydroCalcuVisualResult> allCalcuResultList)
         {
             _allList = new List<HydroTankViewModel>();
             if (hydroInfo != null && hydroInfo.Tanks != null && hydroInfo.Tanks.Count > 0)
@@ -179,7 +179,7 @@
         /// <summary>
         /// 鏇存柊璁$畻灞炴��
         /// </summary>
-        public void UpdateCalcuProperty(List<HydroCalcuResult> allCalcuResultList)
+        public void UpdateCalcuProperty(List<HydroCalcuVisualResult> allCalcuResultList)
         {
             if (allCalcuResultList != null && allCalcuResultList.Count > 0)
             {
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/03-waterbox/HydroWaterboxListCtrl.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/03-waterbox/HydroWaterboxListCtrl.cs
index 9b12fe5..0a25d7d 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/03-waterbox/HydroWaterboxListCtrl.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/03-waterbox/HydroWaterboxListCtrl.cs
@@ -74,7 +74,7 @@
         /// <summary>
         /// 缁戝畾鏁版嵁
         /// </summary>
-        public void SetBindingData(Yw.Model.HydroModelInfo hydroInfo, List<HydroCalcuResult> allCalcuResultList)
+        public void SetBindingData(Yw.Model.HydroModelInfo hydroInfo, List<HydroCalcuVisualResult> allCalcuResultList)
         {
             _allList = new List<HydroWaterboxViewModel>();
             if (hydroInfo != null && hydroInfo.Waterboxs != null && hydroInfo.Waterboxs.Count > 0)
@@ -179,7 +179,7 @@
         /// <summary>
         /// 鏇存柊璁$畻灞炴��
         /// </summary>
-        public void UpdateCalcuProperty(List<HydroCalcuResult> allCalcuResultList)
+        public void UpdateCalcuProperty(List<HydroCalcuVisualResult> allCalcuResultList)
         {
             if (allCalcuResultList != null && allCalcuResultList.Count > 0)
             {
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/04-junction/HydroJunctionListCtrl.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/04-junction/HydroJunctionListCtrl.cs
index a5340a2..2282902 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/04-junction/HydroJunctionListCtrl.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/04-junction/HydroJunctionListCtrl.cs
@@ -74,7 +74,7 @@
         /// <summary>
         /// 缁戝畾鏁版嵁
         /// </summary>
-        public void SetBindingData(Yw.Model.HydroModelInfo hydroInfo, List<HydroCalcuResult> allCalcuResultList)
+        public void SetBindingData(Yw.Model.HydroModelInfo hydroInfo, List<HydroCalcuVisualResult> allCalcuResultList)
         {
             _allList = new List<HydroJunctionViewModel>();
             if (hydroInfo != null && hydroInfo.Junctions != null && hydroInfo.Junctions.Count > 0)
@@ -179,7 +179,7 @@
         /// <summary>
         /// 鏇存柊璁$畻灞炴��
         /// </summary>
-        public void UpdateCalcuProperty(List<HydroCalcuResult> allCalcuResultList)
+        public void UpdateCalcuProperty(List<HydroCalcuVisualResult> allCalcuResultList)
         {
             if (allCalcuResultList != null && allCalcuResultList.Count > 0)
             {
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/05-blunthead/HydroBluntheadListCtrl.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/05-blunthead/HydroBluntheadListCtrl.cs
index 8a2d71b..e948ce3 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/05-blunthead/HydroBluntheadListCtrl.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/05-blunthead/HydroBluntheadListCtrl.cs
@@ -74,7 +74,7 @@
         /// <summary>
         /// 缁戝畾鏁版嵁
         /// </summary>
-        public void SetBindingData(Yw.Model.HydroModelInfo hydroInfo, List<HydroCalcuResult> allCalcuResultList)
+        public void SetBindingData(Yw.Model.HydroModelInfo hydroInfo, List<HydroCalcuVisualResult> allCalcuResultList)
         {
             _allList = new List<HydroBluntheadViewModel>();
             if (hydroInfo != null && hydroInfo.Bluntheads != null && hydroInfo.Bluntheads.Count > 0)
@@ -179,7 +179,7 @@
         /// <summary>
         /// 鏇存柊璁$畻灞炴��
         /// </summary>
-        public void UpdateCalcuProperty(List<HydroCalcuResult> allCalcuResultList)
+        public void UpdateCalcuProperty(List<HydroCalcuVisualResult> allCalcuResultList)
         {
             if (allCalcuResultList != null && allCalcuResultList.Count > 0)
             {
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/06-elbow/HydroElbowListCtrl.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/06-elbow/HydroElbowListCtrl.cs
index 8fa9d59..402d855 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/06-elbow/HydroElbowListCtrl.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/06-elbow/HydroElbowListCtrl.cs
@@ -74,7 +74,7 @@
         /// <summary>
         /// 缁戝畾鏁版嵁
         /// </summary>
-        public void SetBindingData(Yw.Model.HydroModelInfo hydroInfo, List<HydroCalcuResult> allCalcuResultList)
+        public void SetBindingData(Yw.Model.HydroModelInfo hydroInfo, List<HydroCalcuVisualResult> allCalcuResultList)
         {
             _allList = new List<HydroElbowViewModel>();
             if (hydroInfo != null && hydroInfo.Elbows != null && hydroInfo.Elbows.Count > 0)
@@ -179,7 +179,7 @@
         /// <summary>
         /// 鏇存柊璁$畻灞炴��
         /// </summary>
-        public void UpdateCalcuProperty(List<HydroCalcuResult> allCalcuResultList)
+        public void UpdateCalcuProperty(List<HydroCalcuVisualResult> allCalcuResultList)
         {
             if (allCalcuResultList != null && allCalcuResultList.Count > 0)
             {
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/07-threelink/HydroThreelinkListCtrl.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/07-threelink/HydroThreelinkListCtrl.cs
index c84bbde..1cb2d61 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/07-threelink/HydroThreelinkListCtrl.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/07-threelink/HydroThreelinkListCtrl.cs
@@ -74,7 +74,7 @@
         /// <summary>
         /// 缁戝畾鏁版嵁
         /// </summary>
-        public void SetBindingData(Yw.Model.HydroModelInfo hydroInfo, List<HydroCalcuResult> allCalcuResultList)
+        public void SetBindingData(Yw.Model.HydroModelInfo hydroInfo, List<HydroCalcuVisualResult> allCalcuResultList)
         {
             _allList = new List<HydroThreelinkViewModel>();
             if (hydroInfo != null && hydroInfo.Threelinks != null && hydroInfo.Threelinks.Count > 0)
@@ -179,7 +179,7 @@
         /// <summary>
         /// 鏇存柊璁$畻灞炴��
         /// </summary>
-        public void UpdateCalcuProperty(List<HydroCalcuResult> allCalcuResultList)
+        public void UpdateCalcuProperty(List<HydroCalcuVisualResult> allCalcuResultList)
         {
             if (allCalcuResultList != null && allCalcuResultList.Count > 0)
             {
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/08-fourlink/HydroFourlinkListCtrl.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/08-fourlink/HydroFourlinkListCtrl.cs
index a219ba6..dd1c814 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/08-fourlink/HydroFourlinkListCtrl.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/08-fourlink/HydroFourlinkListCtrl.cs
@@ -76,7 +76,7 @@
         /// <summary>
         /// 缁戝畾鏁版嵁
         /// </summary>
-        public void SetBindingData(Yw.Model.HydroModelInfo hydroInfo, List<HydroCalcuResult> allCalcuResultList)
+        public void SetBindingData(Yw.Model.HydroModelInfo hydroInfo, List<HydroCalcuVisualResult> allCalcuResultList)
         {
             _allList = new List<HydroFourlinkViewModel>();
             if (hydroInfo != null && hydroInfo.Fourlinks != null && hydroInfo.Fourlinks.Count > 0)
@@ -181,7 +181,7 @@
         /// <summary>
         /// 鏇存柊璁$畻灞炴��
         /// </summary>
-        public void UpdateCalcuProperty(List<HydroCalcuResult> allCalcuResultList)
+        public void UpdateCalcuProperty(List<HydroCalcuVisualResult> allCalcuResultList)
         {
             if (allCalcuResultList != null && allCalcuResultList.Count > 0)
             {
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/09-hydrant/HydroHydrantListCtrl.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/09-hydrant/HydroHydrantListCtrl.cs
index 0991f6c..9d5b02e 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/09-hydrant/HydroHydrantListCtrl.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/09-hydrant/HydroHydrantListCtrl.cs
@@ -76,7 +76,7 @@
         /// <summary>
         /// 缁戝畾鏁版嵁
         /// </summary>
-        public void SetBindingData(Yw.Model.HydroModelInfo hydroInfo, List<HydroCalcuResult> allCalcuResultList)
+        public void SetBindingData(Yw.Model.HydroModelInfo hydroInfo, List<HydroCalcuVisualResult> allCalcuResultList)
         {
             _allList = new List<HydroHydrantViewModel>();
             if (hydroInfo != null && hydroInfo.Hydrants != null && hydroInfo.Hydrants.Count > 0)
@@ -181,7 +181,7 @@
         /// <summary>
         /// 鏇存柊璁$畻灞炴��
         /// </summary>
-        public void UpdateCalcuProperty(List<HydroCalcuResult> allCalcuResultList)
+        public void UpdateCalcuProperty(List<HydroCalcuVisualResult> allCalcuResultList)
         {
             if (allCalcuResultList != null && allCalcuResultList.Count > 0)
             {
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/10-nozzle/HydroNozzleListCtrl.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/10-nozzle/HydroNozzleListCtrl.cs
index 6ce9b50..0593e0c 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/10-nozzle/HydroNozzleListCtrl.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/10-nozzle/HydroNozzleListCtrl.cs
@@ -75,7 +75,7 @@
         /// <summary>
         /// 缁戝畾鏁版嵁
         /// </summary>
-        public void SetBindingData(Yw.Model.HydroModelInfo hydroInfo, List<HydroCalcuResult> allCalcuResultList)
+        public void SetBindingData(Yw.Model.HydroModelInfo hydroInfo, List<HydroCalcuVisualResult> allCalcuResultList)
         {
             _allList = new List<HydroNozzleViewModel>();
             if (hydroInfo != null && hydroInfo.Nozzles != null && hydroInfo.Nozzles.Count > 0)
@@ -180,7 +180,7 @@
         /// <summary>
         /// 鏇存柊璁$畻灞炴��
         /// </summary>
-        public void UpdateCalcuProperty(List<HydroCalcuResult> allCalcuResultList)
+        public void UpdateCalcuProperty(List<HydroCalcuVisualResult> allCalcuResultList)
         {
             if (allCalcuResultList != null && allCalcuResultList.Count > 0)
             {
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/11-meter/HydroMeterListCtrl.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/11-meter/HydroMeterListCtrl.cs
index b22e3b2..78835ed 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/11-meter/HydroMeterListCtrl.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/11-meter/HydroMeterListCtrl.cs
@@ -74,7 +74,7 @@
         /// <summary>
         /// 缁戝畾鏁版嵁
         /// </summary>
-        public void SetBindingData(Yw.Model.HydroModelInfo hydroInfo, List<HydroCalcuResult> allCalcuResultList)
+        public void SetBindingData(Yw.Model.HydroModelInfo hydroInfo, List<HydroCalcuVisualResult> allCalcuResultList)
         {
             _allList = new List<HydroMeterViewModel>();
             if (hydroInfo != null && hydroInfo.Meters != null && hydroInfo.Meters.Count > 0)
@@ -179,7 +179,7 @@
         /// <summary>
         /// 鏇存柊璁$畻灞炴��
         /// </summary>
-        public void UpdateCalcuProperty(List<HydroCalcuResult> allCalcuResultList)
+        public void UpdateCalcuProperty(List<HydroCalcuVisualResult> allCalcuResultList)
         {
             if (allCalcuResultList != null && allCalcuResultList.Count > 0)
             {
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/12-flowmeter/HydroFlowmeterListCtrl.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/12-flowmeter/HydroFlowmeterListCtrl.cs
index ac82066..2a5afb4 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/12-flowmeter/HydroFlowmeterListCtrl.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/12-flowmeter/HydroFlowmeterListCtrl.cs
@@ -75,7 +75,7 @@
         /// <summary>
         /// 缁戝畾鏁版嵁
         /// </summary>
-        public void SetBindingData(Yw.Model.HydroModelInfo hydroInfo, List<HydroCalcuResult> allCalcuResultList)
+        public void SetBindingData(Yw.Model.HydroModelInfo hydroInfo, List<HydroCalcuVisualResult> allCalcuResultList)
         {
             _allList = new List<HydroFlowmeterViewModel>();
             if (hydroInfo != null && hydroInfo.Flowmeters != null && hydroInfo.Flowmeters.Count > 0)
@@ -180,7 +180,7 @@
         /// <summary>
         /// 鏇存柊璁$畻灞炴��
         /// </summary>
-        public void UpdateCalcuProperty(List<HydroCalcuResult> allCalcuResultList)
+        public void UpdateCalcuProperty(List<HydroCalcuVisualResult> allCalcuResultList)
         {
             if (allCalcuResultList != null && allCalcuResultList.Count > 0)
             {
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/13-pressmeter/HydroPressmeterListCtrl.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/13-pressmeter/HydroPressmeterListCtrl.cs
index 41903c0..bb3f23b 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/13-pressmeter/HydroPressmeterListCtrl.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/13-pressmeter/HydroPressmeterListCtrl.cs
@@ -75,7 +75,7 @@
         /// <summary>
         /// 缁戝畾鏁版嵁
         /// </summary>
-        public void SetBindingData(Yw.Model.HydroModelInfo hydroInfo, List<HydroCalcuResult> allCalcuResultList)
+        public void SetBindingData(Yw.Model.HydroModelInfo hydroInfo, List<HydroCalcuVisualResult> allCalcuResultList)
         {
             _allList = new List<HydroPressmeterViewModel>();
             if (hydroInfo != null && hydroInfo.Pressmeters != null && hydroInfo.Pressmeters.Count > 0)
@@ -180,7 +180,7 @@
         /// <summary>
         /// 鏇存柊璁$畻灞炴��
         /// </summary>
-        public void UpdateCalcuProperty(List<HydroCalcuResult> allCalcuResultList)
+        public void UpdateCalcuProperty(List<HydroCalcuVisualResult> allCalcuResultList)
         {
             if (allCalcuResultList != null && allCalcuResultList.Count > 0)
             {
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/14-pipe/HydroPipeListCtrl.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/14-pipe/HydroPipeListCtrl.cs
index 1031db6..8cb2df6 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/14-pipe/HydroPipeListCtrl.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/14-pipe/HydroPipeListCtrl.cs
@@ -76,7 +76,7 @@
         /// <summary>
         /// 缁戝畾鏁版嵁
         /// </summary>
-        public void SetBindingData(Yw.Model.HydroModelInfo hydroInfo, List<HydroCalcuResult> allCalcuResultList)
+        public void SetBindingData(Yw.Model.HydroModelInfo hydroInfo, List<HydroCalcuVisualResult> allCalcuResultList)
         {
             _allList = new List<HydroPipeViewModel>();
             if (hydroInfo != null && hydroInfo.Pipes != null && hydroInfo.Pipes.Count > 0)
@@ -181,7 +181,7 @@
         /// <summary>
         /// 鏇存柊璁$畻灞炴��
         /// </summary>
-        public void UpdateCalcuProperty(List<HydroCalcuResult> allCalcuResultList)
+        public void UpdateCalcuProperty(List<HydroCalcuVisualResult> allCalcuResultList)
         {
             if (allCalcuResultList != null && allCalcuResultList.Count > 0)
             {
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/15-translation/HydroTranslationListCtrl.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/15-translation/HydroTranslationListCtrl.cs
index e5368ef..2a3d986 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/15-translation/HydroTranslationListCtrl.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/15-translation/HydroTranslationListCtrl.cs
@@ -75,7 +75,7 @@
         /// <summary>
         /// 缁戝畾鏁版嵁
         /// </summary>
-        public void SetBindingData(Yw.Model.HydroModelInfo hydroInfo, List<HydroCalcuResult> allCalcuResultList)
+        public void SetBindingData(Yw.Model.HydroModelInfo hydroInfo, List<HydroCalcuVisualResult> allCalcuResultList)
         {
             _allList = new List<HydroTranslationViewModel>();
             if (hydroInfo != null && hydroInfo.Translations != null && hydroInfo.Translations.Count > 0)
@@ -180,7 +180,7 @@
         /// <summary>
         /// 鏇存柊璁$畻灞炴��
         /// </summary>
-        public void UpdateCalcuProperty(List<HydroCalcuResult> allCalcuResultList)
+        public void UpdateCalcuProperty(List<HydroCalcuVisualResult> allCalcuResultList)
         {
             if (allCalcuResultList != null && allCalcuResultList.Count > 0)
             {
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/16-pump/HydroPumpListCtrl.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/16-pump/HydroPumpListCtrl.cs
index d07b25f..457b320 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/16-pump/HydroPumpListCtrl.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/16-pump/HydroPumpListCtrl.cs
@@ -75,7 +75,7 @@
         /// <summary>
         /// 缁戝畾鏁版嵁
         /// </summary>
-        public void SetBindingData(Yw.Model.HydroModelInfo hydroInfo, List<HydroCalcuResult> allCalcuResultList)
+        public void SetBindingData(Yw.Model.HydroModelInfo hydroInfo, List<HydroCalcuVisualResult> allCalcuResultList)
         {
             _allList = new List<HydroPumpViewModel>();
             if (hydroInfo != null && hydroInfo.Pumps != null && hydroInfo.Pumps.Count > 0)
@@ -180,7 +180,7 @@
         /// <summary>
         /// 鏇存柊璁$畻灞炴��
         /// </summary>
-        public void UpdateCalcuProperty(List<HydroCalcuResult> allCalcuResultList)
+        public void UpdateCalcuProperty(List<HydroCalcuVisualResult> allCalcuResultList)
         {
             if (allCalcuResultList != null && allCalcuResultList.Count > 0)
             {
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/17-valve/HydroValveListCtrl.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/17-valve/HydroValveListCtrl.cs
index 8d28adf..785d348 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/17-valve/HydroValveListCtrl.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/17-valve/HydroValveListCtrl.cs
@@ -75,7 +75,7 @@
         /// <summary>
         /// 缁戝畾鏁版嵁
         /// </summary>
-        public void SetBindingData(Yw.Model.HydroModelInfo hydroInfo, List<HydroCalcuResult> allCalcuResultList)
+        public void SetBindingData(Yw.Model.HydroModelInfo hydroInfo, List<HydroCalcuVisualResult> allCalcuResultList)
         {
             _allList = new List<HydroValveViewModel>();
             if (hydroInfo != null && hydroInfo.Valves != null && hydroInfo.Valves.Count > 0)
@@ -180,7 +180,7 @@
         /// <summary>
         /// 鏇存柊璁$畻灞炴��
         /// </summary>
-        public void UpdateCalcuProperty(List<HydroCalcuResult> allCalcuResultList)
+        public void UpdateCalcuProperty(List<HydroCalcuVisualResult> allCalcuResultList)
         {
             if (allCalcuResultList != null && allCalcuResultList.Count > 0)
             {
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/18-exchanger/HydroExchangerListCtrl.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/18-exchanger/HydroExchangerListCtrl.cs
index 303295b..2312974 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/18-exchanger/HydroExchangerListCtrl.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/18-exchanger/HydroExchangerListCtrl.cs
@@ -75,7 +75,7 @@
         /// <summary>
         /// 缁戝畾鏁版嵁
         /// </summary>
-        public void SetBindingData(Yw.Model.HydroModelInfo hydroInfo, List<HydroCalcuResult> allCalcuResultList)
+        public void SetBindingData(Yw.Model.HydroModelInfo hydroInfo, List<HydroCalcuVisualResult> allCalcuResultList)
         {
             _allList = new List<HydroExchangerViewModel>();
             if (hydroInfo != null && hydroInfo.Exchangers != null && hydroInfo.Exchangers.Count > 0)
@@ -180,7 +180,7 @@
         /// <summary>
         /// 鏇存柊璁$畻灞炴��
         /// </summary>
-        public void UpdateCalcuProperty(List<HydroCalcuResult> allCalcuResultList)
+        public void UpdateCalcuProperty(List<HydroCalcuVisualResult> allCalcuResultList)
         {
             if (allCalcuResultList != null && allCalcuResultList.Count > 0)
             {
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/19-compressor/HydroCompressorListCtrl.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/19-compressor/HydroCompressorListCtrl.cs
index 7d89009..0f6891c 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/19-compressor/HydroCompressorListCtrl.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/19-compressor/HydroCompressorListCtrl.cs
@@ -75,7 +75,7 @@
         /// <summary>
         /// 缁戝畾鏁版嵁
         /// </summary>
-        public void SetBindingData(Yw.Model.HydroModelInfo hydroInfo, List<HydroCalcuResult> allCalcuResultList)
+        public void SetBindingData(Yw.Model.HydroModelInfo hydroInfo, List<HydroCalcuVisualResult> allCalcuResultList)
         {
             _allList = new List<HydroCompressorViewModel>();
             if (hydroInfo != null && hydroInfo.Compressors != null && hydroInfo.Compressors.Count > 0)
@@ -180,7 +180,7 @@
         /// <summary>
         /// 鏇存柊璁$畻灞炴��
         /// </summary>
-        public void UpdateCalcuProperty(List<HydroCalcuResult> allCalcuResultList)
+        public void UpdateCalcuProperty(List<HydroCalcuVisualResult> allCalcuResultList)
         {
             if (allCalcuResultList != null && allCalcuResultList.Count > 0)
             {
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/08-grading/03-list/SetHydroGradingModelCtrl.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/08-grading/03-list/SetHydroGradingModelCtrl.cs
index 2688f65..69f2065 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/08-grading/03-list/SetHydroGradingModelCtrl.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/08-grading/03-list/SetHydroGradingModelCtrl.cs
@@ -65,27 +65,27 @@
                         ResetColumns(false);
                     }
                     break;
-                case HydroCalcuProp.CalcuPress:
+                case HydroVisualCalcuProp.CalcuPress:
                     {
                         ResetColumns(true);
                     }
                     break;
-                case HydroCalcuProp.CalcuHead:
+                case HydroVisualCalcuProp.CalcuHead:
                     {
                         ResetColumns(true);
                     }
                     break;
-                case HydroCalcuProp.CalcuFlow:
+                case HydroVisualCalcuProp.CalcuFlow:
                     {
                         ResetColumns(true);
                     }
                     break;
-                case HydroCalcuProp.CalcuVelocity:
+                case HydroVisualCalcuProp.CalcuVelocity:
                     {
                         ResetColumns(true);
                     }
                     break;
-                case HydroCalcuProp.CalcuHeadLoss:
+                case HydroVisualCalcuProp.CalcuHeadLoss:
                     {
                         ResetColumns(true);
                     }
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/09-check/01-control/HydroCheckItemViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/09-check/01-control/HydroCheckItemViewModel.cs
index acd0ed3..e5547ec 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/09-check/01-control/HydroCheckItemViewModel.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/09-check/01-control/HydroCheckItemViewModel.cs
@@ -15,6 +15,7 @@
         /// </summary>
         public HydroCheckItemViewModel(HydroCheckItem rhs)
         {
+            this.Succeed = !rhs.Failed;
             switch (rhs.Mode)
             {
                 case HydroCheckMode.Global: this.Mode = "鏁翠綋"; break;
@@ -32,10 +33,15 @@
                 default: break;
             }
             this.Code = rhs.Code;
-            this.Failed = rhs.Failed;
             this.Reason = rhs.Reason;
             this.SortCode = rhs.Failed ? 1 : 2;
         }
+
+        /// <summary>
+        /// 鎴愬姛
+        /// </summary>
+        [DisplayName("鎴愬姛")]
+        public bool Succeed { get; set; }
 
         /// <summary>
         /// 妫�鏌ユā寮�
@@ -54,12 +60,6 @@
         /// </summary>
         [DisplayName("妫�鏌ョ紪鐮�")]
         public string Code { get; set; }
-
-        /// <summary>
-        /// 鏄惁澶辫触
-        /// </summary>
-        [DisplayName("鏄惁澶辫触")]
-        public bool Failed { get; set; }
 
         /// <summary>
         /// 妫�鏌ュ師鍥�
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/09-check/01-control/HydroCheckResultCtrl.Designer.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/09-check/01-control/HydroCheckResultCtrl.Designer.cs
index 8102814..5227880 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/09-check/01-control/HydroCheckResultCtrl.Designer.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/09-check/01-control/HydroCheckResultCtrl.Designer.cs
@@ -42,7 +42,6 @@
             colMode = new DevExpress.XtraGrid.Columns.GridColumn();
             colType = new DevExpress.XtraGrid.Columns.GridColumn();
             colCode = new DevExpress.XtraGrid.Columns.GridColumn();
-            colFailed = new DevExpress.XtraGrid.Columns.GridColumn();
             colReason = new DevExpress.XtraGrid.Columns.GridColumn();
             Root = new DevExpress.XtraLayout.LayoutControlGroup();
             layoutControlItem1 = new DevExpress.XtraLayout.LayoutControlItem();
@@ -53,6 +52,7 @@
             layoutControlItem5 = new DevExpress.XtraLayout.LayoutControlItem();
             layoutControlItem6 = new DevExpress.XtraLayout.LayoutControlItem();
             layoutControlItem7 = new DevExpress.XtraLayout.LayoutControlItem();
+            colSucceed = new DevExpress.XtraGrid.Columns.GridColumn();
             ((ISupportInitialize)layoutControl1).BeginInit();
             layoutControl1.SuspendLayout();
             ((ISupportInitialize)txtFailedItems.Properties).BeginInit();
@@ -173,7 +173,7 @@
             // 
             gridView1.Appearance.ViewCaption.Options.UseTextOptions = true;
             gridView1.Appearance.ViewCaption.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Near;
-            gridView1.Columns.AddRange(new DevExpress.XtraGrid.Columns.GridColumn[] { colMode, colType, colCode, colFailed, colReason });
+            gridView1.Columns.AddRange(new DevExpress.XtraGrid.Columns.GridColumn[] { colSucceed, colMode, colType, colCode, colReason });
             gridView1.GridControl = gridControl1;
             gridView1.Name = "gridView1";
             gridView1.ViewCaption = "鏍¢獙鏄庣粏";
@@ -187,7 +187,7 @@
             colMode.MinWidth = 100;
             colMode.Name = "colMode";
             colMode.Visible = true;
-            colMode.VisibleIndex = 0;
+            colMode.VisibleIndex = 1;
             colMode.Width = 100;
             // 
             // colType
@@ -197,7 +197,7 @@
             colType.MinWidth = 100;
             colType.Name = "colType";
             colType.Visible = true;
-            colType.VisibleIndex = 1;
+            colType.VisibleIndex = 2;
             colType.Width = 100;
             // 
             // colCode
@@ -207,18 +207,8 @@
             colCode.MinWidth = 100;
             colCode.Name = "colCode";
             colCode.Visible = true;
-            colCode.VisibleIndex = 2;
+            colCode.VisibleIndex = 3;
             colCode.Width = 100;
-            // 
-            // colFailed
-            // 
-            colFailed.FieldName = "Failed";
-            colFailed.MaxWidth = 60;
-            colFailed.MinWidth = 60;
-            colFailed.Name = "colFailed";
-            colFailed.Visible = true;
-            colFailed.VisibleIndex = 3;
-            colFailed.Width = 60;
             // 
             // colReason
             // 
@@ -315,6 +305,16 @@
             layoutControlItem7.Text = "妫�鏌ュけ璐ラ」:";
             layoutControlItem7.TextSize = new Size(64, 14);
             // 
+            // colSucceed
+            // 
+            colSucceed.FieldName = "Succeed";
+            colSucceed.MaxWidth = 80;
+            colSucceed.MinWidth = 80;
+            colSucceed.Name = "colSucceed";
+            colSucceed.Visible = true;
+            colSucceed.VisibleIndex = 0;
+            colSucceed.Width = 80;
+            // 
             // HydroCheckResultCtrl
             // 
             AutoScaleDimensions = new SizeF(7F, 14F);
@@ -356,7 +356,6 @@
         private DevExpress.XtraGrid.Columns.GridColumn colMode;
         private DevExpress.XtraGrid.Columns.GridColumn colType;
         private DevExpress.XtraGrid.Columns.GridColumn colCode;
-        private DevExpress.XtraGrid.Columns.GridColumn colFailed;
         private DevExpress.XtraGrid.Columns.GridColumn colReason;
         private DevExpress.XtraEditors.TextEdit txtType;
         private DevExpress.XtraEditors.TextEdit txtMode;
@@ -371,5 +370,6 @@
         private DevExpress.XtraLayout.LayoutControlItem layoutControlItem5;
         private DevExpress.XtraLayout.LayoutControlItem layoutControlItem6;
         private DevExpress.XtraLayout.LayoutControlItem layoutControlItem7;
+        private DevExpress.XtraGrid.Columns.GridColumn colSucceed;
     }
 }
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/09-check/01-control/HydroCheckResultCtrl.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/09-check/01-control/HydroCheckResultCtrl.cs
index a273025..c56ef40 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/09-check/01-control/HydroCheckResultCtrl.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/09-check/01-control/HydroCheckResultCtrl.cs
@@ -7,7 +7,6 @@
             InitializeComponent();
             this.gridView1.SetNormalView(30);
             this.gridView1.RegistCustomDrawRowIndicator(40);
-            //this.gridView1.ShowFindPanel();
         }
 
         /// <summary>
@@ -15,6 +14,7 @@
         /// </summary>
         public event Action<string> HydroClickEvent;
 
+        //鎵�鏈夌粦瀹氬垪琛�
         private List<HydroCheckItemViewModel> _allBindingList = null;
 
         /// <summary>
@@ -68,15 +68,15 @@
             }
             if (e.RowHandle != this.gridView1.FocusedRowHandle)
             {
-                if (row.Failed)
-                {
-                    e.Appearance.BackColor = Color.Red;
-                    e.Appearance.ForeColor = Color.White;
-                }
-                else
+                if (row.Succeed)
                 {
                     e.Appearance.BackColor = Color.White;
                     e.Appearance.ForeColor = Color.Black;
+                }
+                else
+                {
+                    e.Appearance.BackColor = Color.Red;
+                    e.Appearance.ForeColor = Color.White;
                 }
             }
             else
@@ -87,5 +87,8 @@
             }
         }
 
+
+
+
     }
 }
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/01-set/SetHydroVisualMonitorCtrl.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/01-set/SetHydroVisualMonitorCtrl.cs
index d96479b..ca65e64 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/01-set/SetHydroVisualMonitorCtrl.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/01-set/SetHydroVisualMonitorCtrl.cs
@@ -26,7 +26,7 @@
             {
                 if (visualInfo != null)
                 {
-                    var propList = HydroCalcuPropHelper.GetNameDict(visualInfo.Catalog);
+                    var propList = HydroVisualCalcuPropHelper.GetNameDict(visualInfo.Catalog);
                     if (propList != null && propList.Count > 0)
                     {
                         foreach (var prop in propList)
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/01-set/SetHydroVisualMonitorViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/01-set/SetHydroVisualMonitorViewModel.cs
index 2ce2599..36b5444 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/01-set/SetHydroVisualMonitorViewModel.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/01-set/SetHydroVisualMonitorViewModel.cs
@@ -17,7 +17,7 @@
         {
             this.Checked = vmo.ID > 0;
             this.Relation = visual.Name;
-            this.PropName = HydroCalcuPropHelper.GetName(vmo.PropName);
+            this.PropName = HydroVisualCalcuPropHelper.GetName(vmo.PropName);
             this.Description = vmo.Description;
             this.Vmo = vmo;
         }
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/02-value/HydroVisualMonitorValueViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/02-value/HydroVisualMonitorValueViewModel.cs
index 1436264..f442331 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/02-value/HydroVisualMonitorValueViewModel.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/02-value/HydroVisualMonitorValueViewModel.cs
@@ -16,9 +16,9 @@
         public HydroVisualMonitorValueViewModel(Yw.Model.HydroVisualInfo visual, Yw.Vmo.HydroMonitorVmo vmo)
         {
             this.Relation = visual.Name;
-            this.PropName = HydroCalcuPropHelper.GetName(vmo.PropName);
+            this.PropName = HydroVisualCalcuPropHelper.GetName(vmo.PropName);
             this.MonitorValue = null;
-            this.UnitName = HydroCalcuPropHelper.GetUnit(vmo.PropName);
+            this.UnitName = HydroVisualCalcuPropHelper.GetUnit(vmo.PropName);
             this.SortCode = vmo.SortCode;
             this.Description = vmo.Description;
 

--
Gitblit v1.9.3