From 0404a7124d87ef965a1dcc4c22d9ff10541fa63f Mon Sep 17 00:00:00 2001
From: Shuxia Ning <NingShuxia0927@outlook.com>
Date: 星期二, 12 十一月 2024 12:11:58 +0800
Subject: [PATCH] 创建方案

---
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/99-ctrl/XhsParterListCtrl.cs                      |   21 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/HStation.WinFrmUI.Xhs.Core.csproj                                         |    3 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/99-ctrl/XhsParterListCtrl.Designer.cs             |   44 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/XhsProjectSimulationSchemeMgrPage.cs              | 3329 +++++++++++++++++++++++++++++++++
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/05-function/XhsProjectSimulationFunctionMgrCtrl.resx        |    4 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/HStation.WinFrmUI.Xhs.Core.csproj.user                                    |    3 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/01-add/AddXhsSchemeDlg.Designer.cs                | 1001 ++++-----
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/XhsProjectSimulationSchemeMgrPage.resx            |  581 +++++
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/01-add/AddXhsSchemeDlg.resx                       |   18 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/01-add/AddXhsSchemeDlg.cs                         |  128 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/99-ctrl/XhsParterListCtrl.resx                    |  120 +
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/XhsProjectSimulationSchemeMgrPage.Designer.cs     |  678 ++++++
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/XhsProjectSimulationMgrPage.cs                              |    2 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/05-function/XhsProjectSimulationFunctionMgrCtrl.Designer.cs |   14 
 14 files changed, 5,351 insertions(+), 595 deletions(-)

diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/01-add/AddXhsSchemeDlg.Designer.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/01-add/AddXhsSchemeDlg.Designer.cs
index 7a8057d..c8356fa 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/01-add/AddXhsSchemeDlg.Designer.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/01-add/AddXhsSchemeDlg.Designer.cs
@@ -35,11 +35,6 @@
             DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject2 = new DevExpress.Utils.SerializableAppearanceObject();
             DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject3 = new DevExpress.Utils.SerializableAppearanceObject();
             DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject4 = new DevExpress.Utils.SerializableAppearanceObject();
-            EditorButtonImageOptions editorButtonImageOptions2 = new EditorButtonImageOptions();
-            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject5 = new DevExpress.Utils.SerializableAppearanceObject();
-            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject6 = new DevExpress.Utils.SerializableAppearanceObject();
-            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject7 = new DevExpress.Utils.SerializableAppearanceObject();
-            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject8 = new DevExpress.Utils.SerializableAppearanceObject();
             gridControl1 = new DevExpress.XtraGrid.GridControl();
             setSchemeParterRecordBindingSource = new BindingSource(components);
             gridView1 = new DevExpress.XtraGrid.Views.Grid.GridView();
@@ -52,35 +47,25 @@
             colDelete = new DevExpress.XtraGrid.Columns.GridColumn();
             repositoryItemButtonEdit1 = new DevExpress.XtraEditors.Repository.RepositoryItemButtonEdit();
             ribbon = new DevExpress.XtraBars.Ribbon.RibbonControl();
-            repositoryItemTextEdit1 = new DevExpress.XtraEditors.Repository.RepositoryItemTextEdit();
-            repositoryItemTextEdit2 = new DevExpress.XtraEditors.Repository.RepositoryItemTextEdit();
             sidePanel3dModel = new SidePanel();
-            tabPane1 = new DevExpress.XtraBars.Navigation.TabPane();
-            tabPagePump = new DevExpress.XtraBars.Navigation.TabNavigationPage();
-            setSchemePumpListCtrl1 = new SetSchemePumpListCtrl();
-            tabPageValve = new DevExpress.XtraBars.Navigation.TabNavigationPage();
-            setSchemeValveListCtrl1 = new SetSchemeValveListCtrl();
-            tabPagePipe = new DevExpress.XtraBars.Navigation.TabNavigationPage();
-            setSchemePipeListCtrl1 = new SetSchemePipeListCtrl();
-            panelContainer1 = new DevExpress.XtraBars.Docking.DockPanel();
+            barDockControlLeft = new DevExpress.XtraBars.BarDockControl();
+            barManager1 = new DevExpress.XtraBars.BarManager(components);
+            bar1 = new DevExpress.XtraBars.Bar();
+            barBtnFastShowHidden = new DevExpress.XtraBars.BarButtonItem();
+            barDockControlTop = new DevExpress.XtraBars.BarDockControl();
+            barDockControlBottom = new DevExpress.XtraBars.BarDockControl();
+            barDockControlRight = new DevExpress.XtraBars.BarDockControl();
+            dockManager1 = new DevExpress.XtraBars.Docking.DockManager(components);
+            dockPanel5 = new DevExpress.XtraBars.Docking.DockPanel();
+            dockPanelChangeRecord = new DevExpress.XtraBars.Docking.DockPanel();
+            dockPanel1_Container = new DevExpress.XtraBars.Docking.ControlContainer();
+            layoutControl1 = new DevExpress.XtraLayout.LayoutControl();
             gridControl2 = new DevExpress.XtraGrid.GridControl();
             setSchemeParterRecordItemBindingSource = new BindingSource(components);
             gridView2 = new DevExpress.XtraGrid.Views.Grid.GridView();
             colName1 = new DevExpress.XtraGrid.Columns.GridColumn();
             colAfterValue = new DevExpress.XtraGrid.Columns.GridColumn();
             colBeforeValue = new DevExpress.XtraGrid.Columns.GridColumn();
-            dockManager1 = new DevExpress.XtraBars.Docking.DockManager(components);
-            dockPanelMenu = new DevExpress.XtraBars.Docking.DockPanel();
-            controlContainer1 = new DevExpress.XtraBars.Docking.ControlContainer();
-            layoutControl3 = new DevExpress.XtraLayout.LayoutControl();
-            buttonEdit = new ButtonEdit();
-            layoutControlGroup4 = new DevExpress.XtraLayout.LayoutControlGroup();
-            layoutControlItem6 = new DevExpress.XtraLayout.LayoutControlItem();
-            emptySpaceItem1 = new DevExpress.XtraLayout.EmptySpaceItem();
-            dockPanel5 = new DevExpress.XtraBars.Docking.DockPanel();
-            dockPanelChangeRecord = new DevExpress.XtraBars.Docking.DockPanel();
-            dockPanel1_Container = new DevExpress.XtraBars.Docking.ControlContainer();
-            layoutControl1 = new DevExpress.XtraLayout.LayoutControl();
             Root = new DevExpress.XtraLayout.LayoutControlGroup();
             layoutControlGroup1 = new DevExpress.XtraLayout.LayoutControlGroup();
             layoutControlItem1 = new DevExpress.XtraLayout.LayoutControlItem();
@@ -104,6 +89,14 @@
             layoutControlItem11 = new DevExpress.XtraLayout.LayoutControlItem();
             dockPanelParterList = new DevExpress.XtraBars.Docking.DockPanel();
             dockPanel2_Container = new DevExpress.XtraBars.Docking.ControlContainer();
+            tabPane1 = new DevExpress.XtraBars.Navigation.TabPane();
+            tabPagePump = new DevExpress.XtraBars.Navigation.TabNavigationPage();
+            setSchemePumpListCtrl1 = new SetSchemePumpListCtrl();
+            tabPageValve = new DevExpress.XtraBars.Navigation.TabNavigationPage();
+            setSchemeValveListCtrl1 = new SetSchemeValveListCtrl();
+            tabPagePipe = new DevExpress.XtraBars.Navigation.TabNavigationPage();
+            setSchemePipeListCtrl1 = new SetSchemePipeListCtrl();
+            panelContainer1 = new DevExpress.XtraBars.Docking.DockPanel();
             dxErrorProvider1 = new DevExpress.XtraEditors.DXErrorProvider.DXErrorProvider(components);
             layoutControlItem9 = new DevExpress.XtraLayout.LayoutControlItem();
             layoutControlItem10 = new DevExpress.XtraLayout.LayoutControlItem();
@@ -112,30 +105,17 @@
             ((ISupportInitialize)gridView1).BeginInit();
             ((ISupportInitialize)repositoryItemButtonEdit1).BeginInit();
             ((ISupportInitialize)ribbon).BeginInit();
-            ((ISupportInitialize)repositoryItemTextEdit1).BeginInit();
-            ((ISupportInitialize)repositoryItemTextEdit2).BeginInit();
-            ((ISupportInitialize)tabPane1).BeginInit();
-            tabPane1.SuspendLayout();
-            tabPagePump.SuspendLayout();
-            tabPageValve.SuspendLayout();
-            tabPagePipe.SuspendLayout();
-            ((ISupportInitialize)gridControl2).BeginInit();
-            ((ISupportInitialize)setSchemeParterRecordItemBindingSource).BeginInit();
-            ((ISupportInitialize)gridView2).BeginInit();
+            sidePanel3dModel.SuspendLayout();
+            ((ISupportInitialize)barManager1).BeginInit();
             ((ISupportInitialize)dockManager1).BeginInit();
-            dockPanelMenu.SuspendLayout();
-            controlContainer1.SuspendLayout();
-            ((ISupportInitialize)layoutControl3).BeginInit();
-            layoutControl3.SuspendLayout();
-            ((ISupportInitialize)buttonEdit.Properties).BeginInit();
-            ((ISupportInitialize)layoutControlGroup4).BeginInit();
-            ((ISupportInitialize)layoutControlItem6).BeginInit();
-            ((ISupportInitialize)emptySpaceItem1).BeginInit();
             dockPanel5.SuspendLayout();
             dockPanelChangeRecord.SuspendLayout();
             dockPanel1_Container.SuspendLayout();
             ((ISupportInitialize)layoutControl1).BeginInit();
             layoutControl1.SuspendLayout();
+            ((ISupportInitialize)gridControl2).BeginInit();
+            ((ISupportInitialize)setSchemeParterRecordItemBindingSource).BeginInit();
+            ((ISupportInitialize)gridView2).BeginInit();
             ((ISupportInitialize)Root).BeginInit();
             ((ISupportInitialize)layoutControlGroup1).BeginInit();
             ((ISupportInitialize)layoutControlItem1).BeginInit();
@@ -158,6 +138,11 @@
             ((ISupportInitialize)layoutControlItem11).BeginInit();
             dockPanelParterList.SuspendLayout();
             dockPanel2_Container.SuspendLayout();
+            ((ISupportInitialize)tabPane1).BeginInit();
+            tabPane1.SuspendLayout();
+            tabPagePump.SuspendLayout();
+            tabPageValve.SuspendLayout();
+            tabPagePipe.SuspendLayout();
             ((ISupportInitialize)dxErrorProvider1).BeginInit();
             ((ISupportInitialize)layoutControlItem9).BeginInit();
             ((ISupportInitialize)layoutControlItem10).BeginInit();
@@ -171,7 +156,7 @@
             gridControl1.MenuManager = ribbon;
             gridControl1.Name = "gridControl1";
             gridControl1.RepositoryItems.AddRange(new DevExpress.XtraEditors.Repository.RepositoryItem[] { repositoryItemButtonEdit1 });
-            gridControl1.Size = new Size(393, 421);
+            gridControl1.Size = new Size(393, 469);
             gridControl1.TabIndex = 0;
             gridControl1.ViewCollection.AddRange(new DevExpress.XtraGrid.Views.Base.BaseView[] { gridView1 });
             // 
@@ -262,16 +247,14 @@
             ribbon.ItemPanelStyle = DevExpress.XtraBars.Ribbon.RibbonItemPanelStyle.Classic;
             ribbon.Items.AddRange(new DevExpress.XtraBars.BarItem[] { ribbon.ExpandCollapseItem });
             ribbon.Location = new Point(0, 0);
-            ribbon.MaxItemId = 19;
+            ribbon.MaxItemId = 22;
             ribbon.Name = "ribbon";
             ribbon.OptionsExpandCollapseMenu.EnableExpandCollapseMenu = DevExpress.Utils.DefaultBoolean.False;
             ribbon.OptionsExpandCollapseMenu.ShowQuickAccessToolbarItem = DevExpress.Utils.DefaultBoolean.False;
             ribbon.OptionsExpandCollapseMenu.ShowRibbonGroup = DevExpress.Utils.DefaultBoolean.False;
             ribbon.OptionsExpandCollapseMenu.ShowRibbonLayoutGroup = DevExpress.Utils.DefaultBoolean.False;
             ribbon.OptionsTouch.TouchUI = DevExpress.Utils.DefaultBoolean.False;
-            ribbon.RepositoryItems.AddRange(new DevExpress.XtraEditors.Repository.RepositoryItem[] { repositoryItemTextEdit1, repositoryItemTextEdit2 });
             ribbon.RibbonCaptionAlignment = DevExpress.XtraBars.Ribbon.RibbonCaptionAlignment.Left;
-            ribbon.RibbonStyle = DevExpress.XtraBars.Ribbon.RibbonControlStyle.TabletOffice;
             ribbon.SearchItemPosition = DevExpress.XtraBars.Ribbon.SearchItemPosition.None;
             ribbon.ShowApplicationButton = DevExpress.Utils.DefaultBoolean.False;
             ribbon.ShowDisplayOptionsMenuButton = DevExpress.Utils.DefaultBoolean.False;
@@ -284,24 +267,445 @@
             ribbon.Size = new Size(1569, 48);
             ribbon.Toolbar.ShowCustomizeItem = false;
             // 
-            // repositoryItemTextEdit1
-            // 
-            repositoryItemTextEdit1.AutoHeight = false;
-            repositoryItemTextEdit1.Name = "repositoryItemTextEdit1";
-            // 
-            // repositoryItemTextEdit2
-            // 
-            repositoryItemTextEdit2.AutoHeight = false;
-            repositoryItemTextEdit2.Name = "repositoryItemTextEdit2";
-            // 
             // sidePanel3dModel
             // 
+            sidePanel3dModel.Controls.Add(barDockControlLeft);
+            sidePanel3dModel.Controls.Add(barDockControlRight);
+            sidePanel3dModel.Controls.Add(barDockControlBottom);
+            sidePanel3dModel.Controls.Add(barDockControlTop);
             sidePanel3dModel.Dock = DockStyle.Fill;
-            sidePanel3dModel.Location = new Point(0, 142);
+            sidePanel3dModel.Location = new Point(0, 48);
             sidePanel3dModel.Name = "sidePanel3dModel";
-            sidePanel3dModel.Size = new Size(1175, 615);
+            sidePanel3dModel.Size = new Size(1175, 709);
             sidePanel3dModel.TabIndex = 2;
             sidePanel3dModel.Text = "sidePanel2";
+            // 
+            // barDockControlLeft
+            // 
+            barDockControlLeft.CausesValidation = false;
+            barDockControlLeft.Dock = DockStyle.Left;
+            barDockControlLeft.Location = new Point(0, 35);
+            barDockControlLeft.Manager = barManager1;
+            barDockControlLeft.Size = new Size(0, 674);
+            // 
+            // barManager1
+            // 
+            barManager1.AllowMdiChildButtons = false;
+            barManager1.AllowMoveBarOnToolbar = false;
+            barManager1.AllowQuickCustomization = false;
+            barManager1.AllowShowToolbarsPopup = false;
+            barManager1.Bars.AddRange(new DevExpress.XtraBars.Bar[] { bar1 });
+            barManager1.DockControls.Add(barDockControlTop);
+            barManager1.DockControls.Add(barDockControlBottom);
+            barManager1.DockControls.Add(barDockControlLeft);
+            barManager1.DockControls.Add(barDockControlRight);
+            barManager1.DockManager = dockManager1;
+            barManager1.Form = sidePanel3dModel;
+            barManager1.Items.AddRange(new DevExpress.XtraBars.BarItem[] { barBtnFastShowHidden });
+            barManager1.MaxItemId = 1;
+            barManager1.ShowFullMenusAfterDelay = false;
+            barManager1.ShowScreenTipsInToolbars = false;
+            barManager1.ShowShortcutInScreenTips = false;
+            barManager1.TransparentEditorsMode = DevExpress.Utils.DefaultBoolean.False;
+            // 
+            // bar1
+            // 
+            bar1.BarName = "Tools";
+            bar1.DockCol = 0;
+            bar1.DockRow = 0;
+            bar1.DockStyle = DevExpress.XtraBars.BarDockStyle.Top;
+            bar1.LinksPersistInfo.AddRange(new DevExpress.XtraBars.LinkPersistInfo[] { new DevExpress.XtraBars.LinkPersistInfo(barBtnFastShowHidden) });
+            bar1.OptionsBar.AllowQuickCustomization = false;
+            bar1.OptionsBar.DrawDragBorder = false;
+            bar1.OptionsBar.UseWholeRow = true;
+            bar1.Text = "Tools";
+            // 
+            // barBtnFastShowHidden
+            // 
+            barBtnFastShowHidden.Caption = "涓�閿樉闅�";
+            barBtnFastShowHidden.Id = 0;
+            barBtnFastShowHidden.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnFastShowHidden.ImageOptions.SvgImage");
+            barBtnFastShowHidden.Name = "barBtnFastShowHidden";
+            barBtnFastShowHidden.PaintStyle = DevExpress.XtraBars.BarItemPaintStyle.CaptionGlyph;
+            barBtnFastShowHidden.ItemClick += barBtnFastShowHidden_ItemClick;
+            // 
+            // barDockControlTop
+            // 
+            barDockControlTop.CausesValidation = false;
+            barDockControlTop.Dock = DockStyle.Top;
+            barDockControlTop.Location = new Point(0, 0);
+            barDockControlTop.Manager = barManager1;
+            barDockControlTop.Size = new Size(1175, 35);
+            // 
+            // barDockControlBottom
+            // 
+            barDockControlBottom.CausesValidation = false;
+            barDockControlBottom.Dock = DockStyle.Bottom;
+            barDockControlBottom.Location = new Point(0, 709);
+            barDockControlBottom.Manager = barManager1;
+            barDockControlBottom.Size = new Size(1175, 0);
+            // 
+            // barDockControlRight
+            // 
+            barDockControlRight.CausesValidation = false;
+            barDockControlRight.Dock = DockStyle.Right;
+            barDockControlRight.Location = new Point(1175, 35);
+            barDockControlRight.Manager = barManager1;
+            barDockControlRight.Size = new Size(0, 674);
+            // 
+            // dockManager1
+            // 
+            dockManager1.DockingOptions.ShowAutoHideButton = false;
+            dockManager1.DockingOptions.ShowCloseButton = false;
+            dockManager1.DockingOptions.ShowMaximizeButton = false;
+            dockManager1.DockingOptions.ShowMinimizeButton = false;
+            dockManager1.Form = this;
+            dockManager1.MenuManager = barManager1;
+            dockManager1.RootPanels.AddRange(new DevExpress.XtraBars.Docking.DockPanel[] { dockPanel5, dockPanelParterList });
+            dockManager1.Style = DevExpress.XtraBars.Docking2010.Views.DockingViewStyle.Light;
+            dockManager1.TopZIndexControls.AddRange(new string[] { "DevExpress.XtraBars.BarDockControl", "DevExpress.XtraBars.StandaloneBarDockControl", "System.Windows.Forms.MenuStrip", "System.Windows.Forms.StatusStrip", "System.Windows.Forms.StatusBar", "DevExpress.XtraBars.Ribbon.RibbonStatusBar", "DevExpress.XtraBars.Ribbon.RibbonControl", "DevExpress.XtraBars.Navigation.OfficeNavigationBar", "DevExpress.XtraBars.Navigation.TileNavPane", "DevExpress.XtraBars.TabFormControl", "DevExpress.XtraBars.FluentDesignSystem.FluentDesignFormControl", "DevExpress.XtraBars.ToolbarForm.ToolbarFormControl" });
+            // 
+            // dockPanel5
+            // 
+            dockPanel5.Controls.Add(dockPanelChangeRecord);
+            dockPanel5.Controls.Add(dockPanelScheme);
+            dockPanel5.Dock = DevExpress.XtraBars.Docking.DockingStyle.Right;
+            dockPanel5.ID = new Guid("4f9140be-dc44-4cc6-9924-d22c117f4a97");
+            dockPanel5.Location = new Point(1175, 48);
+            dockPanel5.Name = "dockPanel5";
+            dockPanel5.OriginalSize = new Size(394, 200);
+            dockPanel5.Size = new Size(394, 1056);
+            dockPanel5.Text = "panelContainer1";
+            // 
+            // dockPanelChangeRecord
+            // 
+            dockPanelChangeRecord.Controls.Add(dockPanel1_Container);
+            dockPanelChangeRecord.Dock = DevExpress.XtraBars.Docking.DockingStyle.Fill;
+            dockPanelChangeRecord.ID = new Guid("2c97b548-e9c5-4899-b8e1-203e6decf6f7");
+            dockPanelChangeRecord.Location = new Point(0, 0);
+            dockPanelChangeRecord.Name = "dockPanelChangeRecord";
+            dockPanelChangeRecord.OriginalSize = new Size(394, 825);
+            dockPanelChangeRecord.Size = new Size(394, 825);
+            dockPanelChangeRecord.Text = "鍙樻洿璁板綍";
+            // 
+            // dockPanel1_Container
+            // 
+            dockPanel1_Container.Controls.Add(layoutControl1);
+            dockPanel1_Container.Location = new Point(1, 34);
+            dockPanel1_Container.Name = "dockPanel1_Container";
+            dockPanel1_Container.Size = new Size(393, 791);
+            dockPanel1_Container.TabIndex = 0;
+            // 
+            // layoutControl1
+            // 
+            layoutControl1.Controls.Add(gridControl2);
+            layoutControl1.Controls.Add(gridControl1);
+            layoutControl1.Dock = DockStyle.Fill;
+            layoutControl1.Location = new Point(0, 0);
+            layoutControl1.Name = "layoutControl1";
+            layoutControl1.OptionsCustomizationForm.DesignTimeCustomizationFormPositionAndSize = new Rectangle(565, 389, 975, 600);
+            layoutControl1.Root = Root;
+            layoutControl1.Size = new Size(393, 791);
+            layoutControl1.TabIndex = 0;
+            layoutControl1.Text = "layoutControl1";
+            // 
+            // gridControl2
+            // 
+            gridControl2.DataSource = setSchemeParterRecordItemBindingSource;
+            gridControl2.Location = new Point(0, 535);
+            gridControl2.MainView = gridView2;
+            gridControl2.MenuManager = ribbon;
+            gridControl2.Name = "gridControl2";
+            gridControl2.Size = new Size(393, 256);
+            gridControl2.TabIndex = 0;
+            gridControl2.ViewCollection.AddRange(new DevExpress.XtraGrid.Views.Base.BaseView[] { gridView2 });
+            // 
+            // setSchemeParterRecordItemBindingSource
+            // 
+            setSchemeParterRecordItemBindingSource.DataSource = typeof(SetSchemeParterRecordItem);
+            // 
+            // gridView2
+            // 
+            gridView2.Columns.AddRange(new DevExpress.XtraGrid.Columns.GridColumn[] { colName1, colAfterValue, colBeforeValue });
+            gridView2.GridControl = gridControl2;
+            gridView2.Name = "gridView2";
+            // 
+            // colName1
+            // 
+            colName1.FieldName = "Name";
+            colName1.MinWidth = 30;
+            colName1.Name = "colName1";
+            colName1.Visible = true;
+            colName1.VisibleIndex = 0;
+            colName1.Width = 112;
+            // 
+            // colAfterValue
+            // 
+            colAfterValue.Caption = "鍙樻洿鍓�";
+            colAfterValue.FieldName = "AfterValue";
+            colAfterValue.MinWidth = 30;
+            colAfterValue.Name = "colAfterValue";
+            colAfterValue.Visible = true;
+            colAfterValue.VisibleIndex = 1;
+            colAfterValue.Width = 112;
+            // 
+            // colBeforeValue
+            // 
+            colBeforeValue.Caption = "鍙樻洿鍚�";
+            colBeforeValue.FieldName = "BeforeValue";
+            colBeforeValue.MinWidth = 30;
+            colBeforeValue.Name = "colBeforeValue";
+            colBeforeValue.Visible = true;
+            colBeforeValue.VisibleIndex = 2;
+            colBeforeValue.Width = 112;
+            // 
+            // Root
+            // 
+            Root.EnableIndentsWithoutBorders = DevExpress.Utils.DefaultBoolean.True;
+            Root.GroupBordersVisible = false;
+            Root.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutControlGroup1, layoutControlGroup2 });
+            Root.Name = "Root";
+            Root.Padding = new DevExpress.XtraLayout.Utils.Padding(0, 0, 0, 0);
+            Root.Size = new Size(393, 791);
+            Root.TextVisible = false;
+            // 
+            // layoutControlGroup1
+            // 
+            layoutControlGroup1.ExpandButtonVisible = true;
+            layoutControlGroup1.GroupStyle = DevExpress.Utils.GroupStyle.Title;
+            layoutControlGroup1.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutControlItem1 });
+            layoutControlGroup1.Location = new Point(0, 0);
+            layoutControlGroup1.Name = "layoutControlGroup1";
+            layoutControlGroup1.Padding = new DevExpress.XtraLayout.Utils.Padding(0, 0, 0, 0);
+            layoutControlGroup1.ShowInCustomizationForm = false;
+            layoutControlGroup1.Size = new Size(393, 502);
+            layoutControlGroup1.Spacing = new DevExpress.XtraLayout.Utils.Padding(0, 0, 0, 0);
+            layoutControlGroup1.Text = "璁板綍鍒楄〃";
+            // 
+            // layoutControlItem1
+            // 
+            layoutControlItem1.Control = gridControl1;
+            layoutControlItem1.HighlightFocusedItem = DevExpress.Utils.DefaultBoolean.True;
+            layoutControlItem1.Location = new Point(0, 0);
+            layoutControlItem1.Name = "layoutControlItem1";
+            layoutControlItem1.Padding = new DevExpress.XtraLayout.Utils.Padding(0, 0, 0, 0);
+            layoutControlItem1.Size = new Size(393, 469);
+            layoutControlItem1.TextSize = new Size(0, 0);
+            layoutControlItem1.TextVisible = false;
+            // 
+            // layoutControlGroup2
+            // 
+            layoutControlGroup2.ExpandButtonVisible = true;
+            layoutControlGroup2.GroupStyle = DevExpress.Utils.GroupStyle.Title;
+            layoutControlGroup2.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutControlItem2 });
+            layoutControlGroup2.Location = new Point(0, 502);
+            layoutControlGroup2.Name = "layoutControlGroup2";
+            layoutControlGroup2.Padding = new DevExpress.XtraLayout.Utils.Padding(0, 0, 0, 0);
+            layoutControlGroup2.ShowInCustomizationForm = false;
+            layoutControlGroup2.Size = new Size(393, 289);
+            layoutControlGroup2.Spacing = new DevExpress.XtraLayout.Utils.Padding(0, 0, 0, 0);
+            layoutControlGroup2.Text = "璁板綍璇︽儏";
+            // 
+            // layoutControlItem2
+            // 
+            layoutControlItem2.Control = gridControl2;
+            layoutControlItem2.HighlightFocusedItem = DevExpress.Utils.DefaultBoolean.True;
+            layoutControlItem2.Location = new Point(0, 0);
+            layoutControlItem2.Name = "layoutControlItem2";
+            layoutControlItem2.Padding = new DevExpress.XtraLayout.Utils.Padding(0, 0, 0, 0);
+            layoutControlItem2.Size = new Size(393, 256);
+            layoutControlItem2.TextSize = new Size(0, 0);
+            layoutControlItem2.TextVisible = false;
+            // 
+            // dockPanelScheme
+            // 
+            dockPanelScheme.Controls.Add(dockPanel3_Container);
+            dockPanelScheme.Dock = DevExpress.XtraBars.Docking.DockingStyle.Fill;
+            dockPanelScheme.ID = new Guid("39552842-60b6-4e4d-b215-438810b7a737");
+            dockPanelScheme.Location = new Point(0, 825);
+            dockPanelScheme.Name = "dockPanelScheme";
+            dockPanelScheme.OriginalSize = new Size(394, 231);
+            dockPanelScheme.Size = new Size(394, 231);
+            dockPanelScheme.Text = "鏂规淇℃伅";
+            // 
+            // dockPanel3_Container
+            // 
+            dockPanel3_Container.Controls.Add(layoutControl2);
+            dockPanel3_Container.Location = new Point(1, 35);
+            dockPanel3_Container.Name = "dockPanel3_Container";
+            dockPanel3_Container.Size = new Size(393, 196);
+            dockPanel3_Container.TabIndex = 0;
+            // 
+            // layoutControl2
+            // 
+            layoutControl2.Controls.Add(setFlagsEditCtrl1);
+            layoutControl2.Controls.Add(imgCmbSchemeType);
+            layoutControl2.Controls.Add(txtNo);
+            layoutControl2.Controls.Add(txtName);
+            layoutControl2.Controls.Add(btnSave);
+            layoutControl2.Controls.Add(memoDescription);
+            layoutControl2.Dock = DockStyle.Fill;
+            layoutControl2.Location = new Point(0, 0);
+            layoutControl2.Name = "layoutControl2";
+            layoutControl2.OptionsCustomizationForm.DesignTimeCustomizationFormPositionAndSize = new Rectangle(71, 697, 975, 600);
+            layoutControl2.Root = layoutControlGroup3;
+            layoutControl2.Size = new Size(393, 196);
+            layoutControl2.TabIndex = 0;
+            layoutControl2.Text = "layoutControl2";
+            // 
+            // setFlagsEditCtrl1
+            // 
+            setFlagsEditCtrl1.Location = new Point(262, 44);
+            setFlagsEditCtrl1.Margin = new Padding(6, 8, 6, 8);
+            setFlagsEditCtrl1.Name = "setFlagsEditCtrl1";
+            setFlagsEditCtrl1.Size = new Size(119, 28);
+            setFlagsEditCtrl1.TabIndex = 3;
+            // 
+            // imgCmbSchemeType
+            // 
+            imgCmbSchemeType.Location = new Point(76, 44);
+            imgCmbSchemeType.Margin = new Padding(4, 5, 4, 5);
+            imgCmbSchemeType.Name = "imgCmbSchemeType";
+            imgCmbSchemeType.Properties.Buttons.AddRange(new EditorButton[] { new EditorButton(ButtonPredefines.Combo) });
+            imgCmbSchemeType.Size = new Size(118, 28);
+            imgCmbSchemeType.StyleController = layoutControl2;
+            imgCmbSchemeType.TabIndex = 4;
+            // 
+            // txtNo
+            // 
+            txtNo.Location = new Point(76, 12);
+            txtNo.Margin = new Padding(4, 5, 4, 5);
+            txtNo.Name = "txtNo";
+            txtNo.Size = new Size(118, 28);
+            txtNo.StyleController = layoutControl2;
+            txtNo.TabIndex = 0;
+            // 
+            // txtName
+            // 
+            txtName.Location = new Point(262, 12);
+            txtName.Margin = new Padding(4, 5, 4, 5);
+            txtName.Name = "txtName";
+            txtName.Size = new Size(119, 28);
+            txtName.StyleController = layoutControl2;
+            txtName.TabIndex = 2;
+            // 
+            // btnSave
+            // 
+            btnSave.Appearance.BackColor = DevExpress.LookAndFeel.DXSkinColors.FillColors.Question;
+            btnSave.Appearance.Options.UseBackColor = true;
+            btnSave.Location = new Point(120, 144);
+            btnSave.Name = "btnSave";
+            btnSave.Size = new Size(153, 32);
+            btnSave.StyleController = layoutControl2;
+            btnSave.TabIndex = 6;
+            btnSave.Text = "淇濆瓨";
+            btnSave.Click += btnSave_Click;
+            // 
+            // memoDescription
+            // 
+            memoDescription.Location = new Point(76, 76);
+            memoDescription.MenuManager = ribbon;
+            memoDescription.Name = "memoDescription";
+            memoDescription.Properties.ScrollBars = ScrollBars.Horizontal;
+            memoDescription.Size = new Size(305, 56);
+            memoDescription.StyleController = layoutControl2;
+            memoDescription.TabIndex = 5;
+            // 
+            // layoutControlGroup3
+            // 
+            layoutControlGroup3.EnableIndentsWithoutBorders = DevExpress.Utils.DefaultBoolean.True;
+            layoutControlGroup3.GroupBordersVisible = false;
+            layoutControlGroup3.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutControlItem5, layoutControlItem13, layoutControlItem14, layoutControlItem12, layoutControlItem3, layoutControlItem11 });
+            layoutControlGroup3.Name = "Root";
+            layoutControlGroup3.Size = new Size(393, 196);
+            layoutControlGroup3.TextVisible = false;
+            // 
+            // layoutControlItem5
+            // 
+            layoutControlItem5.Control = btnSave;
+            layoutControlItem5.Location = new Point(0, 124);
+            layoutControlItem5.Name = "layoutControlItem5";
+            layoutControlItem5.Padding = new DevExpress.XtraLayout.Utils.Padding(110, 110, 10, 10);
+            layoutControlItem5.Size = new Size(373, 52);
+            layoutControlItem5.TextSize = new Size(0, 0);
+            layoutControlItem5.TextVisible = false;
+            // 
+            // layoutControlItem13
+            // 
+            layoutControlItem13.AppearanceItemCaption.Options.UseTextOptions = true;
+            layoutControlItem13.AppearanceItemCaption.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Far;
+            layoutControlItem13.Control = txtNo;
+            layoutControlItem13.Location = new Point(0, 0);
+            layoutControlItem13.Name = "layoutControlItem13";
+            layoutControlItem13.Size = new Size(186, 32);
+            layoutControlItem13.Text = "缂栫爜:";
+            layoutControlItem13.TextSize = new Size(52, 22);
+            // 
+            // layoutControlItem14
+            // 
+            layoutControlItem14.AllowHtmlStringInCaption = true;
+            layoutControlItem14.AppearanceItemCaption.Options.UseTextOptions = true;
+            layoutControlItem14.AppearanceItemCaption.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Far;
+            layoutControlItem14.Control = txtName;
+            layoutControlItem14.Location = new Point(186, 0);
+            layoutControlItem14.Name = "layoutControlItem14";
+            layoutControlItem14.Size = new Size(187, 32);
+            layoutControlItem14.Text = "<color=red>*</color>鍚嶇О:";
+            layoutControlItem14.TextSize = new Size(52, 22);
+            // 
+            // layoutControlItem12
+            // 
+            layoutControlItem12.AllowHtmlStringInCaption = true;
+            layoutControlItem12.AppearanceItemCaption.Options.UseTextOptions = true;
+            layoutControlItem12.AppearanceItemCaption.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Far;
+            layoutControlItem12.Control = imgCmbSchemeType;
+            layoutControlItem12.Location = new Point(0, 32);
+            layoutControlItem12.Name = "layoutControlItem12";
+            layoutControlItem12.Size = new Size(186, 32);
+            layoutControlItem12.Text = "<color=red>*</color>绫诲瀷:";
+            layoutControlItem12.TextSize = new Size(52, 22);
+            // 
+            // layoutControlItem3
+            // 
+            layoutControlItem3.AppearanceItemCaption.Options.UseTextOptions = true;
+            layoutControlItem3.AppearanceItemCaption.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Far;
+            layoutControlItem3.Control = memoDescription;
+            layoutControlItem3.Location = new Point(0, 64);
+            layoutControlItem3.Name = "layoutControlItem3";
+            layoutControlItem3.Size = new Size(373, 60);
+            layoutControlItem3.Text = "璇存槑:";
+            layoutControlItem3.TextSize = new Size(52, 22);
+            // 
+            // layoutControlItem11
+            // 
+            layoutControlItem11.AllowHtmlStringInCaption = true;
+            layoutControlItem11.AppearanceItemCaption.Options.UseTextOptions = true;
+            layoutControlItem11.AppearanceItemCaption.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Far;
+            layoutControlItem11.Control = setFlagsEditCtrl1;
+            layoutControlItem11.Location = new Point(186, 32);
+            layoutControlItem11.Name = "layoutControlItem11";
+            layoutControlItem11.Size = new Size(187, 32);
+            layoutControlItem11.Text = "鏍囩:";
+            layoutControlItem11.TextSize = new Size(52, 22);
+            // 
+            // dockPanelParterList
+            // 
+            dockPanelParterList.Controls.Add(dockPanel2_Container);
+            dockPanelParterList.Dock = DevExpress.XtraBars.Docking.DockingStyle.Bottom;
+            dockPanelParterList.ID = new Guid("7be297a3-864b-4041-9aee-de9c1d1f1b52");
+            dockPanelParterList.Location = new Point(0, 757);
+            dockPanelParterList.Name = "dockPanelParterList";
+            dockPanelParterList.OriginalSize = new Size(200, 347);
+            dockPanelParterList.Size = new Size(1175, 347);
+            dockPanelParterList.Text = "鏋勫缓鍒楄〃";
+            // 
+            // dockPanel2_Container
+            // 
+            dockPanel2_Container.Controls.Add(tabPane1);
+            dockPanel2_Container.Location = new Point(0, 35);
+            dockPanel2_Container.Name = "dockPanel2_Container";
+            dockPanel2_Container.Size = new Size(1175, 312);
+            dockPanel2_Container.TabIndex = 0;
             // 
             // tabPane1
             // 
@@ -377,435 +781,6 @@
             panelContainer1.Size = new Size(200, 200);
             panelContainer1.Text = "panelContainer1";
             // 
-            // gridControl2
-            // 
-            gridControl2.DataSource = setSchemeParterRecordItemBindingSource;
-            gridControl2.Location = new Point(0, 487);
-            gridControl2.MainView = gridView2;
-            gridControl2.MenuManager = ribbon;
-            gridControl2.Name = "gridControl2";
-            gridControl2.Size = new Size(393, 230);
-            gridControl2.TabIndex = 0;
-            gridControl2.ViewCollection.AddRange(new DevExpress.XtraGrid.Views.Base.BaseView[] { gridView2 });
-            // 
-            // setSchemeParterRecordItemBindingSource
-            // 
-            setSchemeParterRecordItemBindingSource.DataSource = typeof(SetSchemeParterRecordItem);
-            // 
-            // gridView2
-            // 
-            gridView2.Columns.AddRange(new DevExpress.XtraGrid.Columns.GridColumn[] { colName1, colAfterValue, colBeforeValue });
-            gridView2.GridControl = gridControl2;
-            gridView2.Name = "gridView2";
-            // 
-            // colName1
-            // 
-            colName1.FieldName = "Name";
-            colName1.MinWidth = 30;
-            colName1.Name = "colName1";
-            colName1.Visible = true;
-            colName1.VisibleIndex = 0;
-            colName1.Width = 112;
-            // 
-            // colAfterValue
-            // 
-            colAfterValue.Caption = "鍙樻洿鍓�";
-            colAfterValue.FieldName = "AfterValue";
-            colAfterValue.MinWidth = 30;
-            colAfterValue.Name = "colAfterValue";
-            colAfterValue.Visible = true;
-            colAfterValue.VisibleIndex = 1;
-            colAfterValue.Width = 112;
-            // 
-            // colBeforeValue
-            // 
-            colBeforeValue.Caption = "鍙樻洿鍚�";
-            colBeforeValue.FieldName = "BeforeValue";
-            colBeforeValue.MinWidth = 30;
-            colBeforeValue.Name = "colBeforeValue";
-            colBeforeValue.Visible = true;
-            colBeforeValue.VisibleIndex = 2;
-            colBeforeValue.Width = 112;
-            // 
-            // dockManager1
-            // 
-            dockManager1.DockingOptions.ShowAutoHideButton = false;
-            dockManager1.DockingOptions.ShowCloseButton = false;
-            dockManager1.DockingOptions.ShowMaximizeButton = false;
-            dockManager1.DockingOptions.ShowMinimizeButton = false;
-            dockManager1.Form = this;
-            dockManager1.RootPanels.AddRange(new DevExpress.XtraBars.Docking.DockPanel[] { dockPanelMenu, dockPanel5, dockPanelParterList });
-            dockManager1.Style = DevExpress.XtraBars.Docking2010.Views.DockingViewStyle.Light;
-            dockManager1.TopZIndexControls.AddRange(new string[] { "DevExpress.XtraBars.BarDockControl", "DevExpress.XtraBars.StandaloneBarDockControl", "System.Windows.Forms.MenuStrip", "System.Windows.Forms.StatusStrip", "System.Windows.Forms.StatusBar", "DevExpress.XtraBars.Ribbon.RibbonStatusBar", "DevExpress.XtraBars.Ribbon.RibbonControl", "DevExpress.XtraBars.Navigation.OfficeNavigationBar", "DevExpress.XtraBars.Navigation.TileNavPane", "DevExpress.XtraBars.TabFormControl", "DevExpress.XtraBars.FluentDesignSystem.FluentDesignFormControl", "DevExpress.XtraBars.ToolbarForm.ToolbarFormControl" });
-            // 
-            // dockPanelMenu
-            // 
-            dockPanelMenu.Controls.Add(controlContainer1);
-            dockPanelMenu.Dock = DevExpress.XtraBars.Docking.DockingStyle.Top;
-            dockPanelMenu.FloatVertical = true;
-            dockPanelMenu.ID = new Guid("1bb3525e-4915-41ae-84bf-f32262890542");
-            dockPanelMenu.Location = new Point(0, 48);
-            dockPanelMenu.Name = "dockPanelMenu";
-            dockPanelMenu.OriginalSize = new Size(200, 94);
-            dockPanelMenu.Size = new Size(1569, 94);
-            dockPanelMenu.Text = "鑿滃崟";
-            // 
-            // controlContainer1
-            // 
-            controlContainer1.Controls.Add(layoutControl3);
-            controlContainer1.Location = new Point(0, 34);
-            controlContainer1.Name = "controlContainer1";
-            controlContainer1.Size = new Size(1569, 59);
-            controlContainer1.TabIndex = 0;
-            // 
-            // layoutControl3
-            // 
-            layoutControl3.Controls.Add(buttonEdit);
-            layoutControl3.Dock = DockStyle.Fill;
-            layoutControl3.Location = new Point(0, 0);
-            layoutControl3.Name = "layoutControl3";
-            layoutControl3.OptionsCustomizationForm.DesignTimeCustomizationFormPositionAndSize = new Rectangle(724, 181, 975, 600);
-            layoutControl3.Root = layoutControlGroup4;
-            layoutControl3.Size = new Size(1569, 59);
-            layoutControl3.TabIndex = 0;
-            layoutControl3.Text = "layoutControl3";
-            // 
-            // buttonEdit
-            // 
-            buttonEdit.Location = new Point(12, 12);
-            buttonEdit.MenuManager = ribbon;
-            buttonEdit.Name = "buttonEdit";
-            editorButtonImageOptions2.Location = ImageLocation.MiddleLeft;
-            editorButtonImageOptions2.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("editorButtonImageOptions2.SvgImage");
-            editorButtonImageOptions2.SvgImageSize = new Size(18, 18);
-            buttonEdit.Properties.Buttons.AddRange(new EditorButton[] { new EditorButton(ButtonPredefines.Glyph, "涓�閿樉闅�", -1, true, true, false, editorButtonImageOptions2, new DevExpress.Utils.KeyShortcut(Keys.None), serializableAppearanceObject5, serializableAppearanceObject6, serializableAppearanceObject7, serializableAppearanceObject8, "", "showhide", null, DevExpress.Utils.ToolTipAnchor.Default) });
-            buttonEdit.Properties.TextEditStyle = TextEditStyles.HideTextEditor;
-            buttonEdit.Size = new Size(144, 37);
-            buttonEdit.StyleController = layoutControl3;
-            buttonEdit.TabIndex = 0;
-            buttonEdit.ButtonClick += buttonEdit_ButtonClick;
-            // 
-            // layoutControlGroup4
-            // 
-            layoutControlGroup4.EnableIndentsWithoutBorders = DevExpress.Utils.DefaultBoolean.True;
-            layoutControlGroup4.GroupBordersVisible = false;
-            layoutControlGroup4.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutControlItem6, emptySpaceItem1 });
-            layoutControlGroup4.Name = "Root";
-            layoutControlGroup4.Size = new Size(1543, 61);
-            layoutControlGroup4.TextVisible = false;
-            // 
-            // layoutControlItem6
-            // 
-            layoutControlItem6.ContentHorzAlignment = DevExpress.Utils.HorzAlignment.Center;
-            layoutControlItem6.ContentVertAlignment = DevExpress.Utils.VertAlignment.Center;
-            layoutControlItem6.Control = buttonEdit;
-            layoutControlItem6.HighlightFocusedItem = DevExpress.Utils.DefaultBoolean.False;
-            layoutControlItem6.Location = new Point(0, 0);
-            layoutControlItem6.Name = "layoutControlItem6";
-            layoutControlItem6.Size = new Size(148, 41);
-            layoutControlItem6.TextSize = new Size(0, 0);
-            layoutControlItem6.TextVisible = false;
-            // 
-            // emptySpaceItem1
-            // 
-            emptySpaceItem1.AllowHotTrack = false;
-            emptySpaceItem1.Location = new Point(148, 0);
-            emptySpaceItem1.Name = "emptySpaceItem1";
-            emptySpaceItem1.Size = new Size(1375, 41);
-            emptySpaceItem1.TextSize = new Size(0, 0);
-            // 
-            // dockPanel5
-            // 
-            dockPanel5.Controls.Add(dockPanelChangeRecord);
-            dockPanel5.Controls.Add(dockPanelScheme);
-            dockPanel5.Dock = DevExpress.XtraBars.Docking.DockingStyle.Right;
-            dockPanel5.ID = new Guid("4f9140be-dc44-4cc6-9924-d22c117f4a97");
-            dockPanel5.Location = new Point(1175, 142);
-            dockPanel5.Name = "dockPanel5";
-            dockPanel5.OriginalSize = new Size(394, 200);
-            dockPanel5.Size = new Size(394, 962);
-            dockPanel5.Text = "panelContainer1";
-            // 
-            // dockPanelChangeRecord
-            // 
-            dockPanelChangeRecord.Controls.Add(dockPanel1_Container);
-            dockPanelChangeRecord.Dock = DevExpress.XtraBars.Docking.DockingStyle.Fill;
-            dockPanelChangeRecord.ID = new Guid("2c97b548-e9c5-4899-b8e1-203e6decf6f7");
-            dockPanelChangeRecord.Location = new Point(0, 0);
-            dockPanelChangeRecord.Name = "dockPanelChangeRecord";
-            dockPanelChangeRecord.OriginalSize = new Size(394, 309);
-            dockPanelChangeRecord.Size = new Size(394, 751);
-            dockPanelChangeRecord.Text = "鍙樻洿璁板綍";
-            // 
-            // dockPanel1_Container
-            // 
-            dockPanel1_Container.Controls.Add(layoutControl1);
-            dockPanel1_Container.Location = new Point(1, 34);
-            dockPanel1_Container.Name = "dockPanel1_Container";
-            dockPanel1_Container.Size = new Size(393, 717);
-            dockPanel1_Container.TabIndex = 0;
-            // 
-            // layoutControl1
-            // 
-            layoutControl1.Controls.Add(gridControl2);
-            layoutControl1.Controls.Add(gridControl1);
-            layoutControl1.Dock = DockStyle.Fill;
-            layoutControl1.Location = new Point(0, 0);
-            layoutControl1.Name = "layoutControl1";
-            layoutControl1.OptionsCustomizationForm.DesignTimeCustomizationFormPositionAndSize = new Rectangle(565, 389, 975, 600);
-            layoutControl1.Root = Root;
-            layoutControl1.Size = new Size(393, 717);
-            layoutControl1.TabIndex = 0;
-            layoutControl1.Text = "layoutControl1";
-            // 
-            // Root
-            // 
-            Root.EnableIndentsWithoutBorders = DevExpress.Utils.DefaultBoolean.True;
-            Root.GroupBordersVisible = false;
-            Root.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutControlGroup1, layoutControlGroup2 });
-            Root.Name = "Root";
-            Root.Padding = new DevExpress.XtraLayout.Utils.Padding(0, 0, 0, 0);
-            Root.Size = new Size(393, 717);
-            Root.TextVisible = false;
-            // 
-            // layoutControlGroup1
-            // 
-            layoutControlGroup1.ExpandButtonVisible = true;
-            layoutControlGroup1.GroupStyle = DevExpress.Utils.GroupStyle.Title;
-            layoutControlGroup1.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutControlItem1 });
-            layoutControlGroup1.Location = new Point(0, 0);
-            layoutControlGroup1.Name = "layoutControlGroup1";
-            layoutControlGroup1.Padding = new DevExpress.XtraLayout.Utils.Padding(0, 0, 0, 0);
-            layoutControlGroup1.ShowInCustomizationForm = false;
-            layoutControlGroup1.Size = new Size(393, 454);
-            layoutControlGroup1.Spacing = new DevExpress.XtraLayout.Utils.Padding(0, 0, 0, 0);
-            layoutControlGroup1.Text = "璁板綍鍒楄〃";
-            // 
-            // layoutControlItem1
-            // 
-            layoutControlItem1.Control = gridControl1;
-            layoutControlItem1.HighlightFocusedItem = DevExpress.Utils.DefaultBoolean.True;
-            layoutControlItem1.Location = new Point(0, 0);
-            layoutControlItem1.Name = "layoutControlItem1";
-            layoutControlItem1.Padding = new DevExpress.XtraLayout.Utils.Padding(0, 0, 0, 0);
-            layoutControlItem1.Size = new Size(393, 421);
-            layoutControlItem1.TextSize = new Size(0, 0);
-            layoutControlItem1.TextVisible = false;
-            // 
-            // layoutControlGroup2
-            // 
-            layoutControlGroup2.ExpandButtonVisible = true;
-            layoutControlGroup2.GroupStyle = DevExpress.Utils.GroupStyle.Title;
-            layoutControlGroup2.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutControlItem2 });
-            layoutControlGroup2.Location = new Point(0, 454);
-            layoutControlGroup2.Name = "layoutControlGroup2";
-            layoutControlGroup2.Padding = new DevExpress.XtraLayout.Utils.Padding(0, 0, 0, 0);
-            layoutControlGroup2.ShowInCustomizationForm = false;
-            layoutControlGroup2.Size = new Size(393, 263);
-            layoutControlGroup2.Spacing = new DevExpress.XtraLayout.Utils.Padding(0, 0, 0, 0);
-            layoutControlGroup2.Text = "璁板綍璇︽儏";
-            // 
-            // layoutControlItem2
-            // 
-            layoutControlItem2.Control = gridControl2;
-            layoutControlItem2.HighlightFocusedItem = DevExpress.Utils.DefaultBoolean.True;
-            layoutControlItem2.Location = new Point(0, 0);
-            layoutControlItem2.Name = "layoutControlItem2";
-            layoutControlItem2.Padding = new DevExpress.XtraLayout.Utils.Padding(0, 0, 0, 0);
-            layoutControlItem2.Size = new Size(393, 230);
-            layoutControlItem2.TextSize = new Size(0, 0);
-            layoutControlItem2.TextVisible = false;
-            // 
-            // dockPanelScheme
-            // 
-            dockPanelScheme.Controls.Add(dockPanel3_Container);
-            dockPanelScheme.Dock = DevExpress.XtraBars.Docking.DockingStyle.Fill;
-            dockPanelScheme.ID = new Guid("39552842-60b6-4e4d-b215-438810b7a737");
-            dockPanelScheme.Location = new Point(0, 751);
-            dockPanelScheme.Name = "dockPanelScheme";
-            dockPanelScheme.OriginalSize = new Size(394, 87);
-            dockPanelScheme.Size = new Size(394, 211);
-            dockPanelScheme.Text = "鏂规淇℃伅";
-            // 
-            // dockPanel3_Container
-            // 
-            dockPanel3_Container.Controls.Add(layoutControl2);
-            dockPanel3_Container.Location = new Point(1, 35);
-            dockPanel3_Container.Name = "dockPanel3_Container";
-            dockPanel3_Container.Size = new Size(393, 176);
-            dockPanel3_Container.TabIndex = 0;
-            // 
-            // layoutControl2
-            // 
-            layoutControl2.Controls.Add(setFlagsEditCtrl1);
-            layoutControl2.Controls.Add(imgCmbSchemeType);
-            layoutControl2.Controls.Add(txtNo);
-            layoutControl2.Controls.Add(txtName);
-            layoutControl2.Controls.Add(btnSave);
-            layoutControl2.Controls.Add(memoDescription);
-            layoutControl2.Dock = DockStyle.Fill;
-            layoutControl2.Location = new Point(0, 0);
-            layoutControl2.Name = "layoutControl2";
-            layoutControl2.OptionsCustomizationForm.DesignTimeCustomizationFormPositionAndSize = new Rectangle(71, 697, 975, 600);
-            layoutControl2.Root = layoutControlGroup3;
-            layoutControl2.Size = new Size(393, 176);
-            layoutControl2.TabIndex = 0;
-            layoutControl2.Text = "layoutControl2";
-            // 
-            // setFlagsEditCtrl1
-            // 
-            setFlagsEditCtrl1.Location = new Point(262, 44);
-            setFlagsEditCtrl1.Margin = new Padding(6, 8, 6, 8);
-            setFlagsEditCtrl1.Name = "setFlagsEditCtrl1";
-            setFlagsEditCtrl1.Size = new Size(119, 28);
-            setFlagsEditCtrl1.TabIndex = 3;
-            // 
-            // imgCmbSchemeType
-            // 
-            imgCmbSchemeType.Location = new Point(76, 44);
-            imgCmbSchemeType.Margin = new Padding(4, 5, 4, 5);
-            imgCmbSchemeType.Name = "imgCmbSchemeType";
-            imgCmbSchemeType.Properties.Buttons.AddRange(new EditorButton[] { new EditorButton(ButtonPredefines.Combo) });
-            imgCmbSchemeType.Size = new Size(118, 28);
-            imgCmbSchemeType.StyleController = layoutControl2;
-            imgCmbSchemeType.TabIndex = 4;
-            // 
-            // txtNo
-            // 
-            txtNo.Location = new Point(76, 12);
-            txtNo.Margin = new Padding(4, 5, 4, 5);
-            txtNo.Name = "txtNo";
-            txtNo.Size = new Size(118, 28);
-            txtNo.StyleController = layoutControl2;
-            txtNo.TabIndex = 0;
-            // 
-            // txtName
-            // 
-            txtName.Location = new Point(262, 12);
-            txtName.Margin = new Padding(4, 5, 4, 5);
-            txtName.Name = "txtName";
-            txtName.Size = new Size(119, 28);
-            txtName.StyleController = layoutControl2;
-            txtName.TabIndex = 2;
-            // 
-            // btnSave
-            // 
-            btnSave.Appearance.BackColor = DevExpress.LookAndFeel.DXSkinColors.FillColors.Question;
-            btnSave.Appearance.Options.UseBackColor = true;
-            btnSave.Location = new Point(120, 124);
-            btnSave.Name = "btnSave";
-            btnSave.Size = new Size(153, 32);
-            btnSave.StyleController = layoutControl2;
-            btnSave.TabIndex = 6;
-            btnSave.Text = "淇濆瓨";
-            btnSave.Click += btnSave_Click;
-            // 
-            // memoDescription
-            // 
-            memoDescription.Location = new Point(76, 76);
-            memoDescription.MenuManager = ribbon;
-            memoDescription.Name = "memoDescription";
-            memoDescription.Properties.ScrollBars = ScrollBars.Horizontal;
-            memoDescription.Size = new Size(305, 36);
-            memoDescription.StyleController = layoutControl2;
-            memoDescription.TabIndex = 5;
-            // 
-            // layoutControlGroup3
-            // 
-            layoutControlGroup3.EnableIndentsWithoutBorders = DevExpress.Utils.DefaultBoolean.True;
-            layoutControlGroup3.GroupBordersVisible = false;
-            layoutControlGroup3.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutControlItem5, layoutControlItem13, layoutControlItem14, layoutControlItem12, layoutControlItem3, layoutControlItem11 });
-            layoutControlGroup3.Name = "Root";
-            layoutControlGroup3.Size = new Size(393, 176);
-            layoutControlGroup3.TextVisible = false;
-            // 
-            // layoutControlItem5
-            // 
-            layoutControlItem5.Control = btnSave;
-            layoutControlItem5.Location = new Point(0, 104);
-            layoutControlItem5.Name = "layoutControlItem5";
-            layoutControlItem5.Padding = new DevExpress.XtraLayout.Utils.Padding(110, 110, 10, 10);
-            layoutControlItem5.Size = new Size(373, 52);
-            layoutControlItem5.TextSize = new Size(0, 0);
-            layoutControlItem5.TextVisible = false;
-            // 
-            // layoutControlItem13
-            // 
-            layoutControlItem13.AppearanceItemCaption.Options.UseTextOptions = true;
-            layoutControlItem13.AppearanceItemCaption.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Far;
-            layoutControlItem13.Control = txtNo;
-            layoutControlItem13.Location = new Point(0, 0);
-            layoutControlItem13.Name = "layoutControlItem13";
-            layoutControlItem13.Size = new Size(186, 32);
-            layoutControlItem13.Text = "缂栫爜:";
-            layoutControlItem13.TextSize = new Size(52, 22);
-            // 
-            // layoutControlItem14
-            // 
-            layoutControlItem14.AllowHtmlStringInCaption = true;
-            layoutControlItem14.AppearanceItemCaption.Options.UseTextOptions = true;
-            layoutControlItem14.AppearanceItemCaption.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Far;
-            layoutControlItem14.Control = txtName;
-            layoutControlItem14.Location = new Point(186, 0);
-            layoutControlItem14.Name = "layoutControlItem14";
-            layoutControlItem14.Size = new Size(187, 32);
-            layoutControlItem14.Text = "<color=red>*</color>鍚嶇О:";
-            layoutControlItem14.TextSize = new Size(52, 22);
-            // 
-            // layoutControlItem12
-            // 
-            layoutControlItem12.AllowHtmlStringInCaption = true;
-            layoutControlItem12.AppearanceItemCaption.Options.UseTextOptions = true;
-            layoutControlItem12.AppearanceItemCaption.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Far;
-            layoutControlItem12.Control = imgCmbSchemeType;
-            layoutControlItem12.Location = new Point(0, 32);
-            layoutControlItem12.Name = "layoutControlItem12";
-            layoutControlItem12.Size = new Size(186, 32);
-            layoutControlItem12.Text = "<color=red>*</color>绫诲瀷:";
-            layoutControlItem12.TextSize = new Size(52, 22);
-            // 
-            // layoutControlItem3
-            // 
-            layoutControlItem3.AppearanceItemCaption.Options.UseTextOptions = true;
-            layoutControlItem3.AppearanceItemCaption.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Far;
-            layoutControlItem3.Control = memoDescription;
-            layoutControlItem3.Location = new Point(0, 64);
-            layoutControlItem3.Name = "layoutControlItem3";
-            layoutControlItem3.Size = new Size(373, 40);
-            layoutControlItem3.Text = "璇存槑:";
-            layoutControlItem3.TextSize = new Size(52, 22);
-            // 
-            // layoutControlItem11
-            // 
-            layoutControlItem11.AllowHtmlStringInCaption = true;
-            layoutControlItem11.AppearanceItemCaption.Options.UseTextOptions = true;
-            layoutControlItem11.AppearanceItemCaption.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Far;
-            layoutControlItem11.Control = setFlagsEditCtrl1;
-            layoutControlItem11.Location = new Point(186, 32);
-            layoutControlItem11.Name = "layoutControlItem11";
-            layoutControlItem11.Size = new Size(187, 32);
-            layoutControlItem11.Text = "鏍囩:";
-            layoutControlItem11.TextSize = new Size(52, 22);
-            // 
-            // dockPanelParterList
-            // 
-            dockPanelParterList.Controls.Add(dockPanel2_Container);
-            dockPanelParterList.Dock = DevExpress.XtraBars.Docking.DockingStyle.Bottom;
-            dockPanelParterList.ID = new Guid("7be297a3-864b-4041-9aee-de9c1d1f1b52");
-            dockPanelParterList.Location = new Point(0, 757);
-            dockPanelParterList.Name = "dockPanelParterList";
-            dockPanelParterList.OriginalSize = new Size(200, 347);
-            dockPanelParterList.Size = new Size(1175, 347);
-            dockPanelParterList.Text = "鏋勫缓鍒楄〃";
-            // 
-            // dockPanel2_Container
-            // 
-            dockPanel2_Container.Controls.Add(tabPane1);
-            dockPanel2_Container.Location = new Point(0, 35);
-            dockPanel2_Container.Name = "dockPanel2_Container";
-            dockPanel2_Container.Size = new Size(1175, 312);
-            dockPanel2_Container.TabIndex = 0;
-            // 
             // dxErrorProvider1
             // 
             dxErrorProvider1.ContainerControl = this;
@@ -835,7 +810,6 @@
             Controls.Add(sidePanel3dModel);
             Controls.Add(dockPanelParterList);
             Controls.Add(dockPanel5);
-            Controls.Add(dockPanelMenu);
             Controls.Add(ribbon);
             Name = "AddXhsSchemeDlg";
             Ribbon = ribbon;
@@ -846,30 +820,18 @@
             ((ISupportInitialize)gridView1).EndInit();
             ((ISupportInitialize)repositoryItemButtonEdit1).EndInit();
             ((ISupportInitialize)ribbon).EndInit();
-            ((ISupportInitialize)repositoryItemTextEdit1).EndInit();
-            ((ISupportInitialize)repositoryItemTextEdit2).EndInit();
-            ((ISupportInitialize)tabPane1).EndInit();
-            tabPane1.ResumeLayout(false);
-            tabPagePump.ResumeLayout(false);
-            tabPageValve.ResumeLayout(false);
-            tabPagePipe.ResumeLayout(false);
-            ((ISupportInitialize)gridControl2).EndInit();
-            ((ISupportInitialize)setSchemeParterRecordItemBindingSource).EndInit();
-            ((ISupportInitialize)gridView2).EndInit();
+            sidePanel3dModel.ResumeLayout(false);
+            sidePanel3dModel.PerformLayout();
+            ((ISupportInitialize)barManager1).EndInit();
             ((ISupportInitialize)dockManager1).EndInit();
-            dockPanelMenu.ResumeLayout(false);
-            controlContainer1.ResumeLayout(false);
-            ((ISupportInitialize)layoutControl3).EndInit();
-            layoutControl3.ResumeLayout(false);
-            ((ISupportInitialize)buttonEdit.Properties).EndInit();
-            ((ISupportInitialize)layoutControlGroup4).EndInit();
-            ((ISupportInitialize)layoutControlItem6).EndInit();
-            ((ISupportInitialize)emptySpaceItem1).EndInit();
             dockPanel5.ResumeLayout(false);
             dockPanelChangeRecord.ResumeLayout(false);
             dockPanel1_Container.ResumeLayout(false);
             ((ISupportInitialize)layoutControl1).EndInit();
             layoutControl1.ResumeLayout(false);
+            ((ISupportInitialize)gridControl2).EndInit();
+            ((ISupportInitialize)setSchemeParterRecordItemBindingSource).EndInit();
+            ((ISupportInitialize)gridView2).EndInit();
             ((ISupportInitialize)Root).EndInit();
             ((ISupportInitialize)layoutControlGroup1).EndInit();
             ((ISupportInitialize)layoutControlItem1).EndInit();
@@ -892,6 +854,11 @@
             ((ISupportInitialize)layoutControlItem11).EndInit();
             dockPanelParterList.ResumeLayout(false);
             dockPanel2_Container.ResumeLayout(false);
+            ((ISupportInitialize)tabPane1).EndInit();
+            tabPane1.ResumeLayout(false);
+            tabPagePump.ResumeLayout(false);
+            tabPageValve.ResumeLayout(false);
+            tabPagePipe.ResumeLayout(false);
             ((ISupportInitialize)dxErrorProvider1).EndInit();
             ((ISupportInitialize)layoutControlItem9).EndInit();
             ((ISupportInitialize)layoutControlItem10).EndInit();
@@ -936,8 +903,6 @@
         private DevExpress.XtraBars.Docking.ControlContainer dockPanel3_Container;
         private DevExpress.XtraGrid.Columns.GridColumn colDelete;
         private DevExpress.XtraEditors.Repository.RepositoryItemButtonEdit repositoryItemButtonEdit1;
-        private DevExpress.XtraEditors.Repository.RepositoryItemTextEdit repositoryItemTextEdit1;
-        private DevExpress.XtraEditors.Repository.RepositoryItemTextEdit repositoryItemTextEdit2;
         private DevExpress.XtraLayout.LayoutControl layoutControl1;
         private DevExpress.XtraLayout.LayoutControlGroup Root;
         private DevExpress.XtraLayout.LayoutControlGroup layoutControlGroup1;
@@ -962,12 +927,12 @@
         private DevExpress.XtraLayout.LayoutControlItem layoutControlItem14;
         private MemoEdit memoDescription;
         private DevExpress.XtraLayout.LayoutControlItem layoutControlItem3;
-        private DevExpress.XtraBars.Docking.DockPanel dockPanelMenu;
-        private DevExpress.XtraBars.Docking.ControlContainer controlContainer1;
-        private DevExpress.XtraLayout.LayoutControl layoutControl3;
-        private DevExpress.XtraLayout.LayoutControlGroup layoutControlGroup4;
-        private ButtonEdit buttonEdit;
-        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem6;
-        private DevExpress.XtraLayout.EmptySpaceItem emptySpaceItem1;
+        private DevExpress.XtraBars.BarDockControl barDockControlLeft;
+        private DevExpress.XtraBars.BarManager barManager1;
+        private DevExpress.XtraBars.Bar bar1;
+        private DevExpress.XtraBars.BarButtonItem barBtnFastShowHidden;
+        private DevExpress.XtraBars.BarDockControl barDockControlTop;
+        private DevExpress.XtraBars.BarDockControl barDockControlBottom;
+        private DevExpress.XtraBars.BarDockControl barDockControlRight;
     }
 }
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/01-add/AddXhsSchemeDlg.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/01-add/AddXhsSchemeDlg.cs
index 9b2e6e0..282d9e2 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/01-add/AddXhsSchemeDlg.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/01-add/AddXhsSchemeDlg.cs
@@ -38,8 +38,8 @@
                     };
                 }
             }
-
         }
+
 
 
         private HStation.Vmo.XhsProjectVmo _project = null;//椤圭洰
@@ -49,6 +49,30 @@
 
         private Yw.Model.HydroParterInfo _selected_parter = null; //閫夋嫨鏋勪欢
         private List<SetSchemeParterRecord> _set_record_list = null;
+
+
+        #region Initial
+
+        //鍒濆鍖栨枃浠舵牸寮�
+        private void InitialSchemeType()
+        {
+            this.imgCmbSchemeType.Properties.BeginUpdate();
+            this.imgCmbSchemeType.Properties.Items.Clear();
+            this.imgCmbSchemeType.Properties.Items.AddEnum(typeof(HStation.Xhs.eSchemeType), false);
+            this.imgCmbSchemeType.EditValue = eSchemeType.Common;
+            this.imgCmbSchemeType.Properties.EndUpdate();
+        }
+        //鍒濆鍖栨爣绛�
+        private async Task InitialFlags()
+        {
+            var allFlagList = await BLLFactory<Yw.BLL.SysFlag>.Instance.GetBySysType(HStation.Xhs.DataType.XhsScheme);
+            var allFlagNameList = allFlagList?.Select(x => x.Name).ToList();
+            this.setFlagsEditCtrl1.SetBindingData(allFlagNameList, null);
+        }
+
+        #endregion
+
+        #region SetBindingData
 
         /// <summary>
         /// 缁戝畾鏁版嵁
@@ -87,26 +111,9 @@
             FastShowHidden(false);
 
             InitialSchemeType();
-            await InitialFlags();
+            await InitialFlags(); 
         }
 
-        //鍒濆鍖栨枃浠舵牸寮�
-        private void InitialSchemeType()
-        {
-            this.imgCmbSchemeType.Properties.BeginUpdate();
-            this.imgCmbSchemeType.Properties.Items.Clear();
-            this.imgCmbSchemeType.Properties.Items.AddEnum(typeof(HStation.Xhs.eSchemeType), false);
-            this.imgCmbSchemeType.EditValue = eSchemeType.Common;
-            this.imgCmbSchemeType.Properties.EndUpdate();
-        }
-
-        //鍒濆鍖栨爣绛�
-        private async Task InitialFlags()
-        {
-            var allFlagList = await BLLFactory<Yw.BLL.SysFlag>.Instance.GetBySysType(HStation.Xhs.DataType.XhsScheme);
-            var allFlagNameList = allFlagList?.Select(x => x.Name).ToList();
-            this.setFlagsEditCtrl1.SetBindingData(allFlagNameList, null);
-        }
         private void SetBindingData(List<SetSchemeParterRecord> set_record_list = null)
         {
             _hydro_info = _hydro_info_init.Adapt<Yw.Model.HydroModelInfo, Yw.Model.HydroModelInfo>();
@@ -147,26 +154,8 @@
 
         }
 
-        //鎸夐挳
-        private void buttonEdit_ButtonClick(object sender, ButtonPressedEventArgs e)
-        {
-            if (e.Button.Tag is not string tag)
-            {
-                return;
-            }
-
-            switch (tag)
-            {
-                case "showhide":
-                    {
-                        _show_hidden = !_show_hidden;
-                        FastShowHidden(_show_hidden);
-                    }
-                    break;
-                default:
-                    break;
-            }
-        }
+  
+        #endregion
 
         #region Bimface
 
@@ -215,8 +204,18 @@
 
         #endregion
 
+        #region Menu
+
+    
         #region FastShowHidden
 
+        //涓�閿樉闅�
+        private void barBtnFastShowHidden_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
+        {
+            _show_hidden = !_show_hidden;
+            FastShowHidden(_show_hidden);
+        }
+          
         private bool _show_hidden = false;
         private async void FastShowHidden(bool visible)
         {
@@ -238,30 +237,9 @@
 
         #endregion
 
-        #region GridView
-
-        private void gridView1_FocusedRowChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e)
-        {
-            var row = this.gridView1.GetRow(e.FocusedRowHandle) as SetSchemeParterRecord;
-            this.setSchemeParterRecordItemBindingSource.DataSource = row?.Items;
-            this.setSchemeParterRecordItemBindingSource.ResetBindings(false);
-        }
-
-        private void gridView1_RowCellClick(object sender, DevExpress.XtraGrid.Views.Grid.RowCellClickEventArgs e)
-        {
-            if (e.Column == this.colDelete)
-            {
-                var row = this.gridView1.GetRow(e.RowHandle) as SetSchemeParterRecord;
-                _set_record_list.Remove(row);
-                this.setSchemeParterRecordBindingSource.ResetBindings(false);
-                SetBindingData(_set_record_list);
-
-            }
-        }
-
-
         #endregion
 
+        #region Save
 
         private bool Verify()
         {
@@ -336,6 +314,32 @@
 
         }
 
- 
+        #endregion
+
+        #region GridView
+
+        private void gridView1_FocusedRowChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e)
+        {
+            var row = this.gridView1.GetRow(e.FocusedRowHandle) as SetSchemeParterRecord;
+            this.setSchemeParterRecordItemBindingSource.DataSource = row?.Items;
+            this.setSchemeParterRecordItemBindingSource.ResetBindings(false);
+        }
+
+        private void gridView1_RowCellClick(object sender, DevExpress.XtraGrid.Views.Grid.RowCellClickEventArgs e)
+        {
+            if (e.Column == this.colDelete)
+            {
+                var row = this.gridView1.GetRow(e.RowHandle) as SetSchemeParterRecord;
+                _set_record_list.Remove(row);
+                this.setSchemeParterRecordBindingSource.ResetBindings(false);
+                SetBindingData(_set_record_list);
+
+            }
+        }
+
+
+        #endregion
+
+     
     }
 }
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/01-add/AddXhsSchemeDlg.resx b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/01-add/AddXhsSchemeDlg.resx
index 43b1db4..6a03bf9 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/01-add/AddXhsSchemeDlg.resx
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/01-add/AddXhsSchemeDlg.resx
@@ -142,13 +142,10 @@
         LDE2eiIgY2xhc3M9IlJlZCIgLz4NCiAgICA8L2c+DQogIDwvZz4NCjwvc3ZnPgs=
 </value>
   </data>
-  <metadata name="setSchemeParterRecordItemBindingSource.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
-    <value>608, 17</value>
+  <metadata name="barManager1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>17, 62</value>
   </metadata>
-  <metadata name="dockManager1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
-    <value>17, 17</value>
-  </metadata>
-  <data name="editorButtonImageOptions2.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+  <data name="barBtnFastShowHidden.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
         LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
@@ -172,6 +169,15 @@
         MC45LTItMnMwLjktMiwyLTJTMjYsMjIuOSwyNiwyNHoiIGNsYXNzPSJCbGFjayIgLz4NCjwvc3ZnPgs=
 </value>
   </data>
+  <metadata name="dockManager1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>17, 17</value>
+  </metadata>
+  <metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>110</value>
+  </metadata>
+  <metadata name="setSchemeParterRecordItemBindingSource.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>608, 17</value>
+  </metadata>
   <metadata name="dxErrorProvider1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
     <value>1042, 17</value>
   </metadata>
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/99-ctrl/XhsParterListCtrl.Designer.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/99-ctrl/XhsParterListCtrl.Designer.cs
new file mode 100644
index 0000000..ce013de
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/99-ctrl/XhsParterListCtrl.Designer.cs
@@ -0,0 +1,44 @@
+锘� namespace HStation.WinFrmUI
+{
+    partial class XhsParterListCtrl
+    {
+        /// <summary> 
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary> 
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Component Designer generated code
+
+        /// <summary> 
+        /// Required method for Designer support - do not modify 
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            SuspendLayout();
+            // 
+            // XhsParterListCtrl
+            // 
+            AutoScaleDimensions = new SizeF(10F, 22F);
+            AutoScaleMode = AutoScaleMode.Font;
+            Name = "XhsParterListCtrl";
+            Size = new Size(354, 874);
+            ResumeLayout(false);
+        }
+
+        #endregion
+    }
+}
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/99-ctrl/XhsParterListCtrl.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/99-ctrl/XhsParterListCtrl.cs
new file mode 100644
index 0000000..e5f19e0
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/99-ctrl/XhsParterListCtrl.cs
@@ -0,0 +1,21 @@
+锘縰sing DevExpress.XtraEditors;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace HStation.WinFrmUI 
+{
+    public partial class XhsParterListCtrl : DevExpress.XtraEditors.XtraUserControl
+    {
+        public XhsParterListCtrl()
+        {
+            InitializeComponent();
+        }
+    }
+}
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/99-ctrl/XhsParterListCtrl.resx b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/99-ctrl/XhsParterListCtrl.resx
new file mode 100644
index 0000000..8b2ff64
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/99-ctrl/XhsParterListCtrl.resx
@@ -0,0 +1,120 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!--
+    Microsoft ResX Schema
+
+    Version 2.0
+
+    The primary goals of this format is to allow a simple XML format
+    that is mostly human readable. The generation and parsing of the
+    various data types are done through the TypeConverter classes
+    associated with the data types.
+
+    Example:
+
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+
+    There are any number of "resheader" rows that contain simple
+    name/value pairs.
+
+    Each data row contains a name, and value. The row also contains a
+    type or mimetype. Type corresponds to a .NET class that support
+    text/value conversion through the TypeConverter architecture.
+    Classes that don't support this are serialized and stored with the
+    mimetype set.
+
+    The mimetype is used for serialized objects, and tells the
+    ResXResourceReader how to depersist the object. This is currently not
+    extensible. For a given mimetype the value must be set accordingly:
+
+    Note - application/x-microsoft.net.object.binary.base64 is the format
+    that the ResXResourceWriter will generate, however the reader can
+    read any of the formats listed below.
+
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/XhsProjectSimulationSchemeMgrPage.Designer.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/XhsProjectSimulationSchemeMgrPage.Designer.cs
new file mode 100644
index 0000000..bebd053
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/XhsProjectSimulationSchemeMgrPage.Designer.cs
@@ -0,0 +1,678 @@
+锘縰sing HStation.WinFrmUI.Xhs;
+
+namespace HStation.WinFrmUI
+{
+    partial class XhsProjectSimulationSchemeMgrPage
+    {
+        /// <summary> 
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary> 
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Component Designer generated code
+
+        /// <summary> 
+        /// Required method for Designer support - do not modify 
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            components = new Container();
+            ComponentResourceManager resources = new ComponentResourceManager(typeof(XhsProjectSimulationSchemeMgrPage));
+            ribbonControl1 = new DevExpress.XtraBars.Ribbon.RibbonControl();
+            barBtnHydroCheck = new DevExpress.XtraBars.BarButtonItem();
+            barBtnHydroCalcu = new DevExpress.XtraBars.BarButtonItem();
+            barBtnHydroExportInp = new DevExpress.XtraBars.BarButtonItem();
+            barBtnSave = new DevExpress.XtraBars.BarButtonItem();
+            barBtnHydroVisualList = new DevExpress.XtraBars.BarButtonItem();
+            barBtnFastShowHidden = new DevExpress.XtraBars.BarButtonItem();
+            barBtnMatchingList = new DevExpress.XtraBars.BarButtonItem();
+            barBtnUnMatchingList = new DevExpress.XtraBars.BarButtonItem();
+            barBtnSetList = new DevExpress.XtraBars.BarButtonItem();
+            barBtnSetPumpList = new DevExpress.XtraBars.BarButtonItem();
+            barBtnSetValveList = new DevExpress.XtraBars.BarButtonItem();
+            barBtnSetPipeList = new DevExpress.XtraBars.BarButtonItem();
+            barBtnSetElbowsList = new DevExpress.XtraBars.BarButtonItem();
+            barBtnSetThreelinkList = new DevExpress.XtraBars.BarButtonItem();
+            barBtnSetFourlinkList = new DevExpress.XtraBars.BarButtonItem();
+            barBtnSetTranslationList = new DevExpress.XtraBars.BarButtonItem();
+            barBtnSetExchangerList = new DevExpress.XtraBars.BarButtonItem();
+            barBtnSetJunctionList = new DevExpress.XtraBars.BarButtonItem();
+            barBtnParallelAnaly = new DevExpress.XtraBars.BarButtonItem();
+            barBtnSearch = new DevExpress.XtraBars.BarButtonItem();
+            barBtnGradingSet = new DevExpress.XtraBars.BarButtonItem();
+            barBtnGradingApply = new DevExpress.XtraBars.BarButtonItem();
+            barBtnRefresh = new DevExpress.XtraBars.BarButtonItem();
+            barBtnSetMark = new DevExpress.XtraBars.BarButtonItem();
+            barBtnSetReservoirList = new DevExpress.XtraBars.BarButtonItem();
+            barBtnSetTankList = new DevExpress.XtraBars.BarButtonItem();
+            barBtnSetWaterboxList = new DevExpress.XtraBars.BarButtonItem();
+            barBtnSetBluntheadList = new DevExpress.XtraBars.BarButtonItem();
+            barBtnSetNozzleList = new DevExpress.XtraBars.BarButtonItem();
+            barBtnSetHydrantList = new DevExpress.XtraBars.BarButtonItem();
+            barBtnSetMeterList = new DevExpress.XtraBars.BarButtonItem();
+            barBtnSetCompressorList = new DevExpress.XtraBars.BarButtonItem();
+            barBtnSetFlowmeterList = new DevExpress.XtraBars.BarButtonItem();
+            barBtnSetPressmeterList = new DevExpress.XtraBars.BarButtonItem();
+            barBtnLoadFlowDirection = new DevExpress.XtraBars.BarButtonItem();
+            barBtnUnloadFlowDirection = new DevExpress.XtraBars.BarButtonItem();
+            barBtnClearMark = new DevExpress.XtraBars.BarButtonItem();
+            batBtnCancelGradingApply = new DevExpress.XtraBars.BarButtonItem();
+            ribbonPage1 = new DevExpress.XtraBars.Ribbon.RibbonPage();
+            pageGroupMatching = new DevExpress.XtraBars.Ribbon.RibbonPageGroup();
+            pageGroupModel = new DevExpress.XtraBars.Ribbon.RibbonPageGroup();
+            ribbonPageGroup6 = new DevExpress.XtraBars.Ribbon.RibbonPageGroup();
+            ribbonPageGroup5 = new DevExpress.XtraBars.Ribbon.RibbonPageGroup();
+            ribbonPageGroup1 = new DevExpress.XtraBars.Ribbon.RibbonPageGroup();
+            ribbonPageGroup2 = new DevExpress.XtraBars.Ribbon.RibbonPageGroup();
+            ribbonPageGroup3 = new DevExpress.XtraBars.Ribbon.RibbonPageGroup();
+            ribbonPageGroup4 = new DevExpress.XtraBars.Ribbon.RibbonPageGroup();
+            tabPane1 = new DevExpress.XtraBars.Navigation.TabPane();
+            tabPageBimface = new DevExpress.XtraBars.Navigation.TabNavigationPage();
+            tabPageQ3d = new DevExpress.XtraBars.Navigation.TabNavigationPage();
+            dockManager1 = new DevExpress.XtraBars.Docking.DockManager(components);
+            docPnlBottom = new DevExpress.XtraBars.Docking.DockPanel();
+            controlContainerBottom = new DevExpress.XtraBars.Docking.ControlContainer();
+            docPnlRight = new DevExpress.XtraBars.Docking.DockPanel();
+            controlContainerRight = new DevExpress.XtraBars.Docking.ControlContainer();
+            svgImg32 = new DevExpress.Utils.SvgImageCollection(components);
+            rmSet = new DevExpress.XtraBars.Ribbon.RadialMenu(components);
+            toolboxControl1 = new DevExpress.XtraToolbox.ToolboxControl();
+            ((ISupportInitialize)ribbonControl1).BeginInit();
+            ((ISupportInitialize)tabPane1).BeginInit();
+            tabPane1.SuspendLayout();
+            ((ISupportInitialize)dockManager1).BeginInit();
+            docPnlBottom.SuspendLayout();
+            docPnlRight.SuspendLayout();
+            ((ISupportInitialize)svgImg32).BeginInit();
+            ((ISupportInitialize)rmSet).BeginInit();
+            SuspendLayout();
+            // 
+            // ribbonControl1
+            // 
+            ribbonControl1.EmptyAreaImageOptions.ImagePadding = new Padding(43, 47, 43, 47);
+            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 });
+            ribbonControl1.Location = new Point(0, 0);
+            ribbonControl1.Margin = new Padding(4, 5, 4, 5);
+            ribbonControl1.MaxItemId = 55;
+            ribbonControl1.Name = "ribbonControl1";
+            ribbonControl1.OptionsMenuMinWidth = 471;
+            ribbonControl1.Pages.AddRange(new DevExpress.XtraBars.Ribbon.RibbonPage[] { ribbonPage1 });
+            ribbonControl1.ShowApplicationButton = DevExpress.Utils.DefaultBoolean.False;
+            ribbonControl1.ShowPageHeadersMode = DevExpress.XtraBars.Ribbon.ShowPageHeadersMode.ShowOnMultiplePages;
+            ribbonControl1.ShowQatLocationSelector = false;
+            ribbonControl1.ShowToolbarCustomizeItem = false;
+            ribbonControl1.Size = new Size(1897, 148);
+            ribbonControl1.Toolbar.ShowCustomizeItem = false;
+            ribbonControl1.ToolbarLocation = DevExpress.XtraBars.Ribbon.RibbonQuickAccessToolbarLocation.Hidden;
+            // 
+            // barBtnHydroCheck
+            // 
+            barBtnHydroCheck.Caption = "妫�鏌�";
+            barBtnHydroCheck.Id = 1;
+            barBtnHydroCheck.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnHydroCheck.ImageOptions.SvgImage");
+            barBtnHydroCheck.Name = "barBtnHydroCheck";
+            barBtnHydroCheck.ItemClick += barBtnHydroCheck_ItemClick;
+            // 
+            // barBtnHydroCalcu
+            // 
+            barBtnHydroCalcu.Caption = "璁$畻";
+            barBtnHydroCalcu.Id = 2;
+            barBtnHydroCalcu.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnHydroCalcu.ImageOptions.SvgImage");
+            barBtnHydroCalcu.Name = "barBtnHydroCalcu";
+            barBtnHydroCalcu.ItemClick += barBtnHydroCalcu_ItemClick;
+            // 
+            // barBtnHydroExportInp
+            // 
+            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;
+            // 
+            // barBtnSave
+            // 
+            barBtnSave.Caption = "淇濆瓨";
+            barBtnSave.Id = 5;
+            barBtnSave.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnSave.ImageOptions.SvgImage");
+            barBtnSave.Name = "barBtnSave";
+            barBtnSave.ItemClick += barBtnSave_ItemClick;
+            // 
+            // barBtnHydroVisualList
+            // 
+            barBtnHydroVisualList.Caption = "鏋勪欢鏄庣粏";
+            barBtnHydroVisualList.Id = 8;
+            barBtnHydroVisualList.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnHydroVisualList.ImageOptions.SvgImage");
+            barBtnHydroVisualList.Name = "barBtnHydroVisualList";
+            barBtnHydroVisualList.ItemClick += barBtnHydroVisualList_ItemClick;
+            // 
+            // barBtnFastShowHidden
+            // 
+            barBtnFastShowHidden.Caption = "涓�閿樉闅�";
+            barBtnFastShowHidden.Id = 9;
+            barBtnFastShowHidden.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnFastShowHidden.ImageOptions.SvgImage");
+            barBtnFastShowHidden.Name = "barBtnFastShowHidden";
+            barBtnFastShowHidden.ItemClick += barBtnFastShowHidden_ItemClick;
+            // 
+            // barBtnMatchingList
+            // 
+            barBtnMatchingList.Caption = "鑷姩鍖归厤";
+            barBtnMatchingList.Id = 10;
+            barBtnMatchingList.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnMatchingList.ImageOptions.SvgImage");
+            barBtnMatchingList.Name = "barBtnMatchingList";
+            barBtnMatchingList.ItemClick += barBtnMatchingList_ItemClick;
+            // 
+            // barBtnUnMatchingList
+            // 
+            barBtnUnMatchingList.Caption = "鏈尮閰嶅垪琛�";
+            barBtnUnMatchingList.Id = 19;
+            barBtnUnMatchingList.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnUnMatchingList.ImageOptions.SvgImage");
+            barBtnUnMatchingList.Name = "barBtnUnMatchingList";
+            barBtnUnMatchingList.ItemClick += barBtnUnMatchingList_ItemClick;
+            // 
+            // barBtnSetList
+            // 
+            barBtnSetList.Caption = "鎵归噺閰嶇疆";
+            barBtnSetList.Id = 21;
+            barBtnSetList.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnSetList.ImageOptions.SvgImage");
+            barBtnSetList.Name = "barBtnSetList";
+            barBtnSetList.ItemClick += barBtnSetList_ItemClick;
+            // 
+            // barBtnSetPumpList
+            // 
+            barBtnSetPumpList.Caption = "姘存车";
+            barBtnSetPumpList.CloseRadialMenuOnItemClick = true;
+            barBtnSetPumpList.Id = 22;
+            barBtnSetPumpList.Name = "barBtnSetPumpList";
+            // 
+            // barBtnSetValveList
+            // 
+            barBtnSetValveList.Caption = "闃�闂�";
+            barBtnSetValveList.CloseRadialMenuOnItemClick = true;
+            barBtnSetValveList.Id = 23;
+            barBtnSetValveList.Name = "barBtnSetValveList";
+            // 
+            // barBtnSetPipeList
+            // 
+            barBtnSetPipeList.Caption = "绠¢亾";
+            barBtnSetPipeList.CloseRadialMenuOnItemClick = true;
+            barBtnSetPipeList.Id = 24;
+            barBtnSetPipeList.Name = "barBtnSetPipeList";
+            // 
+            // barBtnSetElbowsList
+            // 
+            barBtnSetElbowsList.Caption = "寮ご";
+            barBtnSetElbowsList.CloseRadialMenuOnItemClick = true;
+            barBtnSetElbowsList.Id = 25;
+            barBtnSetElbowsList.Name = "barBtnSetElbowsList";
+            // 
+            // barBtnSetThreelinkList
+            // 
+            barBtnSetThreelinkList.Caption = "涓夐��";
+            barBtnSetThreelinkList.CloseRadialMenuOnItemClick = true;
+            barBtnSetThreelinkList.Id = 26;
+            barBtnSetThreelinkList.Name = "barBtnSetThreelinkList";
+            // 
+            // barBtnSetFourlinkList
+            // 
+            barBtnSetFourlinkList.Caption = "鍥涢��";
+            barBtnSetFourlinkList.CloseRadialMenuOnItemClick = true;
+            barBtnSetFourlinkList.Id = 27;
+            barBtnSetFourlinkList.Name = "barBtnSetFourlinkList";
+            // 
+            // barBtnSetTranslationList
+            // 
+            barBtnSetTranslationList.Caption = "杩囨浮浠�";
+            barBtnSetTranslationList.CloseRadialMenuOnItemClick = true;
+            barBtnSetTranslationList.Id = 28;
+            barBtnSetTranslationList.Name = "barBtnSetTranslationList";
+            // 
+            // barBtnSetExchangerList
+            // 
+            barBtnSetExchangerList.Caption = "鎹㈢儹鍣�";
+            barBtnSetExchangerList.CloseRadialMenuOnItemClick = true;
+            barBtnSetExchangerList.Id = 29;
+            barBtnSetExchangerList.Name = "barBtnSetExchangerList";
+            // 
+            // barBtnSetJunctionList
+            // 
+            barBtnSetJunctionList.Caption = "杩炴帴鑺傜偣";
+            barBtnSetJunctionList.CloseRadialMenuOnItemClick = true;
+            barBtnSetJunctionList.Id = 30;
+            barBtnSetJunctionList.Name = "barBtnSetJunctionList";
+            // 
+            // barBtnParallelAnaly
+            // 
+            barBtnParallelAnaly.Caption = "骞惰仈鍒嗘瀽";
+            barBtnParallelAnaly.Id = 31;
+            barBtnParallelAnaly.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnParallelAnaly.ImageOptions.SvgImage");
+            barBtnParallelAnaly.Name = "barBtnParallelAnaly";
+            barBtnParallelAnaly.ItemClick += barBtnAnaly_ItemClick;
+            // 
+            // barBtnSearch
+            // 
+            barBtnSearch.Caption = "鏋勪欢鏌ヨ";
+            barBtnSearch.Id = 32;
+            barBtnSearch.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnSearch.ImageOptions.SvgImage");
+            barBtnSearch.Name = "barBtnSearch";
+            barBtnSearch.ItemClick += barBtnSearch_ItemClick;
+            // 
+            // barBtnGradingSet
+            // 
+            barBtnGradingSet.Caption = "閰嶇疆";
+            barBtnGradingSet.Id = 34;
+            barBtnGradingSet.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnGradingSet.ImageOptions.SvgImage");
+            barBtnGradingSet.Name = "barBtnGradingSet";
+            barBtnGradingSet.ItemClick += barBtnGradingSet_ItemClick;
+            // 
+            // barBtnGradingApply
+            // 
+            barBtnGradingApply.Caption = "搴旂敤";
+            barBtnGradingApply.Id = 35;
+            barBtnGradingApply.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnGradingApply.ImageOptions.SvgImage");
+            barBtnGradingApply.Name = "barBtnGradingApply";
+            barBtnGradingApply.ItemClick += barBtnGradingApply_ItemClick;
+            // 
+            // barBtnRefresh
+            // 
+            barBtnRefresh.Caption = "鍒锋柊";
+            barBtnRefresh.Id = 39;
+            barBtnRefresh.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnRefresh.ImageOptions.SvgImage");
+            barBtnRefresh.Name = "barBtnRefresh";
+            barBtnRefresh.ItemClick += barBtnRefresh_ItemClick;
+            // 
+            // barBtnSetMark
+            // 
+            barBtnSetMark.Caption = "璁剧疆";
+            barBtnSetMark.Id = 40;
+            barBtnSetMark.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnSetMark.ImageOptions.SvgImage");
+            barBtnSetMark.Name = "barBtnSetMark";
+            barBtnSetMark.ItemClick += barBtnSetMark_ItemClick;
+            // 
+            // barBtnSetReservoirList
+            // 
+            barBtnSetReservoirList.Caption = "姘村簱";
+            barBtnSetReservoirList.CloseRadialMenuOnItemClick = true;
+            barBtnSetReservoirList.Id = 41;
+            barBtnSetReservoirList.Name = "barBtnSetReservoirList";
+            // 
+            // barBtnSetTankList
+            // 
+            barBtnSetTankList.Caption = "姘存睜";
+            barBtnSetTankList.CloseRadialMenuOnItemClick = true;
+            barBtnSetTankList.Id = 42;
+            barBtnSetTankList.Name = "barBtnSetTankList";
+            // 
+            // barBtnSetWaterboxList
+            // 
+            barBtnSetWaterboxList.Caption = "姘寸";
+            barBtnSetWaterboxList.CloseRadialMenuOnItemClick = true;
+            barBtnSetWaterboxList.Id = 43;
+            barBtnSetWaterboxList.Name = "barBtnSetWaterboxList";
+            // 
+            // barBtnSetBluntheadList
+            // 
+            barBtnSetBluntheadList.Caption = "闂峰ご";
+            barBtnSetBluntheadList.CloseRadialMenuOnItemClick = true;
+            barBtnSetBluntheadList.Id = 44;
+            barBtnSetBluntheadList.Name = "barBtnSetBluntheadList";
+            // 
+            // barBtnSetNozzleList
+            // 
+            barBtnSetNozzleList.Caption = "鍠峰槾";
+            barBtnSetNozzleList.CloseRadialMenuOnItemClick = true;
+            barBtnSetNozzleList.Id = 45;
+            barBtnSetNozzleList.Name = "barBtnSetNozzleList";
+            // 
+            // barBtnSetHydrantList
+            // 
+            barBtnSetHydrantList.Caption = "娑堢伀鏍�";
+            barBtnSetHydrantList.Id = 46;
+            barBtnSetHydrantList.Name = "barBtnSetHydrantList";
+            // 
+            // barBtnSetMeterList
+            // 
+            barBtnSetMeterList.Caption = "姘磋〃";
+            barBtnSetMeterList.CloseRadialMenuOnItemClick = true;
+            barBtnSetMeterList.Id = 47;
+            barBtnSetMeterList.Name = "barBtnSetMeterList";
+            // 
+            // barBtnSetCompressorList
+            // 
+            barBtnSetCompressorList.Caption = "绌哄帇鏈�";
+            barBtnSetCompressorList.CloseRadialMenuOnItemClick = true;
+            barBtnSetCompressorList.Id = 48;
+            barBtnSetCompressorList.Name = "barBtnSetCompressorList";
+            // 
+            // barBtnSetFlowmeterList
+            // 
+            barBtnSetFlowmeterList.Caption = "娴侀噺璁�";
+            barBtnSetFlowmeterList.CloseRadialMenuOnItemClick = true;
+            barBtnSetFlowmeterList.Id = 49;
+            barBtnSetFlowmeterList.Name = "barBtnSetFlowmeterList";
+            // 
+            // barBtnSetPressmeterList
+            // 
+            barBtnSetPressmeterList.Caption = "鍘嬪姏琛�";
+            barBtnSetPressmeterList.Id = 50;
+            barBtnSetPressmeterList.Name = "barBtnSetPressmeterList";
+            // 
+            // barBtnLoadFlowDirection
+            // 
+            barBtnLoadFlowDirection.Caption = "鍔犺浇";
+            barBtnLoadFlowDirection.Id = 51;
+            barBtnLoadFlowDirection.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnLoadFlowDirection.ImageOptions.SvgImage");
+            barBtnLoadFlowDirection.Name = "barBtnLoadFlowDirection";
+            barBtnLoadFlowDirection.ItemClick += barBtnLoadFlowDirection_ItemClick;
+            // 
+            // barBtnUnloadFlowDirection
+            // 
+            barBtnUnloadFlowDirection.Caption = "鍗歌浇";
+            barBtnUnloadFlowDirection.Id = 52;
+            barBtnUnloadFlowDirection.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnUnloadFlowDirection.ImageOptions.SvgImage");
+            barBtnUnloadFlowDirection.Name = "barBtnUnloadFlowDirection";
+            barBtnUnloadFlowDirection.ItemClick += barBtnUnloadFlowDirection_ItemClick;
+            // 
+            // barBtnClearMark
+            // 
+            barBtnClearMark.Caption = "娓呴櫎";
+            barBtnClearMark.Id = 53;
+            barBtnClearMark.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnClearMark.ImageOptions.SvgImage");
+            barBtnClearMark.Name = "barBtnClearMark";
+            barBtnClearMark.ItemClick += barBtnClearMark_ItemClick;
+            // 
+            // batBtnCancelGradingApply
+            // 
+            batBtnCancelGradingApply.Caption = "鍙栨秷";
+            batBtnCancelGradingApply.Id = 54;
+            batBtnCancelGradingApply.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("batBtnCancelGradingApply.ImageOptions.SvgImage");
+            batBtnCancelGradingApply.Name = "batBtnCancelGradingApply";
+            batBtnCancelGradingApply.ItemClick += batBtnCancelGradingApply_ItemClick;
+            // 
+            // ribbonPage1
+            // 
+            ribbonPage1.Groups.AddRange(new DevExpress.XtraBars.Ribbon.RibbonPageGroup[] { pageGroupMatching, pageGroupModel, ribbonPageGroup6, ribbonPageGroup5, ribbonPageGroup1, ribbonPageGroup2, ribbonPageGroup3 });
+            ribbonPage1.Name = "ribbonPage1";
+            ribbonPage1.Text = "ribbonPage1";
+            // 
+            // pageGroupMatching
+            // 
+            pageGroupMatching.ItemLinks.Add(barBtnMatchingList);
+            pageGroupMatching.ItemLinks.Add(barBtnUnMatchingList);
+            pageGroupMatching.Name = "pageGroupMatching";
+            pageGroupMatching.Text = "鍖归厤";
+            // 
+            // pageGroupModel
+            // 
+            pageGroupModel.ItemLinks.Add(barBtnFastShowHidden);
+            pageGroupModel.ItemLinks.Add(barBtnSearch);
+            pageGroupModel.ItemLinks.Add(barBtnHydroVisualList);
+            pageGroupModel.ItemLinks.Add(barBtnSetList);
+            pageGroupModel.Name = "pageGroupModel";
+            pageGroupModel.Text = "妯″瀷";
+            // 
+            // ribbonPageGroup6
+            // 
+            ribbonPageGroup6.ItemLinks.Add(barBtnSetMark);
+            ribbonPageGroup6.ItemLinks.Add(barBtnClearMark);
+            ribbonPageGroup6.Name = "ribbonPageGroup6";
+            ribbonPageGroup6.Text = "鏍囨敞";
+            // 
+            // ribbonPageGroup5
+            // 
+            ribbonPageGroup5.ItemLinks.Add(barBtnLoadFlowDirection);
+            ribbonPageGroup5.ItemLinks.Add(barBtnUnloadFlowDirection);
+            ribbonPageGroup5.Name = "ribbonPageGroup5";
+            ribbonPageGroup5.Text = "娴佸悜";
+            // 
+            // ribbonPageGroup1
+            // 
+            ribbonPageGroup1.ItemLinks.Add(barBtnGradingSet);
+            ribbonPageGroup1.ItemLinks.Add(barBtnGradingApply);
+            ribbonPageGroup1.ItemLinks.Add(batBtnCancelGradingApply);
+            ribbonPageGroup1.Name = "ribbonPageGroup1";
+            ribbonPageGroup1.Text = "棰滆壊鍒嗙骇";
+            // 
+            // ribbonPageGroup2
+            // 
+            ribbonPageGroup2.ItemLinks.Add(barBtnParallelAnaly);
+            ribbonPageGroup2.ItemLinks.Add(barBtnHydroCheck);
+            ribbonPageGroup2.ItemLinks.Add(barBtnHydroCalcu);
+            ribbonPageGroup2.Name = "ribbonPageGroup2";
+            ribbonPageGroup2.Text = "姘村姏";
+            // 
+            // ribbonPageGroup3
+            // 
+            ribbonPageGroup3.ItemLinks.Add(barBtnSave);
+            ribbonPageGroup3.ItemLinks.Add(barBtnHydroExportInp);
+            ribbonPageGroup3.ItemLinks.Add(barBtnRefresh);
+            ribbonPageGroup3.Name = "ribbonPageGroup3";
+            ribbonPageGroup3.Text = "鏇村...";
+            // 
+            // ribbonPageGroup4
+            // 
+            ribbonPageGroup4.Name = "ribbonPageGroup4";
+            ribbonPageGroup4.Text = "鏇村";
+            // 
+            // tabPane1
+            // 
+            tabPane1.Controls.Add(tabPageBimface);
+            tabPane1.Controls.Add(tabPageQ3d);
+            tabPane1.Location = new Point(218, 158);
+            tabPane1.Margin = new Padding(4, 5, 4, 5);
+            tabPane1.Name = "tabPane1";
+            tabPane1.Pages.AddRange(new DevExpress.XtraBars.Navigation.NavigationPageBase[] { tabPageBimface, tabPageQ3d });
+            tabPane1.RegularSize = new Size(1622, 952);
+            tabPane1.SelectedPage = tabPageBimface;
+            tabPane1.Size = new Size(1622, 952);
+            tabPane1.TabIndex = 1;
+            tabPane1.Text = "tabPane1";
+            // 
+            // tabPageBimface
+            // 
+            tabPageBimface.Caption = "涓夌淮妯″瀷";
+            tabPageBimface.Margin = new Padding(4, 5, 4, 5);
+            tabPageBimface.Name = "tabPageBimface";
+            tabPageBimface.Size = new Size(1622, 903);
+            // 
+            // tabPageQ3d
+            // 
+            tabPageQ3d.Caption = "姘村姏妯″瀷";
+            tabPageQ3d.Margin = new Padding(4, 5, 4, 5);
+            tabPageQ3d.Name = "tabPageQ3d";
+            tabPageQ3d.Size = new Size(1622, 903);
+            // 
+            // dockManager1
+            // 
+            dockManager1.Form = this;
+            dockManager1.HiddenPanels.AddRange(new DevExpress.XtraBars.Docking.DockPanel[] { docPnlBottom });
+            dockManager1.RootPanels.AddRange(new DevExpress.XtraBars.Docking.DockPanel[] { docPnlRight });
+            dockManager1.TopZIndexControls.AddRange(new string[] { "DevExpress.XtraBars.BarDockControl", "DevExpress.XtraBars.StandaloneBarDockControl", "System.Windows.Forms.MenuStrip", "System.Windows.Forms.StatusStrip", "System.Windows.Forms.StatusBar", "DevExpress.XtraBars.Ribbon.RibbonStatusBar", "DevExpress.XtraBars.Ribbon.RibbonControl", "DevExpress.XtraBars.Navigation.OfficeNavigationBar", "DevExpress.XtraBars.Navigation.TileNavPane", "DevExpress.XtraBars.TabFormControl", "DevExpress.XtraBars.FluentDesignSystem.FluentDesignFormControl", "DevExpress.XtraBars.ToolbarForm.ToolbarFormControl" });
+            // 
+            // docPnlBottom
+            // 
+            docPnlBottom.Controls.Add(controlContainerBottom);
+            docPnlBottom.Dock = DevExpress.XtraBars.Docking.DockingStyle.Bottom;
+            docPnlBottom.ID = new Guid("2baf4268-45b9-4b56-9f84-98580a0109e5");
+            docPnlBottom.Location = new Point(0, 320);
+            docPnlBottom.Margin = new Padding(4, 5, 4, 5);
+            docPnlBottom.Name = "docPnlBottom";
+            docPnlBottom.OriginalSize = new Size(200, 165);
+            docPnlBottom.SavedDock = DevExpress.XtraBars.Docking.DockingStyle.Bottom;
+            docPnlBottom.SavedIndex = 1;
+            docPnlBottom.Size = new Size(481, 165);
+            docPnlBottom.Text = "搴曢儴鍔熻兘闈㈡澘";
+            docPnlBottom.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden;
+            // 
+            // controlContainerBottom
+            // 
+            controlContainerBottom.Location = new Point(4, 41);
+            controlContainerBottom.Margin = new Padding(4, 5, 4, 5);
+            controlContainerBottom.Name = "controlContainerBottom";
+            controlContainerBottom.Size = new Size(1614, 120);
+            controlContainerBottom.TabIndex = 0;
+            // 
+            // docPnlRight
+            // 
+            docPnlRight.Controls.Add(controlContainerRight);
+            docPnlRight.Dock = DevExpress.XtraBars.Docking.DockingStyle.Right;
+            docPnlRight.ID = new Guid("cffe2560-3445-4488-83cf-b9e4b936ff18");
+            docPnlRight.Location = new Point(1622, 148);
+            docPnlRight.Margin = new Padding(4, 5, 4, 5);
+            docPnlRight.Name = "docPnlRight";
+            docPnlRight.OriginalSize = new Size(275, 200);
+            docPnlRight.Size = new Size(275, 952);
+            docPnlRight.Text = "灞炴��";
+            // 
+            // controlContainerRight
+            // 
+            controlContainerRight.Location = new Point(7, 38);
+            controlContainerRight.Margin = new Padding(4, 5, 4, 5);
+            controlContainerRight.Name = "controlContainerRight";
+            controlContainerRight.Size = new Size(264, 910);
+            controlContainerRight.TabIndex = 0;
+            // 
+            // svgImg32
+            // 
+            svgImg32.ImageSize = new Size(32, 32);
+            svgImg32.Add("calculatesheet", "image://svgimages/spreadsheet/calculatesheet.svg");
+            // 
+            // rmSet
+            // 
+            rmSet.AllowGlyphSkinning = true;
+            rmSet.Glyph = (Image)resources.GetObject("rmSet.Glyph");
+            rmSet.ItemLinks.Add(barBtnSetReservoirList);
+            rmSet.ItemLinks.Add(barBtnSetTankList);
+            rmSet.ItemLinks.Add(barBtnSetWaterboxList);
+            rmSet.ItemLinks.Add(barBtnSetPumpList);
+            rmSet.ItemLinks.Add(barBtnSetValveList);
+            rmSet.ItemLinks.Add(barBtnSetPipeList);
+            rmSet.ItemLinks.Add(barBtnSetNozzleList);
+            rmSet.ItemLinks.Add(barBtnSetHydrantList);
+            rmSet.ItemLinks.Add(barBtnSetBluntheadList);
+            rmSet.ItemLinks.Add(barBtnSetElbowsList);
+            rmSet.ItemLinks.Add(barBtnSetThreelinkList);
+            rmSet.ItemLinks.Add(barBtnSetFourlinkList);
+            rmSet.ItemLinks.Add(barBtnSetMeterList);
+            rmSet.ItemLinks.Add(barBtnSetFlowmeterList);
+            rmSet.ItemLinks.Add(barBtnSetPressmeterList);
+            rmSet.ItemLinks.Add(barBtnSetTranslationList);
+            rmSet.ItemLinks.Add(barBtnSetExchangerList);
+            rmSet.ItemLinks.Add(barBtnSetCompressorList);
+            rmSet.ItemLinks.Add(barBtnSetJunctionList);
+            rmSet.Name = "rmSet";
+            rmSet.Ribbon = ribbonControl1;
+            rmSet.BeforePopup += rmSet_BeforePopup;
+            // 
+            // toolboxControl1
+            // 
+            toolboxControl1.Dock = DockStyle.Left;
+            toolboxControl1.Location = new Point(0, 148);
+            toolboxControl1.Name = "toolboxControl1";
+            toolboxControl1.OptionsView.ShowSearchPanel = false;
+            toolboxControl1.Size = new Size(195, 952);
+            toolboxControl1.TabIndex = 4;
+            // 
+            // XhsProjectSimulationSchemeMgrPage
+            // 
+            Appearance.BackColor = SystemColors.Control;
+            Appearance.Options.UseBackColor = true;
+            AutoScaleDimensions = new SizeF(10F, 22F);
+            AutoScaleMode = AutoScaleMode.Font;
+            Controls.Add(toolboxControl1);
+            Controls.Add(tabPane1);
+            Controls.Add(docPnlRight);
+            Controls.Add(ribbonControl1);
+            Margin = new Padding(3);
+            Name = "XhsProjectSimulationSchemeMgrPage";
+            Size = new Size(1897, 1100);
+            ((ISupportInitialize)ribbonControl1).EndInit();
+            ((ISupportInitialize)tabPane1).EndInit();
+            tabPane1.ResumeLayout(false);
+            ((ISupportInitialize)dockManager1).EndInit();
+            docPnlBottom.ResumeLayout(false);
+            docPnlRight.ResumeLayout(false);
+            ((ISupportInitialize)svgImg32).EndInit();
+            ((ISupportInitialize)rmSet).EndInit();
+            ResumeLayout(false);
+            PerformLayout();
+        }
+
+        #endregion
+
+        private DevExpress.XtraBars.Ribbon.RibbonControl ribbonControl1;
+        private DevExpress.XtraBars.BarButtonItem barBtnHydroCheck;
+        private DevExpress.XtraBars.BarButtonItem barBtnHydroCalcu;
+        private DevExpress.XtraBars.Ribbon.RibbonPage ribbonPage1;
+        private DevExpress.XtraBars.Ribbon.RibbonPageGroup pageGroupMatching;
+        private DevExpress.XtraBars.BarButtonItem barBtnHydroExportInp;
+        private DevExpress.XtraBars.BarButtonItem barBtnSave;
+        private DevExpress.XtraBars.Ribbon.RibbonPageGroup ribbonPageGroup2;
+        private DevExpress.XtraBars.BarButtonItem barBtnHydroVisualList;
+        private DevExpress.XtraBars.BarButtonItem barBtnFastShowHidden;
+        private DevExpress.XtraBars.Ribbon.RibbonPageGroup ribbonPageGroup4;
+        private DevExpress.XtraBars.Ribbon.RibbonPageGroup ribbonPageGroup3;
+        private DevExpress.XtraBars.BarButtonItem barBtnMatchingList;
+        private DevExpress.XtraBars.Navigation.TabPane tabPane1;
+        private DevExpress.XtraBars.Navigation.TabNavigationPage tabPageBimface;
+        private DevExpress.XtraBars.Navigation.TabNavigationPage tabPageQ3d;
+        private DevExpress.XtraBars.Docking.DockManager dockManager1;
+        private DevExpress.XtraBars.Docking.DockPanel docPnlRight;
+        private DevExpress.XtraBars.Docking.ControlContainer controlContainerRight;
+        private DevExpress.Utils.SvgImageCollection svgImg32;
+        private DevExpress.XtraBars.Ribbon.RadialMenu rmSet;
+        private DevExpress.XtraBars.BarButtonItem barBtnSetList;
+        private DevExpress.XtraBars.BarButtonItem barBtnSetPumpList;
+        private DevExpress.XtraBars.BarButtonItem barBtnSetValveList;
+        private DevExpress.XtraBars.BarButtonItem barBtnSetPipeList;
+        private DevExpress.XtraBars.BarButtonItem barBtnSetElbowsList;
+        private DevExpress.XtraBars.BarButtonItem barBtnSetThreelinkList;
+        private DevExpress.XtraBars.BarButtonItem barBtnSetFourlinkList;
+        private DevExpress.XtraBars.BarButtonItem barBtnSetTranslationList;
+        private DevExpress.XtraBars.BarButtonItem barBtnSetExchangerList;
+        private DevExpress.XtraBars.BarButtonItem barBtnSetJunctionList;
+        private DevExpress.XtraBars.BarButtonItem barBtnParallelAnaly;
+        private DevExpress.XtraBars.BarButtonItem barBtnSearch;
+        private DevExpress.XtraBars.Ribbon.RibbonPageGroup pageGroupModel;
+        private DevExpress.XtraBars.Docking.DockPanel docPnlBottom;
+        private DevExpress.XtraBars.Docking.ControlContainer controlContainerBottom;
+        private DevExpress.XtraBars.BarButtonItem barBtnGradingSet;
+        private DevExpress.XtraBars.BarButtonItem barBtnGradingApply;
+        private DevExpress.XtraBars.Ribbon.RibbonPageGroup ribbonPageGroup1;
+        private DevExpress.XtraBars.BarButtonItem barBtnRefresh;
+        private DevExpress.XtraBars.BarButtonItem barBtnSetMark;
+        private DevExpress.XtraBars.BarButtonItem barBtnSetReservoirList;
+        private DevExpress.XtraBars.BarButtonItem barBtnSetTankList;
+        private DevExpress.XtraBars.BarButtonItem barBtnSetWaterboxList;
+        private DevExpress.XtraBars.BarButtonItem barBtnSetBluntheadList;
+        private DevExpress.XtraBars.BarButtonItem barBtnSetNozzleList;
+        private DevExpress.XtraBars.BarButtonItem barBtnSetHydrantList;
+        private DevExpress.XtraBars.BarButtonItem barBtnSetMeterList;
+        private DevExpress.XtraBars.BarButtonItem barBtnSetCompressorList;
+        private DevExpress.XtraBars.BarButtonItem barBtnSetFlowmeterList;
+        private DevExpress.XtraBars.BarButtonItem barBtnSetPressmeterList;
+        private DevExpress.XtraBars.BarButtonItem barBtnLoadFlowDirection;
+        private DevExpress.XtraBars.Ribbon.RibbonPageGroup ribbonPageGroup5;
+        private DevExpress.XtraBars.BarButtonItem barBtnUnloadFlowDirection;
+        public DevExpress.XtraBars.BarButtonItem barBtnUnMatchingList;
+        private DevExpress.XtraBars.BarButtonItem barBtnClearMark;
+        private DevExpress.XtraBars.Ribbon.RibbonPageGroup ribbonPageGroup6;
+        private DevExpress.XtraBars.BarButtonItem batBtnCancelGradingApply;
+        private DevExpress.XtraToolbox.ToolboxControl toolboxControl1;
+    }
+}
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
new file mode 100644
index 0000000..f007f3d
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/XhsProjectSimulationSchemeMgrPage.cs
@@ -0,0 +1,3329 @@
+锘縢lobal using Yw.EPAnet;
+using DevExpress.Mvvm.Native;
+using DevExpress.Xpo.Helpers;
+using DevExpress.XtraRichEdit.Layout;
+using DevExpress.XtraSpreadsheet.Commands;
+using HStation.WinFrmUI.PhartRelation;
+using System.Diagnostics;
+using System.Windows.Media;
+using System.Windows.Media.Media3D;
+using Yw.Pump;
+using Yw.Vmo;
+using Yw.WinFrmUI.Bimface;
+using Yw.WinFrmUI.Hydro;
+
+namespace HStation.WinFrmUI
+{
+    public partial class XhsProjectSimulationSchemeMgrPage : DocumentPage
+    {
+        public XhsProjectSimulationSchemeMgrPage()
+        {
+            InitializeComponent();
+            this.PageTitle.Caption = "姘村姏妯℃嫙";
+            this.PageTitle.HeaderSvgImage = this.svgImg32[0];
+            this.docPnlBottom.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden;
+            RegistBulkSetEvents();
+        }
+
+        private HStation.Vmo.XhsProjectVmo _project = null;//椤圭洰
+        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>
+        /// 缁戝畾鏁版嵁
+        /// </summary>
+        public async Task SetBindingData
+            (
+                HStation.Vmo.XhsProjectVmo project,
+                HStation.Vmo.XhsProjectSiteVmo projectSite,
+                Yw.Model.HydroModelInfo hydroInfo
+            )
+        {
+            if (project == null)
+            {
+                return;
+            }
+            _project = project;
+            _projectSite = projectSite;
+            _hydroInfo = hydroInfo;
+            if (_projectSite == null)
+            {
+                _projectSite = await BLLFactory<HStation.BLL.XhsProjectSite>.Instance.GetDefaultByProjectID(_project.ID);
+            }
+            if (_hydroInfo == null)
+            {
+                var hydroRelation = await BLLFactory<Yw.BLL.HydroModelRelation>.Instance
+                    .GetDefaultByObjectTypeAndObjectIDOfPurpose(HStation.Xhs.DataType.XhsProjectSite, _projectSite.ID, HStation.Xhs.Purpose.Simulation);
+                _hydroInfo = await BLLFactory<Yw.BLL.HydroModelInfo>.Instance.GetByID(hydroRelation.ModelID);
+            }
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栨暟鎹�
+        /// </summary>
+        public override void InitialDataSource()
+        {
+            base.InitialDataSource();
+            if (_project == null)
+            {
+                return;
+            }
+            this.PageTitle.Caption = $"{_project.Name}\r\n姘村姏妯℃嫙";
+            ShowBimfaceCtrl();
+            ShowQ3dCtrl();
+            ShowPropertyCtrl();
+
+        }
+
+
+        #region Bimface
+
+        //bimface鎺т欢
+        private XhsProjectSimulationBimfaceCtrl _bimfaceCtrl = null;
+
+        //鑾峰彇 bimface 鎺т欢
+        private async Task<XhsProjectSimulationBimfaceCtrl> GetBimfaceCtrl()
+        {
+            if (_bimfaceCtrl == null)
+            {
+                _bimfaceCtrl = new XhsProjectSimulationBimfaceCtrl();
+                _bimfaceCtrl.Dock = DockStyle.Fill;
+                await _bimfaceCtrl.InitialData(_project, _projectSite, () => _hydroInfo);
+                _bimfaceCtrl.LoadCompletedEvent += () =>
+                {//view鍔犺浇瀹屾垚浜嬩欢
+                    if (_hydroInfo == null)
+                    {
+                        return;
+                    }
+                    ApplyGrading();
+                };
+                _bimfaceCtrl.HydroMouseLeftClickEvent += (obj) =>
+                {//榧犳爣宸﹂敭鐐瑰嚮浜嬩欢
+                    if (_hydroInfo == null)
+                    {
+                        return;
+                    }
+                    _selectedVisual = obj;
+                    ShowSelectedProperty();
+                };
+            }
+            return _bimfaceCtrl;
+        }
+
+        //鏄剧ず bimface 鎺т欢
+        private async void ShowBimfaceCtrl()
+        {
+            var bimfaceCtrl = await GetBimfaceCtrl();
+            this.tabPageBimface.Controls.Clear();
+            this.tabPageBimface.Controls.Add(bimfaceCtrl);
+        }
+
+        private void SelectBimfaceParter()
+        {
+
+        }
+
+        #endregion
+
+        #region Q3d
+
+        //Q3d 鎺т欢
+        private XhsProjectSimulationQ3dCtrl _q3dCtrl = null;
+
+        //鑾峰彇 Q3d 鎺т欢
+        private XhsProjectSimulationQ3dCtrl GetQ3dCtrl()
+        {
+            if (_q3dCtrl == null)
+            {
+                _q3dCtrl = new XhsProjectSimulationQ3dCtrl();
+                _q3dCtrl.Dock = DockStyle.Fill;
+                _q3dCtrl.InitialData(() => _hydroInfo);
+                _q3dCtrl.SelectedPartersChangedEvent += (obj) =>
+                {
+                    if (_hydroInfo == null)
+                    {
+                        return;
+                    }
+                    var allParterList = _hydroInfo.GetAllVisuals();
+                    _selectedVisual = allParterList?.Find(x => x.Code == obj?.FirstOrDefault());
+                    ShowSelectedProperty();
+                };
+            }
+            return _q3dCtrl;
+        }
+
+        //鏄剧ず Q3d 鎺т欢
+        private void ShowQ3dCtrl()
+        {
+            var q3dCtrl = GetQ3dCtrl();
+            this.tabPageQ3d.Controls.Clear();
+            this.tabPageQ3d.Controls.Add(q3dCtrl);
+        }
+
+        #endregion
+
+        #region 灞炴�ф帶浠�
+
+        //灞炴�ф帶浠�
+        private XhsProjectSimulationPropertyCtrl _propertyCtrl = null;
+
+        //鑾峰彇灞炴�ф帶浠�
+        private XhsProjectSimulationPropertyCtrl GetPropertyCtrl()
+        {
+            if (_propertyCtrl == null)
+            {
+                _propertyCtrl = new XhsProjectSimulationPropertyCtrl();
+                _propertyCtrl.Dock = DockStyle.Fill;
+                _propertyCtrl.InitialData(() => _hydroInfo, () => GetCalcuResultList());
+                _propertyCtrl.BlinkLinkParterEvent += async (code, linkCode) =>
+                { //寮鸿皟杩炴帴缁勪欢
+                    if (string.IsNullOrEmpty(code))
+                    {
+                        return;
+                    }
+                    if (string.IsNullOrEmpty(linkCode))
+                    {
+                        return;
+                    }
+                    if (_hydroInfo == null)
+                    {
+                        return;
+                    }
+                    var allVisualList = _hydroInfo.GetAllVisuals();
+                    if (allVisualList == null || allVisualList.Count < 1)
+                    {
+                        return;
+                    }
+                    var linkParter = allVisualList.Find(x => x.Code == linkCode);
+                    if (linkParter == null)
+                    {
+                        return;
+                    }
+                    var blinkCodes = new List<string>();
+                    if (linkParter.GetType() == typeof(Yw.Model.HydroJunctionInfo))
+                    {
+                        var allLinkList = _hydroInfo.GetAllLinks();
+                        if (allLinkList == null || allLinkList.Count < 1)
+                        {
+                            return;
+                        }
+                        var linkList = allLinkList.Where(x => (x.StartCode == linkParter.Code || x.EndCode == linkParter.Code) && x.Code != code).ToList();
+                        if (linkList == null || linkList.Count < 1)
+                        {
+                            return;
+                        }
+                        blinkCodes.AddRange(linkList.Select(x => x.Code));
+                    }
+                    else
+                    {
+                        blinkCodes.Add(linkCode);
+                    }
+
+                    await _bimfaceCtrl?.SetBlinkComponents(blinkCodes);
+                    await Task.Delay(5000);
+                    await _bimfaceCtrl?.ClearBlinkComponents();
+                };
+
+                _propertyCtrl.ViewParterEvent += (parter) =>
+                {
+                    if (parter == null)
+                    {
+                        return;
+                    }
+                    _bimfaceCtrl?.ZoomToComponent(parter.Code);
+                };
+                _propertyCtrl.PropertyValueChangedEvent += (parter) =>
+                {
+                    if (parter == null)
+                    {
+                        return;
+                    }
+                    UpdateVisualListCtrl();
+                    AutoApplyGrading();
+                };
+                _propertyCtrl.MarkPropertyValueChangedEvent += (parter) =>
+                {
+                    //鏍囨敞灞炴�у彂鐢熸敼鍙�
+                    //鍒ゆ柇褰撳墠鏄惁鏈夋爣娉ㄥ睍绀猴紝鑻ユ湁鍒欐洿鏂版爣娉紝鏈�濂芥槸鏇存柊鍗曚釜鏍囨敞
+                };
+                _propertyCtrl.GradingPropertyValueChangedEvent += (parter) =>
+                {
+                    //鍒嗙骇灞炴�у彂鐢熸敼鍙�
+                    //鍒ゆ柇褰撳墠鏄惁鏈夊垎绾у睍绀猴紝鑻ユ湁鍒欐洿鏂板垎绾э紝鏈�濂芥槸鏇存柊鍗曚釜鍒嗙骇
+                };
+                _propertyCtrl.FlowDirectionPropertyValueChangedEvent += async (parter) =>
+                {
+                    //娴佸悜灞炴�у彂鐢熸敼鍙�
+                    //鍒ゆ柇娴佸悜鏄惁鍔犺浇锛屽鏋滃姞杞藉垯鏇存柊娴佸悜锛屾渶濂芥槸鏇存柊鍗曚釜娴佸悜
+                    UpdateFlowEffect(parter);
+                    //await _bimfaceCtrl?.UnloadFlowEffectById(parter.Code);
+                };
+
+            }
+            return _propertyCtrl;
+        }
+
+        //灞炴�ф帶浠舵槸鍚﹀彲瑙�
+        private bool IsPropertyCtrlVisible
+        {
+            get
+            {
+                if (this.docPnlRight.Visibility == DevExpress.XtraBars.Docking.DockVisibility.Visible)
+                {
+                    if (this.controlContainerRight.Controls.Count > 0)
+                    {
+                        if (this.controlContainerRight.Controls[0] is XhsProjectSimulationPropertyCtrl)
+                        {
+                            return true;
+                        }
+                    }
+                }
+                return false;
+            }
+        }
+
+        //鏄剧ず灞炴�ф帶浠�
+        private void ShowPropertyCtrl()
+        {
+            if (IsPropertyCtrlVisible)
+            {
+                return;
+            }
+            var propertyCtrl = GetPropertyCtrl();
+            this.controlContainerRight.Controls.Clear();
+            this.controlContainerRight.Controls.Add(propertyCtrl);
+            this.docPnlRight.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Visible;
+            this.docPnlRight.Text = "灞炴��";
+            this.docPnlRight.Width = 300;
+        }
+
+        //鏄剧ず閫夋嫨灞炴��
+        private void ShowSelectedProperty()
+        {
+            ShowSelectedProperty(_selectedVisual);
+        }
+
+        //鏄剧ず閫夋嫨灞炴��
+        private void ShowSelectedProperty(Yw.Model.HydroVisualInfo visual)
+        {
+            if (_hydroInfo == null)
+            {
+                return;
+            }
+            ShowPropertyCtrl();
+            _selectedVisual = visual;
+            if (_selectedVisual == null)
+            {
+                _propertyCtrl.SelectedObject = null;
+                return;
+            }
+            _propertyCtrl.SelectedObject = GetVisualViewModel(_selectedVisual);
+        }
+
+        //鏇存柊閫夋嫨灞炴��
+        private void UpdateSelectedProperty()
+        {
+            if (!IsPropertyCtrlVisible)
+            {
+                return;
+            }
+            if (_selectedVisual == null)
+            {
+                return;
+            }
+            _propertyCtrl?.UpdateRows();
+        }
+
+        #endregion
+
+
+
+        #region 鑷姩鍖归厤
+
+        //鑾峰彇鍖归厤鍒楄〃鎺т欢
+        private XhsProjectSimulationMatchingListCtrl GetMatchingListCtrl()
+        {
+            if (_matchingListCtrl == null)
+            {
+                _matchingListCtrl = new XhsProjectSimulationMatchingListCtrl();
+                _matchingListCtrl.Dock = DockStyle.Fill;
+                _matchingListCtrl.HydroClickEvent += async (code) =>
+                {
+                    if (_hydroInfo == null)
+                    {
+                        return;
+                    }
+                    var allParterList = _hydroInfo.GetAllVisuals();
+                    _selectedVisual = allParterList?.Find(x => x.Code == code);
+                    var elementIds = new List<string>();
+                    if (_selectedVisual != null)
+                    {
+                        elementIds.Add(_selectedVisual.Code);
+                    }
+                    await _bimfaceCtrl?.ZoomAndSelectComponents(elementIds);
+                    ShowSelectedProperty();
+                };
+                _matchingListCtrl.ApplyMatchingEvent += (output) =>
+                {
+                    if (_hydroInfo == null)
+                    {
+                        return false;
+                    }
+                    return AssetsMatchingParasHelper.Apply(_hydroInfo, output);
+                };
+            }
+            return _matchingListCtrl;
+        }
+
+        //鍖归厤鍒楄〃鎺т欢
+        private XhsProjectSimulationMatchingListCtrl _matchingListCtrl = null;
+
+        //鑷姩鍖归厤
+        private void barBtnMatchingList_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
+        {
+            if (_hydroInfo == null)
+            {
+                return;
+            }
+            this.controlContainerBottom.Controls.Clear();
+            var matchingListCtrl = GetMatchingListCtrl();
+            var input = AssetsMatchingParasHelper.Create(_hydroInfo, GetCalcuResultList());
+            matchingListCtrl.SetBindingData(input);
+            this.controlContainerBottom.Controls.Add(matchingListCtrl);
+            this.docPnlBottom.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Visible;
+            this.docPnlBottom.Text = "鍖归厤鍒楄〃";
+            this.docPnlBottom.Height = 350;
+        }
+
+        #endregion
+
+        #region 鏈尮閰嶅垪琛�
+
+        //鑾峰彇鏈尮閰嶅垪琛ㄦ帶浠�
+        private XhsProjectSimulationUnMatchingListCtrl GetUnMatchingListCtrl()
+        {
+            if (_unMatchingListCtrl == null)
+            {
+                _unMatchingListCtrl = new XhsProjectSimulationUnMatchingListCtrl();
+                _unMatchingListCtrl.Dock = DockStyle.Fill;
+                _unMatchingListCtrl.HydroClickEvent += async (parter) =>//琛岀偣鍑�
+                {
+                    if (parter == null)
+                    {
+                        return;
+                    }
+                    if (_hydroInfo == null)
+                    {
+                        return;
+                    }
+                    var allParterList = _hydroInfo.GetAllVisuals();
+                    _selectedVisual = allParterList?.Find(x => x.Code == parter.Code);
+                    var elementIds = new List<string>() { parter.Code };
+                    await _bimfaceCtrl?.ZoomAndSelectComponents(elementIds);
+                    ShowSelectedProperty();
+                };
+                _unMatchingListCtrl.ViewModelEvent += async (parters) =>//鏌ョ湅妯″瀷
+                {
+                    var codes = parters?.Select(x => x.Code).Distinct().ToList();
+                    await _bimfaceCtrl?.ZoomAndSelectComponents(codes);
+                    _selectedVisual = null;
+                    ShowSelectedProperty();
+                };
+            }
+            return _unMatchingListCtrl;
+        }
+
+        private XhsProjectSimulationUnMatchingListCtrl _unMatchingListCtrl = null;//鏈尮閰嶅垪琛�
+
+        //鏈尮閰嶅垪琛�
+        private void barBtnUnMatchingList_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
+        {
+            if (_hydroInfo == null)
+            {
+                return;
+            }
+            this.controlContainerBottom.Controls.Clear();
+            var unMatchingListCtrl = GetUnMatchingListCtrl();
+            unMatchingListCtrl.SetBindingData(_hydroInfo);
+            this.controlContainerBottom.Controls.Add(unMatchingListCtrl);
+            this.docPnlBottom.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Visible;
+            this.docPnlBottom.Text = "鏈尮閰嶅垪琛�";
+            this.docPnlBottom.Height = 350;
+        }
+
+        #endregion
+
+        #region 涓�閿樉闅�
+
+        //鏄鹃殣缂栫爜鍒楄〃
+        private List<string> _fastShowHiddenCodeList = null;
+
+        //涓�閿樉闅�
+        private async void FastShowHidden()
+        {
+            if (_hydroInfo == null)
+            {
+                return;
+            }
+            if (_hydroInfo.Decorators == null || _hydroInfo.Decorators.Count < 1)
+            {
+                return;
+            }
+            if (_fastShowHiddenCodeList == null)
+            {
+                _fastShowHiddenCodeList = _hydroInfo.Decorators.Select(x => x.Code).ToList();
+                await _bimfaceCtrl?.HideComponents(_fastShowHiddenCodeList);
+            }
+            else
+            {
+                await _bimfaceCtrl?.ShowComponents(_fastShowHiddenCodeList);
+                _fastShowHiddenCodeList = null;
+            }
+        }
+
+        //瑙﹀彂涓�閿樉闅�
+        private void barBtnFastShowHidden_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
+        {
+            FastShowHidden();
+        }
+
+        #endregion
+
+
+
+        #region 淇濆瓨淇℃伅
+
+        //淇濆瓨
+        private async void barBtnSave_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
+        {
+            if (_hydroInfo == null)
+            {
+                return;
+            }
+            Stopwatch sw = new Stopwatch();
+            sw.Start();
+
+
+            var id = await BLLFactory<Yw.BLL.HydroModelInfo>.Instance.Save(_hydroInfo);
+
+            //鑰楁椂宸ㄥぇ鐨勪唬鐮�  
+
+            sw.Stop();
+            TimeSpan ts2 = sw.Elapsed;
+            Console.WriteLine("Stopwatch鎬诲叡鑺辫垂{0}ms.", ts2.TotalMilliseconds);
+            if (id < 1)
+            {
+                TipFormHelper.ShowError("淇濆瓨澶辫触锛�");
+                return;
+            }
+            _hydroInfo = await BLLFactory<Yw.BLL.HydroModelInfo>.Instance.GetByID(id);
+            TipFormHelper.ShowSucceed("淇濆瓨鎴愬姛锛�");
+        }
+
+        #endregion
+
+
+
+        #region INP瀵煎嚭
+
+        //瀵煎嚭姘村姏INP鏂囦欢
+        private void barBtnHydroExportInp_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
+        {
+            if (_hydroInfo == null)
+            {
+                return;
+            }
+            var fileName = Yw.WinFrmUI.FileDialogHelper.SaveInp("瀵煎嚭Inp鏂囦欢");
+            if (string.IsNullOrEmpty(fileName))
+            {
+                return;
+            }
+            var netWork = Yw.Hydro.ParseHelper.ToNetwork(_hydroInfo);
+            var result = netWork.ToInpString();
+            File.WriteAllText(fileName, result);
+            TipFormHelper.ShowSucceed("瀵煎嚭鎴愬姛");
+        }
+
+        #endregion INP瀵煎嚭
+
+        #region 鎵归噺閰嶇疆
+
+        //娉ㄥ唽鎵归噺閰嶇疆浜嬩欢
+        private void RegistBulkSetEvents()
+        {
+            //姘村簱
+            this.barBtnSetReservoirList.ItemClick += delegate
+            {
+                //var dlg = new HydroReservoirBulkSetListDlg();
+                //dlg.ShowDialog();
+            };
+            //姘存睜
+            this.barBtnSetTankList.ItemClick += delegate
+            {
+                //var dlg = new HydroTankBulkSetListDlg();
+                //dlg.ShowDialog();
+            };
+            //姘寸
+            this.barBtnSetWaterboxList.ItemClick += delegate
+            {
+                //if (_hydroInfo == null)
+                //{
+                //    return;
+                //}
+                //var dlg = new SetHydroWaterboxListDlg();
+                //dlg.SetBindingData(_hydroInfo);
+                //dlg.HydroClickEvent += async (obj) =>
+                //{
+                //    if (obj == null)
+                //    {
+                //        return;
+                //    }
+                //    _selectedParter = obj;
+                //    await _bimfaceCtrl?.ZoomAndSelectComponent(obj.Code);
+                //    ShowProperty();
+                //};
+                //dlg.HydroChangedEvent += (obj) =>
+                //{
+
+                //};
+                //dlg.ShowDialog();
+            };
+            //杩炴帴鑺傜偣
+            this.barBtnSetJunctionList.ItemClick += delegate
+            {
+                //var dlg = new HydroJunctionBulkSetListDlg();
+                //dlg.ShowDialog();
+            };
+            //闂峰ご
+            this.barBtnSetBluntheadList.ItemClick += delegate
+            {
+                //if (_hydroInfo == null)
+                //{
+                //    return;
+                //}
+                //var dlg = new SetHydroBluntheadListDlg();
+                //dlg.SetBindingData(_hydroInfo);
+                //dlg.HydroClickEvent += async (obj) =>
+                //{
+                //    if (obj == null)
+                //    {
+                //        return;
+                //    }
+                //    _selectedParter = obj;
+                //    await _bimfaceCtrl?.ZoomAndSelectComponent(obj.Code);
+                //    ShowProperty();
+                //};
+                //dlg.HydroChangedEvent += (obj) =>
+                //{
+
+                //};
+                //dlg.ShowDialog();
+            };
+            //寮ご
+            this.barBtnSetElbowsList.ItemClick += delegate
+            {
+                //if (_hydroInfo == null)
+                //{
+                //    return;
+                //}
+                //var dlg = new SetHydroElbowListDlg();
+                //dlg.SetBindingData(_hydroInfo);
+                //dlg.HydroClickEvent += async (obj) =>
+                //{
+                //    if (obj == null)
+                //    {
+                //        return;
+                //    }
+                //    _selectedParter = obj;
+                //    await _bimfaceCtrl?.ZoomAndSelectComponent(obj.Code);
+                //    ShowProperty();
+                //};
+                //dlg.HydroChangedEvent += (obj) =>
+                //{
+
+                //};
+                //dlg.ShowDialog();
+            };
+            //涓夐��
+            this.barBtnSetThreelinkList.ItemClick += delegate
+            {
+                if (_hydroInfo == null)
+                {
+                    return;
+                }
+                var dlg = new SetHydroThreelinkListDlg();
+                dlg.SetBindingData(_hydroInfo);
+                dlg.ShowDialog();
+            };
+            //鍥涢��
+            this.barBtnSetFourlinkList.ItemClick += delegate
+            {
+                if (_hydroInfo == null)
+                {
+                    return;
+                }
+                var dlg = new SetHydroFourlinkListDlg();
+                dlg.SetBindingData(_hydroInfo);
+                dlg.ShowDialog();
+            };
+            //姘磋〃
+            this.barBtnSetMeterList.ItemClick += delegate
+            {
+                if (_hydroInfo == null)
+                {
+                    return;
+                }
+                var dlg = new SetHydroMeterListDlg();
+                dlg.SetBindingData(_hydroInfo);
+                dlg.ShowDialog();
+            };
+            //娴侀噺璁�
+            this.barBtnSetFlowmeterList.ItemClick += delegate
+            {
+                if (_hydroInfo == null)
+                {
+                    return;
+                }
+                var dlg = new SetHydroFlowmeterListDlg();
+                dlg.SetBindingData(_hydroInfo);
+                dlg.ShowDialog();
+            };
+            //鍘嬪姏琛�
+            this.barBtnSetPressmeterList.ItemClick += delegate
+            {
+                if (_hydroInfo == null)
+                {
+                    return;
+                }
+                var dlg = new SetHydroPressmeterListDlg();
+                dlg.SetBindingData(_hydroInfo);
+                dlg.ShowDialog();
+            };
+            //绠¢亾
+            this.barBtnSetPipeList.ItemClick += delegate
+            {
+                if (_hydroInfo == null)
+                {
+                    return;
+                }
+                var dlg = new SetHydroPipeListDlg();
+                dlg.SetBindingData(_hydroInfo);
+                dlg.ShowDialog();
+            };
+            //姘存车
+            this.barBtnSetPumpList.ItemClick += delegate
+            {
+                if (_hydroInfo == null)
+                {
+                    return;
+                }
+                var dlg = new SetHydroPumpListDlg();
+                dlg.SetBindingData(_hydroInfo);
+                dlg.ShowDialog();
+            };
+            //闃�闂�
+            this.barBtnSetValveList.ItemClick += delegate
+            {
+                if (_hydroInfo == null)
+                {
+                    return;
+                }
+                var dlg = new SetHydroValveListDlg();
+                dlg.SetBindingData(_hydroInfo);
+                dlg.ShowDialog();
+            };
+        }
+
+
+        //鏄剧ずRadialMenu
+        private void barBtnSetList_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
+        {
+            this.rmSet.ShowPopup(MousePosition, true);
+        }
+
+        //寮瑰嚭鍓�
+        private void rmSet_BeforePopup(object sender, CancelEventArgs e)
+        {
+            if (_hydroInfo == null)
+            {
+                e.Cancel = true;
+                return;
+            }
+            //姘村簱
+            if (_hydroInfo.Reservoirs == null || _hydroInfo.Reservoirs.Count < 1)
+            {
+                this.barBtnSetReservoirList.Visibility = DevExpress.XtraBars.BarItemVisibility.Never;
+            }
+            else
+            {
+                this.barBtnSetReservoirList.Visibility = DevExpress.XtraBars.BarItemVisibility.Always;
+            }
+
+            //姘存睜
+            if (_hydroInfo.Tanks == null || _hydroInfo.Tanks.Count < 1)
+            {
+                this.barBtnSetTankList.Visibility = DevExpress.XtraBars.BarItemVisibility.Never;
+            }
+            else
+            {
+                this.barBtnSetTankList.Visibility = DevExpress.XtraBars.BarItemVisibility.Always;
+            }
+
+            //姘寸
+            if (_hydroInfo.Waterboxs == null || _hydroInfo.Waterboxs.Count < 1)
+            {
+                this.barBtnSetWaterboxList.Visibility = DevExpress.XtraBars.BarItemVisibility.Never;
+            }
+            else
+            {
+                this.barBtnSetWaterboxList.Visibility = DevExpress.XtraBars.BarItemVisibility.Always;
+            }
+
+            //杩炴帴鑺傜偣
+            if (_hydroInfo.Junctions == null || _hydroInfo.Junctions.Count < 1)
+            {
+                this.barBtnSetJunctionList.Visibility = DevExpress.XtraBars.BarItemVisibility.Never;
+            }
+            else
+            {
+                this.barBtnSetJunctionList.Visibility = DevExpress.XtraBars.BarItemVisibility.Always;
+            }
+
+            //鍠峰槾
+            if (_hydroInfo.Nozzles == null || _hydroInfo.Nozzles.Count < 1)
+            {
+                this.barBtnSetNozzleList.Visibility = DevExpress.XtraBars.BarItemVisibility.Never;
+            }
+            else
+            {
+                this.barBtnSetNozzleList.Visibility = DevExpress.XtraBars.BarItemVisibility.Always;
+            }
+
+            //娑堢伀鏍�
+            if (_hydroInfo.Hydrants == null || _hydroInfo.Hydrants.Count < 1)
+            {
+                this.barBtnSetHydrantList.Visibility = DevExpress.XtraBars.BarItemVisibility.Never;
+            }
+            else
+            {
+                this.barBtnSetHydrantList.Visibility = DevExpress.XtraBars.BarItemVisibility.Always;
+            }
+
+            //闂峰ご
+            if (_hydroInfo.Bluntheads == null || _hydroInfo.Bluntheads.Count < 1)
+            {
+                this.barBtnSetBluntheadList.Visibility = DevExpress.XtraBars.BarItemVisibility.Never;
+            }
+            else
+            {
+                this.barBtnSetBluntheadList.Visibility = DevExpress.XtraBars.BarItemVisibility.Always;
+            }
+
+            //寮ご
+            if (_hydroInfo.Elbows == null || _hydroInfo.Elbows.Count < 1)
+            {
+                this.barBtnSetElbowsList.Visibility = DevExpress.XtraBars.BarItemVisibility.Never;
+            }
+            else
+            {
+                this.barBtnSetElbowsList.Visibility = DevExpress.XtraBars.BarItemVisibility.Always;
+            }
+
+            //涓夐��
+            if (_hydroInfo.Threelinks == null || _hydroInfo.Threelinks.Count < 1)
+            {
+                this.barBtnSetThreelinkList.Visibility = DevExpress.XtraBars.BarItemVisibility.Never;
+            }
+            else
+            {
+                this.barBtnSetThreelinkList.Visibility = DevExpress.XtraBars.BarItemVisibility.Always;
+            }
+
+            //鍥涢��
+            if (_hydroInfo.Fourlinks == null || _hydroInfo.Fourlinks.Count < 1)
+            {
+                this.barBtnSetFourlinkList.Visibility = DevExpress.XtraBars.BarItemVisibility.Never;
+            }
+            else
+            {
+                this.barBtnSetFourlinkList.Visibility = DevExpress.XtraBars.BarItemVisibility.Always;
+            }
+
+            //姘磋〃
+            if (_hydroInfo.Meters == null || _hydroInfo.Meters.Count < 1)
+            {
+                this.barBtnSetMeterList.Visibility = DevExpress.XtraBars.BarItemVisibility.Never;
+            }
+            else
+            {
+                this.barBtnSetMeterList.Visibility = DevExpress.XtraBars.BarItemVisibility.Always;
+            }
+
+            //娴侀噺璁�
+            if (_hydroInfo.Flowmeters == null || _hydroInfo.Flowmeters.Count < 1)
+            {
+                this.barBtnSetFlowmeterList.Visibility = DevExpress.XtraBars.BarItemVisibility.Never;
+            }
+            else
+            {
+                this.barBtnSetFlowmeterList.Visibility = DevExpress.XtraBars.BarItemVisibility.Always;
+            }
+
+            //鍘嬪姏琛�
+            if (_hydroInfo.Pressmeters == null || _hydroInfo.Pressmeters.Count < 1)
+            {
+                this.barBtnSetPressmeterList.Visibility = DevExpress.XtraBars.BarItemVisibility.Never;
+            }
+            else
+            {
+                this.barBtnSetPressmeterList.Visibility = DevExpress.XtraBars.BarItemVisibility.Always;
+            }
+
+            //绠¢亾
+            if (_hydroInfo.Pipes == null || _hydroInfo.Pipes.Count < 1)
+            {
+                this.barBtnSetPipeList.Visibility = DevExpress.XtraBars.BarItemVisibility.Never;
+            }
+            else
+            {
+                this.barBtnSetPipeList.Visibility = DevExpress.XtraBars.BarItemVisibility.Always;
+            }
+
+            //杩囨浮浠�
+            if (_hydroInfo.Translations == null || _hydroInfo.Translations.Count < 1)
+            {
+                this.barBtnSetTranslationList.Visibility = DevExpress.XtraBars.BarItemVisibility.Never;
+            }
+            else
+            {
+                this.barBtnSetTranslationList.Visibility = DevExpress.XtraBars.BarItemVisibility.Always;
+            }
+
+            //鎹㈢儹鍣�
+            if (_hydroInfo.Exchangers == null || _hydroInfo.Exchangers.Count < 1)
+            {
+                this.barBtnSetExchangerList.Visibility = DevExpress.XtraBars.BarItemVisibility.Never;
+            }
+            else
+            {
+                this.barBtnSetExchangerList.Visibility = DevExpress.XtraBars.BarItemVisibility.Always;
+            }
+
+            //绌哄帇鏈�
+            if (_hydroInfo.Compressors == null || _hydroInfo.Compressors.Count < 1)
+            {
+                this.barBtnSetCompressorList.Visibility = DevExpress.XtraBars.BarItemVisibility.Never;
+            }
+            else
+            {
+                this.barBtnSetCompressorList.Visibility = DevExpress.XtraBars.BarItemVisibility.Always;
+            }
+
+            //姘存车
+            if (_hydroInfo.Pumps == null || _hydroInfo.Pumps.Count < 1)
+            {
+                this.barBtnSetPumpList.Visibility = DevExpress.XtraBars.BarItemVisibility.Never;
+            }
+            else
+            {
+                this.barBtnSetPumpList.Visibility = DevExpress.XtraBars.BarItemVisibility.Always;
+            }
+
+            //闃�闂�
+            if (_hydroInfo.Valves == null || _hydroInfo.Valves.Count < 1)
+            {
+                this.barBtnSetValveList.Visibility = DevExpress.XtraBars.BarItemVisibility.Never;
+            }
+            else
+            {
+                this.barBtnSetValveList.Visibility = DevExpress.XtraBars.BarItemVisibility.Always;
+            }
+
+        }
+
+        #endregion
+
+        #region 骞惰仈鍒嗘瀽
+
+        //骞惰仈鍒嗘瀽
+        private void barBtnAnaly_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
+        {
+            if (_hydroInfo == null)
+            {
+                return;
+            }
+            if (_hydroInfo.Pumps == null || _hydroInfo.Pumps.Count < 1)
+            {
+                return;
+            }
+            var allCalcuResultList = GetCalcuResultList();
+            var vmList = new List<XhsSinglePumpViewModel>();
+            foreach (var pump in _hydroInfo.Pumps)
+            {
+                if (!pump.RatedN.HasValue)
+                {
+                    continue;
+                }
+                var qh = _hydroInfo.Curves?.Find(t => t.Code == pump.CurveQH)?.CurveData;
+                var qe = _hydroInfo.Curves?.Find(t => t.Code == pump.CurveQE)?.CurveData;
+                var qp = _hydroInfo.Curves?.Find(t => t.Code == pump.CurveQP)?.CurveData;
+                if (qh == null)
+                {
+                    continue;
+                }
+
+                var qhPtList = qh.Select(x => new XhsSplinePointViewModel(x.X, x.Y)).ToList();
+                var qePtList = qe?.Select(x => new XhsSplinePointViewModel(x.X, x.Y)).ToList();
+                var qpPtList = qp?.Select(x => new XhsSplinePointViewModel(x.X, x.Y)).ToList();
+
+                var vm = new XhsSinglePumpViewModel();
+                vmList.Add(vm);
+                vm.ID = pump.ID;
+                vm.Name = pump.Name;
+                vm.Code = pump.Code;
+                vm.IsBp = true;
+                vm.RunStatus = pump.LinkStatus == Yw.Hydro.LinkStatus.Open;
+                vm.RatedHz = pump.RatedHz;
+                vm.CurrentHz = Math.Round(pump.RatedHz * pump.SpeedRatio, 1);
+                vm.RatedSpeed = pump.RatedN.Value;
+                vm.CurrentSpeed = Math.Round(pump.RatedN.Value * pump.SpeedRatio);
+                vm.CurveQH = qhPtList;
+                vm.CurveQE = qePtList;
+                vm.CurveQP = qpPtList;
+
+                if (allCalcuResultList != null && allCalcuResultList.Count > 0)
+                {
+                    var calcuResult = allCalcuResultList.Find(x => x.Code == pump.Code) as HydroCalcuLinkResult;
+                    if (calcuResult != null)
+                    {
+                        if (calcuResult.CalcuFlow.HasValue)
+                        {
+                            vm.CalcuQ = Math.Abs(calcuResult.CalcuFlow.Value);
+                        }
+
+                        var calcuResultStart = allCalcuResultList.Find(x => x.Code == pump.StartCode) as HydroCalcuNodeResult;
+                        var calcuResultEnd = allCalcuResultList.Find(x => x.Code == pump.EndCode) as HydroCalcuNodeResult;
+                        if (calcuResultStart != null && calcuResultEnd != null)
+                        {
+                            if (calcuResultStart.CalcuHead.HasValue && calcuResultEnd.CalcuHead.HasValue)
+                            {
+                                vm.CalcuH = Math.Round(Math.Abs(calcuResultStart.CalcuHead.Value - calcuResultEnd.CalcuHead.Value), 4);
+                            }
+                        }
+                    }
+                }
+
+            }
+
+            var dlg = new PumpParallelAnalyDlg();
+            dlg.SetBindingData(vmList);
+            dlg.ReloadDataEvent += (list) =>
+            {
+                list?.ForEach(x =>
+                {
+                    var pump = _hydroInfo.Pumps?.Find(t => t.Code == x.Code);
+                    if (pump != null)
+                    {
+                        pump.LinkStatus = x.RunStatus ? Yw.Hydro.PumpStatus.Open : Yw.Hydro.PumpStatus.Closed;
+                        pump.SpeedRatio = Math.Round(x.CurrentHz / pump.RatedHz, 1);
+                    }
+                });
+                ShowSelectedProperty();
+                return true;
+            };
+            dlg.ShowDialog();
+        }
+
+        #endregion
+
+        #region 姘村姏璁$畻
+
+
+        #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);
+                    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 鏋勪欢鏌ヨ
+
+        //鏌ヨ缁勪欢
+        private HydroVisualSearchListCtrl _searchCtrl = null;
+
+        //鑾峰彇鏌ヨ缁勪欢
+        private HydroVisualSearchListCtrl GetSearchCtrl()
+        {
+            if (_searchCtrl == null)
+            {
+                _searchCtrl = new HydroVisualSearchListCtrl();
+                _searchCtrl.Dock = DockStyle.Fill;
+                var allVisualViewModelList = GetVisualViewModelList();
+                _searchCtrl.InitialData(allVisualViewModelList);
+                _searchCtrl.HydroClickInfoEvent += async (visual) =>
+                {
+                    ShowSelectedProperty(visual);
+                    await _bimfaceCtrl?.ZoomAndSelectComponent(visual?.Code);
+                };
+                _searchCtrl.HydroSearchInfoEvent += async (list) =>
+                {
+                    var elementIds = new List<string>();
+                    if (list != null && list.Count > 0)
+                    {
+                        _selectedVisual = list.First();
+                        list.ForEach(x => elementIds.Add(x.Code));
+                    }
+                    else
+                    {
+                        _selectedVisual = null;
+                    }
+                    ShowSelectedProperty();
+                    await _bimfaceCtrl?.ZoomAndSelectComponents(elementIds);
+                };
+            }
+            return _searchCtrl;
+        }
+
+        //鏌ヨ鎺т欢鏄惁鍙
+        private bool IsSearchCtrlVisible
+        {
+            get
+            {
+                if (this.docPnlBottom.Visibility == DevExpress.XtraBars.Docking.DockVisibility.Visible)
+                {
+                    if (this.controlContainerBottom.Controls.Count > 0)
+                    {
+                        if (this.controlContainerBottom.Controls[0] is HydroVisualSearchListCtrl)
+                        {
+                            return true;
+                        }
+                    }
+                }
+                return false;
+            }
+        }
+
+        //鏄剧ず鏌ヨ鎺т欢
+        private void ShowSearchCtrl(string content)
+        {
+            if (IsSearchCtrlVisible)
+            {
+                return;
+            }
+            var searchCtrl = GetSearchCtrl();
+            searchCtrl.SetBindingData(content);
+            this.controlContainerBottom.Controls.Clear();
+            this.controlContainerBottom.Controls.Add(searchCtrl);
+            this.docPnlBottom.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Visible;
+            this.docPnlBottom.Text = "鏋勪欢鏌ヨ";
+            this.docPnlBottom.Height = 350;
+        }
+
+        //鏄剧ず鏌ヨ绐椾綋
+        private void ShowSearchDlg()
+        {
+            if (IsSearchCtrlVisible)
+            {
+                return;
+            }
+            var dlg = new InputHydroVisualSearchListDlg();
+            dlg.SearchEvent += (content) =>
+            {
+                if (string.IsNullOrEmpty(content))
+                {
+                    return;
+                }
+                ShowSearchCtrl(content);
+            };
+            dlg.SetBindingData();
+            dlg.ShowDialog();
+        }
+
+        //鏌ヨ
+        private void barBtnSearch_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
+        {
+            ShowSearchDlg();
+        }
+
+        #endregion
+
+        #region 妯″瀷鏍囨敞
+
+        //鎵�鏈夋爣娉ㄨ缃垪琛�
+        private List<HydroMarkSetViewModel> _allMarkSetList = null;
+
+        //鑾峰彇鏍囨敞璁剧疆鍒楄〃
+        private List<HydroMarkSetViewModel> GetMarkSetList()
+        {
+            if (_allMarkSetList == null)
+            {
+                _allMarkSetList = new List<HydroMarkSetViewModel>();
+                if (_hydroInfo.Waterboxs != null && _hydroInfo.Waterboxs.Count > 0)
+                {
+                    _allMarkSetList.Add(new HydroMarkSetViewModel()
+                    {
+                        Code = Yw.Hydro.ParterCatalog.Waterbox,
+                        Name = Yw.WinFrmUI.HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Waterbox),
+                        MarkType = (int)eWaterboxMarkType.None
+                    });
+                }
+                if (_hydroInfo.Pumps != null && _hydroInfo.Pumps.Count > 0)
+                {
+                    _allMarkSetList.Add(new HydroMarkSetViewModel()
+                    {
+                        Code = Yw.Hydro.ParterCatalog.Pump,
+                        Name = Yw.WinFrmUI.HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Pump),
+                        MarkType = (int)eWaterboxMarkType.None
+                    });
+                }
+                if (_hydroInfo.Valves != null && _hydroInfo.Valves.Count > 0)
+                {
+                    _allMarkSetList.Add(new HydroMarkSetViewModel()
+                    {
+                        Code = Yw.Hydro.ParterCatalog.Valve,
+                        Name = Yw.WinFrmUI.HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Valve),
+                        MarkType = (int)eWaterboxMarkType.None
+                    });
+                }
+                if (_hydroInfo.Pipes != null && _hydroInfo.Pipes.Count > 0)
+                {
+                    _allMarkSetList.Add(new HydroMarkSetViewModel()
+                    {
+                        Code = Yw.Hydro.ParterCatalog.Pipe,
+                        Name = Yw.WinFrmUI.HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Pipe),
+                        MarkType = (int)eWaterboxMarkType.None
+                    });
+                }
+                if (_hydroInfo.Nozzles != null && _hydroInfo.Nozzles.Count > 0)
+                {
+                    _allMarkSetList.Add(new HydroMarkSetViewModel()
+                    {
+                        Code = Yw.Hydro.ParterCatalog.Nozzle,
+                        Name = Yw.WinFrmUI.HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Nozzle),
+                        MarkType = (int)eWaterboxMarkType.None
+                    });
+                }
+            }
+            return _allMarkSetList;
+        }
+
+        //鎵�鏈夋爣娉ㄧ粨鏋滃垪琛�
+        private List<HydroMarkResultViewModel> _allMarkResultList = null;
+
+        //鑾峰彇鏍囨敞缁撴灉鍒楄〃
+        private List<HydroMarkResultViewModel> GetMarkResultList()
+        {
+            if (_hydroInfo == null)
+            {
+                return default;
+            }
+            _allMarkResultList = new List<HydroMarkResultViewModel>();
+            var allMarkSetList = GetMarkSetList();
+            foreach (var markSet in allMarkSetList)
+            {
+                switch (markSet.Code)
+                {
+                    case Yw.Hydro.ParterCatalog.Waterbox:
+                        {
+                            if (_hydroInfo.Waterboxs != null && _hydroInfo.Waterboxs.Count > 0)
+                            {
+                                switch ((eWaterboxMarkType)markSet.MarkType)
+                                {
+                                    case eWaterboxMarkType.None:
+                                        {
+
+                                        }
+                                        break;
+                                    case eWaterboxMarkType.PoolElev:
+                                        {
+                                            _hydroInfo.Waterboxs.ForEach(t =>
+                                            {
+                                                _allMarkResultList.Add(new HydroMarkResultViewModel()
+                                                {
+                                                    Code = t.Code,
+                                                    Text = $"姹犲簳鏍囬珮:{Math.Round(t.PoolElev, 4)}m"
+                                                });
+                                            });
+                                        }
+                                        break;
+                                    case eWaterboxMarkType.InitLevel:
+                                        {
+                                            _hydroInfo.Waterboxs.ForEach(t =>
+                                            {
+                                                _allMarkResultList.Add(new HydroMarkResultViewModel()
+                                                {
+                                                    Code = t.Code,
+                                                    Text = $"鍒濆姘翠綅:{Math.Round(t.InitLevel, 4)}m"
+                                                });
+                                            });
+                                        }
+                                        break;
+                                    case eWaterboxMarkType.MinLevel:
+                                        {
+                                            _hydroInfo.Waterboxs.ForEach(t =>
+                                            {
+                                                _allMarkResultList.Add(new HydroMarkResultViewModel()
+                                                {
+                                                    Code = t.Code,
+                                                    Text = $"鏈�灏忔按浣�:{Math.Round(t.MinLevel, 4)}m"
+                                                });
+                                            });
+                                        }
+                                        break;
+                                    case eWaterboxMarkType.MaxLevel:
+                                        {
+                                            _hydroInfo.Waterboxs.ForEach(t =>
+                                            {
+                                                _allMarkResultList.Add(new HydroMarkResultViewModel()
+                                                {
+                                                    Code = t.Code,
+                                                    Text = $"鏈�楂樻按浣�:{Math.Round(t.MaxLevel, 4)}m"
+                                                });
+                                            });
+                                        }
+                                        break;
+                                    case eWaterboxMarkType.DN:
+                                        {
+                                            _hydroInfo.Waterboxs.ForEach(t =>
+                                            {
+                                                _allMarkResultList.Add(new HydroMarkResultViewModel()
+                                                {
+                                                    Code = t.Code,
+                                                    Text = $"鐩村緞:{Math.Round(t.DN, 4)}m"
+                                                });
+                                            });
+                                        }
+                                        break;
+                                    case eWaterboxMarkType.MinVol:
+                                        {
+                                            _hydroInfo.Waterboxs.ForEach(t =>
+                                            {
+                                                _allMarkResultList.Add(new HydroMarkResultViewModel()
+                                                {
+                                                    Code = t.Code,
+                                                    Text = $"鏈�灏忓绉�:{Math.Round(t.MinVol, 1)}m"
+                                                });
+                                            });
+                                        }
+                                        break;
+                                    default: break;
+                                }
+                            }
+                        }
+                        break;
+                    case Yw.Hydro.ParterCatalog.Pump:
+                        {
+                            if (_hydroInfo.Pumps != null && _hydroInfo.Pumps.Count > 0)
+                            {
+                                switch ((ePumpMarkType)markSet.MarkType)
+                                {
+                                    case ePumpMarkType.None:
+                                        {
+
+                                        }
+                                        break;
+                                    case ePumpMarkType.PumpStatus:
+                                        {
+                                            _hydroInfo.Pumps.ForEach(t =>
+                                            {
+                                                _allMarkResultList.Add(new HydroMarkResultViewModel()
+                                                {
+                                                    Code = t.Code,
+                                                    Text = $"寮�鏈虹姸鎬�:{Yw.WinFrmUI.HydroLinkStatusHelper.GetStatusName(t.LinkStatus)}"
+                                                });
+                                            });
+                                        }
+                                        break;
+                                    case ePumpMarkType.RatedP:
+                                        {
+                                            _hydroInfo.Pumps.ForEach(t =>
+                                            {
+                                                _allMarkResultList.Add(new HydroMarkResultViewModel()
+                                                {
+                                                    Code = t.Code,
+                                                    Text = $"棰濆畾鍔熺巼:{t.RatedP}kW"
+                                                });
+                                            });
+                                        }
+                                        break;
+                                    case ePumpMarkType.RatedQ:
+                                        {
+                                            _hydroInfo.Pumps.ForEach(t =>
+                                            {
+                                                _allMarkResultList.Add(new HydroMarkResultViewModel()
+                                                {
+                                                    Code = t.Code,
+                                                    Text = $"棰濆畾娴侀噺:{t.RatedQ}m鲁/h"
+                                                });
+                                            });
+                                        }
+                                        break;
+                                    case ePumpMarkType.RatedH:
+                                        {
+                                            _hydroInfo.Pumps.ForEach(t =>
+                                            {
+                                                _allMarkResultList.Add(new HydroMarkResultViewModel()
+                                                {
+                                                    Code = t.Code,
+                                                    Text = $"棰濆畾鎵▼:{t.RatedH}m"
+                                                });
+                                            });
+                                        }
+                                        break;
+                                    case ePumpMarkType.RatedN:
+                                        {
+                                            _hydroInfo.Pumps.ForEach(t =>
+                                            {
+                                                _allMarkResultList.Add(new HydroMarkResultViewModel()
+                                                {
+                                                    Code = t.Code,
+                                                    Text = $"棰濆畾杞��:{t.RatedN}r/min"
+                                                });
+                                            });
+                                        }
+                                        break;
+                                    case ePumpMarkType.RatedHz:
+                                        {
+                                            _hydroInfo.Pumps.ForEach(t =>
+                                            {
+                                                _allMarkResultList.Add(new HydroMarkResultViewModel()
+                                                {
+                                                    Code = t.Code,
+                                                    Text = $"棰濆畾棰戠巼:{t.RatedHz}"
+                                                });
+                                            });
+                                        }
+                                        break;
+                                    case ePumpMarkType.CurrentN:
+                                        {
+                                            _hydroInfo.Pumps.ForEach(t =>
+                                            {
+                                                if (t.RatedN.HasValue)
+                                                {
+                                                    _allMarkResultList.Add(new HydroMarkResultViewModel()
+                                                    {
+                                                        Code = t.Code,
+                                                        Text = $"璁惧畾杞��:{Math.Round(t.RatedN.Value * t.SpeedRatio, 1)}r/min"
+                                                    });
+                                                }
+                                            });
+                                        }
+                                        break;
+                                    case ePumpMarkType.CurrentHz:
+                                        {
+                                            _hydroInfo.Pumps.ForEach(t =>
+                                            {
+                                                _allMarkResultList.Add(new HydroMarkResultViewModel()
+                                                {
+                                                    Code = t.Code,
+                                                    Text = $"璁惧畾棰戠巼:{Math.Round(t.RatedHz * t.SpeedRatio, 1)}hz"
+                                                });
+                                            });
+                                        }
+                                        break;
+                                    default: break;
+                                }
+                            }
+                        }
+                        break;
+                    case Yw.Hydro.ParterCatalog.Valve:
+                        {
+                            if (_hydroInfo.Valves != null && _hydroInfo.Valves.Count > 0)
+                            {
+                                switch ((eValveMarkType)markSet.MarkType)
+                                {
+                                    case eValveMarkType.None:
+                                        {
+
+                                        }
+                                        break;
+                                    case eValveMarkType.ValveStatus:
+                                        {
+                                            _hydroInfo.Valves.ForEach(t =>
+                                            {
+                                                _allMarkResultList.Add(new HydroMarkResultViewModel()
+                                                {
+                                                    Code = t.Code,
+                                                    Text = $"闃�闂ㄧ姸鎬�:{HydroLinkStatusHelper.GetStatusName(t.LinkStatus)}"
+                                                });
+                                            });
+                                        }
+                                        break;
+                                    case eValveMarkType.ValveType:
+                                        {
+                                            _hydroInfo.Valves.ForEach(t =>
+                                            {
+                                                _allMarkResultList.Add(new HydroMarkResultViewModel()
+                                                {
+                                                    Code = t.Code,
+                                                    Text = $"闃�闂ㄧ被鍨�:{HydroValveTypeHelper.GetTypeName(t.ValveType)}"
+                                                });
+                                            });
+                                        }
+                                        break;
+                                    case eValveMarkType.Diameter:
+                                        {
+                                            _hydroInfo.Valves.ForEach(t =>
+                                            {
+                                                _allMarkResultList.Add(new HydroMarkResultViewModel()
+                                                {
+                                                    Code = t.Code,
+                                                    Text = $"鐩村緞:{t.Diameter}mm"
+                                                });
+                                            });
+                                        }
+                                        break;
+                                    case eValveMarkType.MinorLoss:
+                                        {
+                                            _hydroInfo.Valves.ForEach(t =>
+                                            {
+                                                _allMarkResultList.Add(new HydroMarkResultViewModel()
+                                                {
+                                                    Code = t.Code,
+                                                    Text = $"灞�闃荤郴鏁�:{t.MinorLoss}"
+                                                });
+                                            });
+                                        }
+                                        break;
+                                    default: break;
+                                }
+                            }
+                        }
+                        break;
+                    case Yw.Hydro.ParterCatalog.Pipe:
+                        {
+                            if (_hydroInfo.Pipes != null && _hydroInfo.Pipes.Count > 0)
+                            {
+                                switch ((ePipeMarkType)markSet.MarkType)
+                                {
+                                    case ePipeMarkType.None:
+                                        {
+
+                                        }
+                                        break;
+                                    case ePipeMarkType.PipeStatus:
+                                        {
+                                            _hydroInfo.Pipes.ForEach(t =>
+                                            {
+                                                _allMarkResultList.Add(new HydroMarkResultViewModel()
+                                                {
+                                                    Code = t.Code,
+                                                    Text = $"鐘舵��:{Yw.WinFrmUI.HydroLinkStatusHelper.GetStatusName(t.LinkStatus)}"
+                                                });
+                                            });
+                                        }
+                                        break;
+                                    case ePipeMarkType.Diameter:
+                                        {
+                                            _hydroInfo.Pipes.ForEach(t =>
+                                            {
+                                                _allMarkResultList.Add(new HydroMarkResultViewModel()
+                                                {
+                                                    Code = t.Code,
+                                                    Text = $"鐩村緞:{t.Diameter}mm"
+                                                });
+                                            });
+                                        }
+                                        break;
+                                    case ePipeMarkType.Length:
+                                        {
+                                            _hydroInfo.Pipes.ForEach(t =>
+                                            {
+                                                _allMarkResultList.Add(new HydroMarkResultViewModel()
+                                                {
+                                                    Code = t.Code,
+                                                    Text = $"闀垮害:{t.Length}m"
+                                                });
+                                            });
+                                        }
+                                        break;
+                                    case ePipeMarkType.Roughness:
+                                        {
+                                            _hydroInfo.Pipes.ForEach(t =>
+                                            {
+                                                _allMarkResultList.Add(new HydroMarkResultViewModel()
+                                                {
+                                                    Code = t.Code,
+                                                    Text = $"绮楃硻绯绘暟:{t.Roughness}"
+                                                });
+                                            });
+                                        }
+                                        break;
+                                    case ePipeMarkType.MinorLoss:
+                                        {
+                                            _hydroInfo.Pipes.ForEach(t =>
+                                            {
+                                                _allMarkResultList.Add(new HydroMarkResultViewModel()
+                                                {
+                                                    Code = t.Code,
+                                                    Text = $"灞�闃荤郴鏁�:{t.MinorLoss}"
+                                                });
+                                            });
+                                        }
+                                        break;
+                                    default: break;
+                                }
+                            }
+                        }
+                        break;
+                    case Yw.Hydro.ParterCatalog.Nozzle:
+                        {
+                            if (_hydroInfo.Nozzles != null && _hydroInfo.Nozzles.Count > 0)
+                            {
+                                switch ((eNozzleMarkType)markSet.MarkType)
+                                {
+                                    case eNozzleMarkType.None:
+                                        {
+
+                                        }
+                                        break;
+                                    case eNozzleMarkType.Elev:
+                                        {
+                                            _hydroInfo.Nozzles.ForEach(t =>
+                                            {
+                                                _allMarkResultList.Add(new HydroMarkResultViewModel()
+                                                {
+                                                    Code = t.Code,
+                                                    Text = $"鏍囬珮:{Math.Round(t.Elev, 4)}m"
+                                                });
+                                            });
+                                        }
+                                        break;
+                                    case eNozzleMarkType.Demand:
+                                        {
+                                            _hydroInfo.Nozzles.ForEach(t =>
+                                            {
+                                                _allMarkResultList.Add(new HydroMarkResultViewModel()
+                                                {
+                                                    Code = t.Code,
+                                                    Text = $"闇�姘撮噺:{t.Demand}m鲁/h"
+                                                });
+                                            });
+                                        }
+                                        break;
+                                    case eNozzleMarkType.Coefficient:
+                                        {
+                                            _hydroInfo.Nozzles.ForEach(t =>
+                                            {
+                                                _allMarkResultList.Add(new HydroMarkResultViewModel()
+                                                {
+                                                    Code = t.Code,
+                                                    Text = $"鍠峰皠绯绘暟:{t.Coefficient}"
+                                                });
+                                            });
+                                        }
+                                        break;
+                                    default: break;
+                                }
+                            }
+                        }
+                        break;
+                    default: break;
+                }
+            }
+            return _allMarkResultList;
+        }
+
+        //搴旂敤鏍囨敞缁撴灉鍒楄〃
+        private async Task ApplyMarkResultList()
+        {
+            var allMarkResultList = GetMarkResultList();
+            var leadLabels = allMarkResultList?.Select(x => new LogicMarkLeadLabel(x.Code, x.Text, 100000)).ToList();
+            await _bimfaceCtrl?.SetLogicMarkLeadLabels(leadLabels);
+            TipFormHelper.ShowSucceed("鏍囨敞淇℃伅宸茶缃�");
+        }
+
+        //娓呴櫎鏍囨敞缁撴灉鍒楄〃
+        private async Task ClearMarkResultList()
+        {
+            if (_allMarkResultList == null || _allMarkResultList.Count < 1)
+            {
+                TipFormHelper.ShowWarn("灏氭湭璁剧疆鏍囨敞淇℃伅");
+                return;
+            }
+            _allMarkResultList = null;
+            await _bimfaceCtrl?.ClearLogicMarkLeadLabels();
+            TipFormHelper.ShowSucceed("鏍囨敞淇℃伅宸叉竻闄�");
+        }
+
+        //鏄剧ず鏍囨敞璁剧疆绐椾綋
+        private void ShowMarkSetDlg()
+        {
+            if (_hydroInfo == null)
+            {
+                return;
+            }
+            var allMarkSetList = GetMarkSetList();
+            var dlg = new SetHydroMarkDlg();
+            dlg.SetBindingData(allMarkSetList);
+            dlg.ReloadDataEvent += async (list) =>
+            {
+                _allMarkSetList = list;
+                await ApplyMarkResultList();
+            };
+            dlg.ShowDialog();
+        }
+
+        //璁剧疆鏍囨敞
+        private void barBtnSetMark_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
+        {
+            ShowMarkSetDlg();
+        }
+
+        //娓呴櫎鏍囨敞
+        private async void barBtnClearMark_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
+        {
+            await ClearMarkResultList();
+        }
+
+        #endregion
+
+        #region 棰滆壊鍒嗙骇
+
+        #region 棰滆壊閰嶇疆
+
+        //鎵�鏈夊垎绾у垪琛�
+        private List<HydroGradingVmo> _allGradingList = null;
+
+        //鑾峰彇鍒嗙骇鍒楄〃
+        private async Task<List<HydroGradingVmo>> GetGradingList()
+        {
+            if (_hydroInfo == null)
+            {
+                return default;
+            }
+            if (_allGradingList == null)
+            {
+                _allGradingList = await BLLFactory<Yw.BLL.HydroGrading>.Instance.GetByModelID(_hydroInfo.ID);
+                if (_allGradingList == null || _allGradingList.Count < 1)
+                {
+                    var config = Yw.Settings.HydroParasHelper.Hydro.Grading;
+                    if (config != null && config.Items != null && config.Items.Count > 0)
+                    {
+                        _allGradingList = new List<HydroGradingVmo>();
+                        config.Items.ForEach(x =>
+                        {
+                            var vmo = new HydroGradingVmo()
+                            {
+                                ModelID = _hydroInfo.ID,
+                                Catalog = x.Catalog,
+                                PropName = x.PropName,
+                                SetValue = x.SetValue,
+                                MinValue = x.MinValue,
+                                MaxValue = x.MaxValue,
+                                Color = x.Color,
+                                SortCode = config.Items.IndexOf(x)
+                            };
+                            _allGradingList.Add(vmo);
+                        });
+                    }
+                }
+            }
+            return _allGradingList;
+        }
+
+        //鏄剧ず閰嶇疆棰滆壊鍒嗙骇绐椾綋
+        private async void ShowSetGradingDlg()
+        {
+            if (_hydroInfo == null)
+            {
+                return;
+            }
+            var allGradingList = await GetGradingList();
+            var dlg = new SetHydroGradingTreeDlg();
+            dlg.SetBindingData(_hydroInfo, allGradingList);
+            dlg.ReloadDataEvent += (list) =>
+            {
+                _allGradingList = list;
+            };
+            dlg.ApplyDataEvent += (catalog, propName) =>
+            {
+                ApplyGrading(catalog, propName);
+            };
+            dlg.ShowDialog();
+        }
+
+        //閰嶇疆棰滆壊鍒嗙骇
+        private void barBtnGradingSet_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
+        {
+            ShowSetGradingDlg();
+        }
+
+        #endregion
+
+        #region 搴旂敤鍒嗙骇
+
+        //棰滆壊鍒嗙骇搴旂敤鍒楄〃
+        private List<HydroGradingApplyViewModel> _allGradingApplyList = null;
+
+        //鑾峰彇棰滆壊鍒嗙骇搴旂敤鍒楄〃
+        private List<HydroGradingApplyViewModel> GetGradingApplyList()
+        {
+            if (_allGradingApplyList == null)
+            {
+                _allGradingApplyList = new List<HydroGradingApplyViewModel>();
+
+                if (_hydroInfo.Pumps != null && _hydroInfo.Pumps.Count > 0)
+                {
+                    _allGradingApplyList.Add(new HydroGradingApplyViewModel()
+                    {
+                        Code = Yw.Hydro.ParterCatalog.Pump,
+                        Name = Yw.WinFrmUI.HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Pump),
+                        PropName = Yw.Hydro.ParterProp.LinkStatus
+                    });
+                }
+                if (_hydroInfo.Valves != null && _hydroInfo.Valves.Count > 0)
+                {
+                    _allGradingApplyList.Add(new HydroGradingApplyViewModel()
+                    {
+                        Code = Yw.Hydro.ParterCatalog.Valve,
+                        Name = Yw.WinFrmUI.HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Valve),
+                        PropName = Yw.Hydro.ParterProp.LinkStatus
+                    });
+                }
+                if (_hydroInfo.Pipes != null && _hydroInfo.Pipes.Count > 0)
+                {
+                    _allGradingApplyList.Add(new HydroGradingApplyViewModel()
+                    {
+                        Code = Yw.Hydro.ParterCatalog.Pipe,
+                        Name = Yw.WinFrmUI.HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Pipe),
+                        PropName = Yw.Hydro.ParterProp.CalcuFlow
+                    });
+                }
+            }
+            return _allGradingApplyList;
+        }
+
+        //鑾峰彇棰滆壊鍒嗙骇搴旂敤缁撴灉鍒楄〃
+        private async Task<List<HydroGradingApplyResultViewModel>> GetGradingApplyResultList()
+        {
+            if (_hydroInfo == null)
+            {
+                return default;
+            }
+
+            //鎵�鏈夊垎绾у垪琛�
+            var allGradingList = await GetGradingList();
+            if (allGradingList == null || allGradingList.Count < 1)
+            {
+                return default;
+            }
+
+            //鎵�鏈夊垎绾у簲鐢ㄥ垪琛�
+            var allGradingApplyList = GetGradingApplyList();
+            if (allGradingApplyList == null || allGradingApplyList.Count < 1)
+            {
+                return default;
+            }
+
+            //鎵�鏈夎绠楃粨鏋滃垪琛�
+            var allCalcuResultList = GetCalcuResultList();
+
+            //鎵�鏈夊簲鐢ㄧ粨鏋滃垪琛�
+            var allGradingApplyResultList = new List<HydroGradingApplyResultViewModel>();
+            allGradingApplyList.ForEach(x =>
+            {
+                var allCatalogGradingList = allGradingList.Where(t => t.Catalog == x.Code).ToList();
+                if (allCatalogGradingList != null || allCatalogGradingList.Count > 0)
+                {
+                    switch (x.Code)
+                    {
+                        case Yw.Hydro.ParterCatalog.Pump:
+                            {
+                                if (_hydroInfo.Pumps != null && _hydroInfo.Pumps.Count > 0)
+                                {
+                                    foreach (var pump in _hydroInfo.Pumps)
+                                    {
+                                        switch (x.PropName)
+                                        {
+                                            case Yw.Hydro.ParterProp.LinkStatus:
+                                                {
+                                                    var gradingList = allCatalogGradingList.Where(x => x.PropName == Yw.Hydro.ParterProp.LinkStatus).OrderBy(t => t.SortCode).ToList();
+                                                    if (gradingList != null && gradingList.Count > 0)
+                                                    {
+                                                        var grading = gradingList.Meet(pump.LinkStatus);
+                                                        if (grading != null)
+                                                        {
+                                                            var result = new HydroGradingApplyResultViewModel()
+                                                            {
+                                                                Code = pump.Code,
+                                                                Color = grading.Color
+                                                            };
+                                                            allGradingApplyResultList.Add(result);
+                                                        }
+                                                    }
+                                                }
+                                                break;
+                                            case Yw.Hydro.ParterProp.CalcuFlow:
+                                                {
+                                                    var gradingList = allCatalogGradingList.Where(x => x.PropName == Yw.Hydro.ParterProp.CalcuFlow).OrderBy(t => t.SortCode).ToList();
+                                                    if (gradingList != null && gradingList.Count > 0)
+                                                    {
+                                                        var calcuResult = allCalcuResultList?.Find(t => t.Code == pump.Code);
+                                                        if (calcuResult is HydroCalcuLinkResult calcuLinkResult)
+                                                        {
+                                                            if (calcuLinkResult.CalcuFlow.HasValue)
+                                                            {
+                                                                var grading = gradingList.Meet(Math.Abs(calcuLinkResult.CalcuFlow.Value));
+                                                                if (grading != null)
+                                                                {
+                                                                    var result = new HydroGradingApplyResultViewModel()
+                                                                    {
+                                                                        Code = pump.Code,
+                                                                        Color = grading.Color
+                                                                    };
+                                                                    allGradingApplyResultList.Add(result);
+                                                                }
+                                                            }
+                                                        }
+                                                    }
+                                                }
+                                                break;
+                                            case Yw.Hydro.ParterProp.CalcuVelocity:
+                                                {
+                                                    var gradingList = allCatalogGradingList.Where(x => x.PropName == Yw.Hydro.ParterProp.CalcuVelocity).OrderBy(t => t.SortCode).ToList();
+                                                    if (gradingList != null && gradingList.Count > 0)
+                                                    {
+                                                        var calcuResult = allCalcuResultList?.Find(t => t.Code == pump.Code);
+                                                        if (calcuResult is HydroCalcuLinkResult calcuLinkResult)
+                                                        {
+                                                            if (calcuLinkResult.CalcuVelocity.HasValue)
+                                                            {
+                                                                var grading = gradingList.Meet(Math.Abs(calcuLinkResult.CalcuVelocity.Value));
+                                                                if (grading != null)
+                                                                {
+                                                                    var result = new HydroGradingApplyResultViewModel()
+                                                                    {
+                                                                        Code = pump.Code,
+                                                                        Color = grading.Color
+                                                                    };
+                                                                    allGradingApplyResultList.Add(result);
+                                                                }
+                                                            }
+                                                        }
+                                                    }
+                                                }
+                                                break;
+                                            case Yw.Hydro.ParterProp.CalcuHeadLoss:
+                                                {
+                                                    var gradingList = allCatalogGradingList.Where(x => x.PropName == Yw.Hydro.ParterProp.CalcuHeadLoss).OrderBy(t => t.SortCode).ToList();
+                                                    if (gradingList != null && gradingList.Count > 0)
+                                                    {
+                                                        var calcuResult = allCalcuResultList?.Find(t => t.Code == pump.Code);
+                                                        if (calcuResult is HydroCalcuLinkResult calcuLinkResult)
+                                                        {
+                                                            if (calcuLinkResult.CalcuHeadLoss.HasValue)
+                                                            {
+                                                                var grading = gradingList.Meet(Math.Abs(calcuLinkResult.CalcuHeadLoss.Value));
+                                                                if (grading != null)
+                                                                {
+                                                                    var result = new HydroGradingApplyResultViewModel()
+                                                                    {
+                                                                        Code = pump.Code,
+                                                                        Color = grading.Color
+                                                                    };
+                                                                    allGradingApplyResultList.Add(result);
+                                                                }
+                                                            }
+                                                        }
+                                                    }
+                                                }
+                                                break;
+                                            default: break;
+                                        }
+                                    }
+                                }
+                            }
+                            break;
+                        case Yw.Hydro.ParterCatalog.Valve:
+                            {
+                                if (_hydroInfo.Valves != null && _hydroInfo.Valves.Count > 0)
+                                {
+                                    foreach (var valve in _hydroInfo.Valves)
+                                    {
+                                        switch (x.PropName)
+                                        {
+                                            case Yw.Hydro.ParterProp.LinkStatus:
+                                                {
+                                                    var gradingList = allCatalogGradingList.Where(x => x.PropName == Yw.Hydro.ParterProp.LinkStatus).OrderBy(t => t.SortCode).ToList();
+                                                    if (gradingList != null && gradingList.Count > 0)
+                                                    {
+                                                        var grading = gradingList.Meet(valve.LinkStatus);
+                                                        if (grading != null)
+                                                        {
+                                                            var result = new HydroGradingApplyResultViewModel()
+                                                            {
+                                                                Code = valve.Code,
+                                                                Color = grading.Color
+                                                            };
+                                                            allGradingApplyResultList.Add(result);
+                                                        }
+                                                    }
+                                                }
+                                                break;
+                                            case Yw.Hydro.ParterProp.CalcuFlow:
+                                                {
+                                                    var gradingList = allCatalogGradingList.Where(x => x.PropName == Yw.Hydro.ParterProp.CalcuFlow).OrderBy(t => t.SortCode).ToList();
+                                                    if (gradingList != null && gradingList.Count > 0)
+                                                    {
+                                                        var calcuResult = allCalcuResultList?.Find(t => t.Code == valve.Code);
+                                                        if (calcuResult is HydroCalcuLinkResult calcuLinkResult)
+                                                        {
+                                                            if (calcuLinkResult.CalcuFlow.HasValue)
+                                                            {
+                                                                var grading = gradingList.Meet(Math.Abs(calcuLinkResult.CalcuFlow.Value));
+                                                                if (grading != null)
+                                                                {
+                                                                    var result = new HydroGradingApplyResultViewModel()
+                                                                    {
+                                                                        Code = valve.Code,
+                                                                        Color = grading.Color
+                                                                    };
+                                                                    allGradingApplyResultList.Add(result);
+                                                                }
+                                                            }
+                                                        }
+                                                    }
+                                                }
+                                                break;
+                                            case Yw.Hydro.ParterProp.CalcuVelocity:
+                                                {
+                                                    var gradingList = allCatalogGradingList.Where(x => x.PropName == Yw.Hydro.ParterProp.CalcuVelocity).OrderBy(t => t.SortCode).ToList();
+                                                    if (gradingList != null && gradingList.Count > 0)
+                                                    {
+                                                        var calcuResult = allCalcuResultList?.Find(t => t.Code == valve.Code);
+                                                        if (calcuResult is HydroCalcuLinkResult calcuLinkResult)
+                                                        {
+                                                            if (calcuLinkResult.CalcuVelocity.HasValue)
+                                                            {
+                                                                var grading = gradingList.Meet(Math.Abs(calcuLinkResult.CalcuVelocity.Value));
+                                                                if (grading != null)
+                                                                {
+                                                                    var result = new HydroGradingApplyResultViewModel()
+                                                                    {
+                                                                        Code = valve.Code,
+                                                                        Color = grading.Color
+                                                                    };
+                                                                    allGradingApplyResultList.Add(result);
+                                                                }
+                                                            }
+                                                        }
+                                                    }
+                                                }
+                                                break;
+                                            case Yw.Hydro.ParterProp.CalcuHeadLoss:
+                                                {
+                                                    var gradingList = allCatalogGradingList.Where(x => x.PropName == Yw.Hydro.ParterProp.CalcuHeadLoss).OrderBy(t => t.SortCode).ToList();
+                                                    if (gradingList != null && gradingList.Count > 0)
+                                                    {
+                                                        var calcuResult = allCalcuResultList?.Find(t => t.Code == valve.Code);
+                                                        if (calcuResult is HydroCalcuLinkResult calcuLinkResult)
+                                                        {
+                                                            if (calcuLinkResult.CalcuHeadLoss.HasValue)
+                                                            {
+                                                                var grading = gradingList.Meet(Math.Abs(calcuLinkResult.CalcuHeadLoss.Value));
+                                                                if (grading != null)
+                                                                {
+                                                                    var result = new HydroGradingApplyResultViewModel()
+                                                                    {
+                                                                        Code = valve.Code,
+                                                                        Color = grading.Color
+                                                                    };
+                                                                    allGradingApplyResultList.Add(result);
+                                                                }
+                                                            }
+                                                        }
+                                                    }
+                                                }
+                                                break;
+                                            default: break;
+                                        }
+                                    }
+                                }
+                            }
+                            break;
+                        case Yw.Hydro.ParterCatalog.Pipe:
+                            {
+                                if (_hydroInfo.Pipes != null && _hydroInfo.Pipes.Count > 0)
+                                {
+                                    foreach (var pipe in _hydroInfo.Pipes)
+                                    {
+                                        switch (x.PropName)
+                                        {
+                                            case Yw.Hydro.ParterProp.CalcuFlow:
+                                                {
+                                                    var gradingList = allCatalogGradingList.Where(x => x.PropName == Yw.Hydro.ParterProp.CalcuFlow).OrderBy(t => t.SortCode).ToList();
+                                                    if (gradingList != null && gradingList.Count > 0)
+                                                    {
+                                                        var calcuResult = allCalcuResultList?.Find(t => t.Code == pipe.Code);
+                                                        if (calcuResult is HydroCalcuLinkResult calcuLinkResult)
+                                                        {
+                                                            if (calcuLinkResult.CalcuFlow.HasValue)
+                                                            {
+                                                                var grading = gradingList.Meet(Math.Abs(calcuLinkResult.CalcuFlow.Value));
+                                                                if (grading != null)
+                                                                {
+                                                                    var result = new HydroGradingApplyResultViewModel()
+                                                                    {
+                                                                        Code = pipe.Code,
+                                                                        Color = grading.Color
+                                                                    };
+                                                                    allGradingApplyResultList.Add(result);
+                                                                }
+                                                            }
+                                                        }
+                                                    }
+                                                }
+                                                break;
+                                            case Yw.Hydro.ParterProp.CalcuVelocity:
+                                                {
+                                                    var gradingList = allCatalogGradingList.Where(x => x.PropName == Yw.Hydro.ParterProp.CalcuVelocity).OrderBy(t => t.SortCode).ToList();
+                                                    if (gradingList != null && gradingList.Count > 0)
+                                                    {
+                                                        var calcuResult = allCalcuResultList?.Find(t => t.Code == pipe.Code);
+                                                        if (calcuResult is HydroCalcuLinkResult calcuLinkResult)
+                                                        {
+                                                            if (calcuLinkResult.CalcuVelocity.HasValue)
+                                                            {
+                                                                var grading = gradingList.Meet(Math.Abs(calcuLinkResult.CalcuVelocity.Value));
+                                                                if (grading != null)
+                                                                {
+                                                                    var result = new HydroGradingApplyResultViewModel()
+                                                                    {
+                                                                        Code = pipe.Code,
+                                                                        Color = grading.Color
+                                                                    };
+                                                                    allGradingApplyResultList.Add(result);
+                                                                }
+                                                            }
+                                                        }
+                                                    }
+                                                }
+                                                break;
+                                            case Yw.Hydro.ParterProp.CalcuHeadLoss:
+                                                {
+                                                    var gradingList = allCatalogGradingList.Where(x => x.PropName == Yw.Hydro.ParterProp.CalcuHeadLoss).OrderBy(t => t.SortCode).ToList();
+                                                    if (gradingList != null && gradingList.Count > 0)
+                                                    {
+                                                        var calcuResult = allCalcuResultList?.Find(t => t.Code == pipe.Code);
+                                                        if (calcuResult is HydroCalcuLinkResult calcuLinkResult)
+                                                        {
+                                                            if (calcuLinkResult.CalcuHeadLoss.HasValue)
+                                                            {
+                                                                var grading = gradingList.Meet(Math.Abs(calcuLinkResult.CalcuHeadLoss.Value));
+                                                                if (grading != null)
+                                                                {
+                                                                    var result = new HydroGradingApplyResultViewModel()
+                                                                    {
+                                                                        Code = pipe.Code,
+                                                                        Color = grading.Color
+                                                                    };
+                                                                    allGradingApplyResultList.Add(result);
+                                                                }
+                                                            }
+                                                        }
+                                                    }
+                                                }
+                                                break;
+                                            default: break;
+                                        }
+                                    }
+                                }
+                            }
+                            break;
+                        default: break;
+                    }
+                }
+            });
+
+            return allGradingApplyResultList;
+        }
+
+        //鑾峰彇棰滆壊鍒嗙骇搴旂敤缁撴灉鍒楄〃
+        private async Task<List<HydroGradingApplyResultViewModel>> GetGradingApplyResultList(string catalog, string propName)
+        {
+            if (_hydroInfo == null)
+            {
+                return default;
+            }
+
+            //鎵�鏈夊垎绾у垪琛�
+            var allGradingList = await GetGradingList();
+            if (allGradingList == null || allGradingList.Count < 1)
+            {
+                return default;
+            }
+            var currentGradingList = allGradingList.Where(x => x.Catalog == catalog).ToList();
+            if (currentGradingList.Count < 1)
+            {
+                return default;
+            }
+
+            //鎵�鏈夊垎绾у簲鐢ㄥ垪琛�
+            var allGradingApplyList = GetGradingApplyList();
+            if (allGradingApplyList == null || allGradingApplyList.Count < 1)
+            {
+                return default;
+            }
+
+            //褰撳墠鍒嗙骇搴旂敤
+            var gradingApply = allGradingApplyList.Find(x => x.Code == catalog);
+            if (gradingApply == null)
+            {
+                return default;
+            }
+            gradingApply.PropName = propName;
+
+            //鎵�鏈夎绠楃粨鏋�
+            var allCalcuResultList = GetCalcuResultList();
+
+            //搴旂敤缁撴灉鍒楄〃
+            var gradingApplyResultList = new List<HydroGradingApplyResultViewModel>();
+
+            switch (catalog)
+            {
+                case Yw.Hydro.ParterCatalog.Pump:
+                    {
+                        if (_hydroInfo.Pumps != null && _hydroInfo.Pumps.Count > 0)
+                        {
+                            foreach (var pump in _hydroInfo.Pumps)
+                            {
+                                switch (propName)
+                                {
+                                    case Yw.Hydro.ParterProp.LinkStatus:
+                                        {
+                                            var gradingList = currentGradingList.Where(x => x.PropName == Yw.Hydro.ParterProp.LinkStatus).OrderBy(t => t.SortCode).ToList();
+                                            if (gradingList != null && gradingList.Count > 0)
+                                            {
+                                                var grading = gradingList.Meet(pump.LinkStatus);
+                                                if (grading != null)
+                                                {
+                                                    var result = new HydroGradingApplyResultViewModel()
+                                                    {
+                                                        Code = pump.Code,
+                                                        Color = grading.Color
+                                                    };
+                                                    gradingApplyResultList.Add(result);
+                                                }
+                                            }
+                                        }
+                                        break;
+                                    case Yw.Hydro.ParterProp.CalcuFlow:
+                                        {
+                                            var gradingList = currentGradingList.Where(x => x.PropName == Yw.Hydro.ParterProp.CalcuFlow).OrderBy(t => t.SortCode).ToList();
+                                            if (gradingList != null && gradingList.Count > 0)
+                                            {
+                                                var calcuResult = allCalcuResultList?.Find(t => t.Code == pump.Code);
+                                                if (calcuResult is HydroCalcuLinkResult calcuLinkResult)
+                                                {
+                                                    if (calcuLinkResult.CalcuFlow.HasValue)
+                                                    {
+                                                        var grading = gradingList.Meet(Math.Abs(calcuLinkResult.CalcuFlow.Value));
+                                                        if (grading != null)
+                                                        {
+                                                            var result = new HydroGradingApplyResultViewModel()
+                                                            {
+                                                                Code = pump.Code,
+                                                                Color = grading.Color
+                                                            };
+                                                            gradingApplyResultList.Add(result);
+                                                        }
+                                                    }
+                                                }
+                                            }
+                                        }
+                                        break;
+                                    case Yw.Hydro.ParterProp.CalcuVelocity:
+                                        {
+                                            var gradingList = currentGradingList.Where(x => x.PropName == Yw.Hydro.ParterProp.CalcuVelocity).OrderBy(t => t.SortCode).ToList();
+                                            if (gradingList != null && gradingList.Count > 0)
+                                            {
+                                                var calcuResult = allCalcuResultList?.Find(t => t.Code == pump.Code);
+                                                if (calcuResult is HydroCalcuLinkResult calcuLinkResult)
+                                                {
+                                                    if (calcuLinkResult.CalcuVelocity.HasValue)
+                                                    {
+                                                        var grading = gradingList.Meet(Math.Abs(calcuLinkResult.CalcuVelocity.Value));
+                                                        if (grading != null)
+                                                        {
+                                                            var result = new HydroGradingApplyResultViewModel()
+                                                            {
+                                                                Code = pump.Code,
+                                                                Color = grading.Color
+                                                            };
+                                                            gradingApplyResultList.Add(result);
+                                                        }
+                                                    }
+                                                }
+                                            }
+                                        }
+                                        break;
+                                    case Yw.Hydro.ParterProp.CalcuHeadLoss:
+                                        {
+                                            var gradingList = currentGradingList.Where(x => x.PropName == Yw.Hydro.ParterProp.CalcuHeadLoss).OrderBy(t => t.SortCode).ToList();
+                                            if (gradingList != null && gradingList.Count > 0)
+                                            {
+                                                var calcuResult = allCalcuResultList?.Find(t => t.Code == pump.Code);
+                                                if (calcuResult is HydroCalcuLinkResult calcuLinkResult)
+                                                {
+                                                    if (calcuLinkResult.CalcuHeadLoss.HasValue)
+                                                    {
+                                                        var grading = gradingList.Meet(Math.Abs(calcuLinkResult.CalcuHeadLoss.Value));
+                                                        if (grading != null)
+                                                        {
+                                                            var result = new HydroGradingApplyResultViewModel()
+                                                            {
+                                                                Code = pump.Code,
+                                                                Color = grading.Color
+                                                            };
+                                                            gradingApplyResultList.Add(result);
+                                                        }
+                                                    }
+                                                }
+                                            }
+                                        }
+                                        break;
+                                    default: break;
+                                }
+                            }
+                        }
+                    }
+                    break;
+                case Yw.Hydro.ParterCatalog.Valve:
+                    {
+                        if (_hydroInfo.Valves != null && _hydroInfo.Valves.Count > 0)
+                        {
+                            foreach (var valve in _hydroInfo.Valves)
+                            {
+                                switch (propName)
+                                {
+                                    case Yw.Hydro.ParterProp.LinkStatus:
+                                        {
+                                            var gradingList = currentGradingList.Where(x => x.PropName == Yw.Hydro.ParterProp.LinkStatus).OrderBy(t => t.SortCode).ToList();
+                                            if (gradingList != null && gradingList.Count > 0)
+                                            {
+                                                var grading = gradingList.Meet(valve.LinkStatus);
+                                                if (grading != null)
+                                                {
+                                                    var result = new HydroGradingApplyResultViewModel()
+                                                    {
+                                                        Code = valve.Code,
+                                                        Color = grading.Color
+                                                    };
+                                                    gradingApplyResultList.Add(result);
+                                                }
+                                            }
+                                        }
+                                        break;
+                                    case Yw.Hydro.ParterProp.CalcuFlow:
+                                        {
+                                            var gradingList = currentGradingList.Where(x => x.PropName == Yw.Hydro.ParterProp.CalcuFlow).OrderBy(t => t.SortCode).ToList();
+                                            if (gradingList != null && gradingList.Count > 0)
+                                            {
+                                                var calcuResult = allCalcuResultList?.Find(t => t.Code == valve.Code);
+                                                if (calcuResult is HydroCalcuLinkResult calcuLinkResult)
+                                                {
+                                                    if (calcuLinkResult.CalcuFlow.HasValue)
+                                                    {
+                                                        var grading = gradingList.Meet(Math.Abs(calcuLinkResult.CalcuFlow.Value));
+                                                        if (grading != null)
+                                                        {
+                                                            var result = new HydroGradingApplyResultViewModel()
+                                                            {
+                                                                Code = valve.Code,
+                                                                Color = grading.Color
+                                                            };
+                                                            gradingApplyResultList.Add(result);
+                                                        }
+                                                    }
+                                                }
+                                            }
+                                        }
+                                        break;
+                                    case Yw.Hydro.ParterProp.CalcuVelocity:
+                                        {
+                                            var gradingList = currentGradingList.Where(x => x.PropName == Yw.Hydro.ParterProp.CalcuVelocity).OrderBy(t => t.SortCode).ToList();
+                                            if (gradingList != null && gradingList.Count > 0)
+                                            {
+                                                var calcuResult = allCalcuResultList?.Find(t => t.Code == valve.Code);
+                                                if (calcuResult is HydroCalcuLinkResult calcuLinkResult)
+                                                {
+                                                    if (calcuLinkResult.CalcuVelocity.HasValue)
+                                                    {
+                                                        var grading = gradingList.Meet(Math.Abs(calcuLinkResult.CalcuVelocity.Value));
+                                                        if (grading != null)
+                                                        {
+                                                            var result = new HydroGradingApplyResultViewModel()
+                                                            {
+                                                                Code = valve.Code,
+                                                                Color = grading.Color
+                                                            };
+                                                            gradingApplyResultList.Add(result);
+                                                        }
+                                                    }
+                                                }
+                                            }
+                                        }
+                                        break;
+                                    case Yw.Hydro.ParterProp.CalcuHeadLoss:
+                                        {
+                                            var gradingList = currentGradingList.Where(x => x.PropName == Yw.Hydro.ParterProp.CalcuHeadLoss).OrderBy(t => t.SortCode).ToList();
+                                            if (gradingList != null && gradingList.Count > 0)
+                                            {
+                                                var calcuResult = allCalcuResultList?.Find(t => t.Code == valve.Code);
+                                                if (calcuResult is HydroCalcuLinkResult calcuLinkResult)
+                                                {
+                                                    if (calcuLinkResult.CalcuHeadLoss.HasValue)
+                                                    {
+                                                        var grading = gradingList.Meet(Math.Abs(calcuLinkResult.CalcuHeadLoss.Value));
+                                                        if (grading != null)
+                                                        {
+                                                            var result = new HydroGradingApplyResultViewModel()
+                                                            {
+                                                                Code = valve.Code,
+                                                                Color = grading.Color
+                                                            };
+                                                            gradingApplyResultList.Add(result);
+                                                        }
+                                                    }
+                                                }
+                                            }
+                                        }
+                                        break;
+                                    default: break;
+                                }
+                            }
+                        }
+                    }
+                    break;
+                case Yw.Hydro.ParterCatalog.Pipe:
+                    {
+                        if (_hydroInfo.Pipes != null && _hydroInfo.Pipes.Count > 0)
+                        {
+                            foreach (var pipe in _hydroInfo.Pipes)
+                            {
+                                switch (propName)
+                                {
+                                    case Yw.Hydro.ParterProp.CalcuFlow:
+                                        {
+                                            var gradingList = currentGradingList.Where(x => x.PropName == Yw.Hydro.ParterProp.CalcuFlow).OrderBy(t => t.SortCode).ToList();
+                                            if (gradingList != null && gradingList.Count > 0)
+                                            {
+                                                var calcuResult = allCalcuResultList?.Find(t => t.Code == pipe.Code);
+                                                if (calcuResult is HydroCalcuLinkResult calcuLinkResult)
+                                                {
+                                                    if (calcuLinkResult.CalcuFlow.HasValue)
+                                                    {
+                                                        var grading = gradingList.Meet(Math.Abs(calcuLinkResult.CalcuFlow.Value));
+                                                        if (grading != null)
+                                                        {
+                                                            var result = new HydroGradingApplyResultViewModel()
+                                                            {
+                                                                Code = pipe.Code,
+                                                                Color = grading.Color
+                                                            };
+                                                            gradingApplyResultList.Add(result);
+                                                        }
+                                                    }
+                                                }
+                                            }
+                                        }
+                                        break;
+                                    case Yw.Hydro.ParterProp.CalcuVelocity:
+                                        {
+                                            var gradingList = currentGradingList.Where(x => x.PropName == Yw.Hydro.ParterProp.CalcuVelocity).OrderBy(t => t.SortCode).ToList();
+                                            if (gradingList != null && gradingList.Count > 0)
+                                            {
+                                                var calcuResult = allCalcuResultList?.Find(t => t.Code == pipe.Code);
+                                                if (calcuResult is HydroCalcuLinkResult calcuLinkResult)
+                                                {
+                                                    if (calcuLinkResult.CalcuVelocity.HasValue)
+                                                    {
+                                                        var grading = gradingList.Meet(Math.Abs(calcuLinkResult.CalcuVelocity.Value));
+                                                        if (grading != null)
+                                                        {
+                                                            var result = new HydroGradingApplyResultViewModel()
+                                                            {
+                                                                Code = pipe.Code,
+                                                                Color = grading.Color
+                                                            };
+                                                            gradingApplyResultList.Add(result);
+                                                        }
+                                                    }
+                                                }
+                                            }
+                                        }
+                                        break;
+                                    case Yw.Hydro.ParterProp.CalcuHeadLoss:
+                                        {
+                                            var gradingList = currentGradingList.Where(x => x.PropName == Yw.Hydro.ParterProp.CalcuHeadLoss).OrderBy(t => t.SortCode).ToList();
+                                            if (gradingList != null && gradingList.Count > 0)
+                                            {
+                                                var calcuResult = allCalcuResultList?.Find(t => t.Code == pipe.Code);
+                                                if (calcuResult is HydroCalcuLinkResult calcuLinkResult)
+                                                {
+                                                    if (calcuLinkResult.CalcuHeadLoss.HasValue)
+                                                    {
+                                                        var grading = gradingList.Meet(Math.Abs(calcuLinkResult.CalcuHeadLoss.Value));
+                                                        if (grading != null)
+                                                        {
+                                                            var result = new HydroGradingApplyResultViewModel()
+                                                            {
+                                                                Code = pipe.Code,
+                                                                Color = grading.Color
+                                                            };
+                                                            gradingApplyResultList.Add(result);
+                                                        }
+                                                    }
+                                                }
+                                            }
+                                        }
+                                        break;
+                                    default: break;
+                                }
+                            }
+                        }
+                    }
+                    break;
+                default: break;
+            }
+
+            return gradingApplyResultList;
+        }
+
+        //棰滆壊鍒嗙骇鏄惁搴旂敤浜�
+        private bool _isGradingApply = false;
+        //棰滆壊鍒嗙骇搴旂敤缂栫爜鍒楄〃
+        private List<string> _allGradingApplyCodeList = null;
+
+        //搴旂敤棰滆壊鍒嗙骇
+        private async void ApplyGrading()
+        {
+            if (_hydroInfo == null)
+            {
+                return;
+            }
+            _isGradingApply = true;
+            var allGradingApplyResultList = await GetGradingApplyResultList();
+            if (allGradingApplyResultList == null || allGradingApplyResultList.Count < 1)
+            {
+                CancelApplyGrading();
+                return;
+            }
+            var objGroupList = allGradingApplyResultList.GroupBy(x => x.Color).ToList();
+            objGroupList.ForEach(async x =>
+            {
+                await _bimfaceCtrl?.OverrideComponentsColor(x.Select(t => t.Code).Distinct().ToList(), x.Key, 1);
+            });
+            _allGradingApplyCodeList = allGradingApplyResultList.Select(x => x.Code).Distinct().ToList();
+        }
+
+        //搴旂敤棰滆壊鍒嗙骇
+        private async void ApplyGrading(string catalog, string propName)
+        {
+            if (_hydroInfo == null)
+            {
+                return;
+            }
+            _isGradingApply = true;
+            var allGradingApplyResultList = await GetGradingApplyResultList(catalog, propName);
+            if (allGradingApplyResultList == null || allGradingApplyResultList.Count < 1)
+            {
+                return;
+            }
+            var objGroupList = allGradingApplyResultList.GroupBy(x => x.Color).ToList();
+            objGroupList.ForEach(async x =>
+            {
+                await _bimfaceCtrl?.OverrideComponentsColor(x.Select(t => t.Code).Distinct().ToList(), x.Key, 1);
+            });
+            var codeList = allGradingApplyResultList.Select(x => x.Code);
+            if (_allGradingApplyCodeList == null)
+            {
+                _allGradingApplyCodeList = new List<string>();
+            }
+            _allGradingApplyCodeList.AddRange(codeList);
+            _allGradingApplyCodeList = _allGradingApplyCodeList.Distinct().ToList();
+        }
+
+        //鑷姩搴旂敤棰滆壊鍒嗙骇
+        private void AutoApplyGrading()
+        {
+            if (!_isGradingApply)
+            {
+                return;
+            }
+            ApplyGrading();
+        }
+
+        //鍙栨秷搴旂敤棰滆壊鍒嗙骇
+        private async void CancelApplyGrading()
+        {
+            if (_hydroInfo == null)
+            {
+                return;
+            }
+            _isGradingApply = false;
+            if (_allGradingApplyCodeList != null && _allGradingApplyCodeList.Count > 0)
+            {
+                await _bimfaceCtrl?.RestoreComponentsColor(_allGradingApplyCodeList);
+            }
+        }
+
+        //鏄剧ず搴旂敤棰滆壊鍒嗙骇绐椾綋
+        private void ShowApplyGradingDlg()
+        {
+            if (_hydroInfo == null)
+            {
+                return;
+            }
+            var allGradingApplyList = GetGradingApplyList();
+            if (allGradingApplyList == null || allGradingApplyList.Count < 1)
+            {
+                return;
+            }
+            var dlg = new ApplyHydroGradingDlg();
+            dlg.SetBindingData(allGradingApplyList);
+            dlg.ReloadDataEvent += (obj) =>
+            {
+                _allGradingApplyList = obj;
+                ApplyGrading();
+            };
+            dlg.ShowDialog();
+        }
+
+        //搴旂敤棰滆壊鍒嗙骇
+        private void barBtnGradingApply_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
+        {
+            ShowApplyGradingDlg();
+        }
+
+        //鍙栨秷搴旂敤鍒嗙骇
+        private void batBtnCancelGradingApply_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
+        {
+            CancelApplyGrading();
+        }
+
+        #endregion
+
+        #endregion
+
+        #region 浜哄伐鍒锋柊
+
+        //鍒锋柊
+        private async void barBtnRefresh_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
+        {
+            if (XtraMessageBox.Show("鍒锋柊鍚庡皢涓㈠け褰撳墠姘村姏淇℃伅鏇存敼锛屾槸鍚︾户缁埛鏂帮紵", "璇㈤棶", MessageBoxButtons.YesNo) == DialogResult.Yes)
+            {
+                if (_project == null)
+                {
+                    return;
+                }
+                if (_projectSite == null)
+                {
+                    return;
+                }
+                var hydroRelation = await BLLFactory<Yw.BLL.HydroModelRelation>.Instance
+                    .GetDefaultByObjectTypeAndObjectIDOfPurpose(HStation.Xhs.DataType.XhsProjectSite, _projectSite.ID, HStation.Xhs.Purpose.Simulation);
+                Stopwatch sw = new Stopwatch();
+                sw.Start();
+                _hydroInfo = await BLLFactory<Yw.BLL.HydroModelInfo>.Instance.GetByID(hydroRelation.ModelID);
+                sw.Stop();
+                TimeSpan ts2 = sw.Elapsed;
+                Console.WriteLine("Stopwatch鎬诲叡鑺辫垂{0}ms.", ts2.TotalMilliseconds);
+                _selectedVisual = null;
+                await _bimfaceCtrl?.ZoomAndSelectComponents(null);
+                ShowSelectedProperty();
+                TipFormHelper.ShowSucceed("鏁版嵁宸插埛鏂�");
+            }
+        }
+
+        #endregion
+
+        #region 姘存祦鍔ㄧ敾
+
+        //鎵�鏈夋祦鍚戝垪琛�
+        private List<Yw.WinFrmUI.Bimface.LogicFlowEffect> _allFlowEffectList = null;
+
+        //鑾峰彇娴佸悜鍒楄〃
+        private List<Yw.WinFrmUI.Bimface.LogicFlowEffect> GetFlowEffectList()
+        {
+            if (_allFlowEffectList == null)
+            {
+                if (_hydroInfo == null)
+                {
+                    return default;
+                }
+                _allFlowEffectList = new List<LogicFlowEffect>();
+                var allCalcuResultList = GetCalcuResultList();
+                if (_hydroInfo.Pipes != null && _hydroInfo.Pipes.Count > 0)
+                {
+                    foreach (var parter in _hydroInfo.Pipes)
+                    {
+                        var flowEffect = new LogicFlowEffect();
+                        _allFlowEffectList.Add(flowEffect);
+                        flowEffect.Id = parter.Code;
+                        flowEffect.Rotation = 90;
+                        flowEffect.SpeedX = 0.1;
+                        if (parter.FlowDirectionX == Yw.Hydro.FlowDirection.None)
+                        {
+                            flowEffect.SpeedX = 0;
+                        }
+                        else if (parter.FlowDirectionX == Yw.Hydro.FlowDirection.Positive)
+                        {
+                            flowEffect.SpeedX = 0.1;
+                        }
+                        else
+                        {
+                            flowEffect.SpeedX = -0.1;
+                        }
+
+                        if (parter.FlowDirectionY == Yw.Hydro.FlowDirection.None)
+                        {
+                            flowEffect.SpeedY = 0;
+                        }
+                        else if (parter.FlowDirectionY == Yw.Hydro.FlowDirection.Positive)
+                        {
+                            flowEffect.SpeedY = 0.1;
+                        }
+                        else
+                        {
+                            flowEffect.SpeedY = -0.1;
+                        }
+
+                        var calcuResult = allCalcuResultList?.Find(x => x.Code == parter.Code) as HydroCalcuLinkResult;
+                        if (calcuResult != null)
+                        {
+                            if (calcuResult.CalcuVelocity < 0)
+                            {
+                                flowEffect.SpeedX = -flowEffect.SpeedX;
+                            }
+                        }
+                    }
+                }
+            }
+            return _allFlowEffectList;
+        }
+
+        /// <summary>
+        /// 鍔犺浇姘存祦鍔ㄧ敾
+        /// </summary>
+        private async void LoadFlowEffect()
+        {
+            if (_allFlowEffectList != null)
+            {
+                return;
+            }
+            var allFlowEffectList = GetFlowEffectList();
+            await _bimfaceCtrl?.LoadFlowEffect(allFlowEffectList);
+        }
+
+        //鍗歌浇娴佸悜
+        private async void UnloadFlowEffect()
+        {
+            if (_allFlowEffectList == null)
+            {
+                return;
+            }
+            _allFlowEffectList = null;
+            await _bimfaceCtrl?.UnloadFlowEffect();
+        }
+
+        //鏇存柊姘存祦鍔ㄧ敾
+        private async void UpdateFlowEffect(Yw.Model.HydroParterInfo parter)
+        {
+            if (_allFlowEffectList == null)
+            {
+                return;
+            }
+            var visual = parter as Yw.Model.HydroVisualInfo;
+            if (visual == null)
+            {
+                return;
+            }
+            var flowEffect = _allFlowEffectList.Find(x => x.Id == parter.Code);
+            if (flowEffect == null)
+            {
+                return;
+            }
+            if (visual.FlowDirectionX == Yw.Hydro.FlowDirection.None)
+            {
+                flowEffect.SpeedX = 0;
+            }
+            else if (visual.FlowDirectionX == Yw.Hydro.FlowDirection.Positive)
+            {
+                flowEffect.SpeedX = 0.1;
+            }
+            else
+            {
+                flowEffect.SpeedX = -0.1;
+            }
+
+            if (visual.FlowDirectionY == Yw.Hydro.FlowDirection.None)
+            {
+                flowEffect.SpeedY = 0;
+            }
+            else if (visual.FlowDirectionY == Yw.Hydro.FlowDirection.Positive)
+            {
+                flowEffect.SpeedY = 0.1;
+            }
+            else
+            {
+                flowEffect.SpeedY = -0.1;
+            }
+
+            var allCalcuResultList = GetCalcuResultList();
+            var calcuResult = allCalcuResultList?.Find(x => x.Code == visual.Code) as HydroCalcuLinkResult;
+            if (calcuResult != null)
+            {
+                if (calcuResult.CalcuVelocity < 0)
+                {
+                    flowEffect.SpeedX = -flowEffect.SpeedX;
+                }
+            }
+            await _bimfaceCtrl?.UpdateFlowEffect(flowEffect);
+        }
+
+        //鍔犺浇娴佸悜
+        private void barBtnLoadFlowDirection_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
+        {
+            LoadFlowEffect();
+        }
+
+        //鍗歌浇娴佸悜
+        private void barBtnUnloadFlowDirection_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
+        {
+            UnloadFlowEffect();
+        }
+
+        #endregion
+
+        #region 鍙瑙嗗浘
+
+        //鎵�鏈夊彲瑙佽鍥惧垪琛�
+        private List<HydroVisualViewModel> _allVisualViewModelList = null;
+
+        //鑾峰彇鍙瑙嗗浘鍒楄〃
+        private List<HydroVisualViewModel> GetVisualViewModelList()
+        {
+            if (_hydroInfo == null)
+            {
+                return default;
+            }
+            if (_allVisualViewModelList == null)
+            {
+                _allVisualViewModelList = new List<HydroVisualViewModel>();
+                var allVisualList = _hydroInfo.GetAllVisuals();
+                if (allVisualList != null && allVisualList.Count > 0)
+                {
+                    var allCalcuResultList = GetCalcuResultList();
+                    allVisualList.ForEach(x =>
+                    {
+                        var vm = HydroVisualViewModelBuilder.CreateVisualViewModel(x, _hydroInfo);
+                        var calcuResult = allCalcuResultList?.Find(x => x.Code == x.Code);
+                        if (calcuResult != null)
+                        {
+                            vm.UpdateCalcuProperty(calcuResult);
+                        }
+                        _allVisualViewModelList.Add(vm);
+                    });
+                }
+            }
+            return _allVisualViewModelList;
+        }
+
+        //鏇存柊鍙瑙嗗浘璁$畻灞炴��
+        private void UpdateVisualViewModelCalcuProperty()
+        {
+            var allVisualViewModelList = GetVisualViewModelList();
+            if (allVisualViewModelList != null && allVisualViewModelList.Count > 0)
+            {
+                var allCalcuResultList = GetCalcuResultList();
+                if (allCalcuResultList != null && allCalcuResultList.Count > 0)
+                {
+                    allVisualViewModelList.ForEach(x =>
+                    {
+                        var calcuResult = allCalcuResultList.Find(t => t.Code == x.Code);
+                        if (calcuResult != null)
+                        {
+                            x.UpdateCalcuProperty(calcuResult);
+                        }
+                    });
+                }
+            }
+        }
+
+        //鑾峰彇鍙瑙嗗浘
+        private HydroVisualViewModel GetVisualViewModel(Yw.Model.HydroVisualInfo visual)
+        {
+            if (visual == null)
+            {
+                return default;
+            }
+            var allVisualViewModelList = GetVisualViewModelList();
+            return allVisualViewModelList?.Find(x => x.Code == visual.Code);
+        }
+
+        #endregion
+
+        #region 閫夋嫨鏋勪欢
+
+        //閫夋嫨鏋勪欢
+        private Yw.Model.HydroVisualInfo _selectedVisual = null;
+
+
+        #endregion
+
+        #region 鏋勪欢鏄庣粏
+
+        //鏋勪欢鏄庣粏鎺т欢
+        private Yw.WinFrmUI.HydroVisualListCtrl _visualListCtrl = null;
+
+        //鑾峰彇鏋勪欢鏄庣粏鎺т欢
+        private Yw.WinFrmUI.HydroVisualListCtrl GetVisualListCtrl()
+        {
+            if (_visualListCtrl == null)
+            {
+                _visualListCtrl = new HydroVisualListCtrl();
+                _visualListCtrl.Dock = DockStyle.Fill;
+                _visualListCtrl.HydroClickInfoEvent += async (visual) =>
+                {
+                    ShowSelectedProperty(visual);
+                    await _bimfaceCtrl?.ZoomAndSelectComponent(_selectedVisual?.Code);
+                };
+                _visualListCtrl.HydroChangedInfoEvent += (visualList) =>
+                {
+                    UpdateSelectedProperty();
+                    AutoApplyGrading();
+                };
+            }
+            return _visualListCtrl;
+        }
+
+        //鏋勪欢鏄庣粏鎺т欢鏄惁鍙
+        private bool IsVisualListCtrlVisible
+        {
+            get
+            {
+                if (this.docPnlBottom.Visibility == DevExpress.XtraBars.Docking.DockVisibility.Visible)
+                {
+                    if (this.controlContainerBottom.Controls.Count > 0)
+                    {
+                        if (this.controlContainerBottom.Controls[0] is HydroVisualListCtrl)
+                        {
+                            return true;
+                        }
+                    }
+                }
+                return false;
+            }
+        }
+
+        //鏄剧ず鏋勪欢鏄庣粏鎺т欢
+        private void ShowVisualListCtrl()
+        {
+            if (_hydroInfo == null)
+            {
+                return;
+            }
+            if (IsVisualListCtrlVisible)
+            {
+                return;
+            }
+
+            var visualListCtrl = GetVisualListCtrl();
+            var allVisualViewModelList = GetVisualViewModelList();
+            visualListCtrl.SetBindingData(allVisualViewModelList);
+            var allCalcuResultList = GetCalcuResultList();
+            if (allCalcuResultList == null || allCalcuResultList.Count < 1)
+            {
+                visualListCtrl.SetNormalView();
+            }
+            else
+            {
+                visualListCtrl.SetCalcuView();
+            }
+            this.controlContainerBottom.Controls.Clear();
+            this.controlContainerBottom.Controls.Add(visualListCtrl);
+            this.docPnlBottom.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Visible;
+            this.docPnlBottom.Text = "鏋勪欢鏄庣粏";
+            this.docPnlBottom.Height = 350;
+        }
+
+        //鏇存柊鏋勪欢鏄庣粏鎺т欢
+        private void UpdateVisualListCtrl()
+        {
+            if (!IsVisualListCtrlVisible)
+            {
+                return;
+            }
+            _visualListCtrl?.UpdateBindingData();
+        }
+
+        //鏋勪欢鏄庣粏
+        private void barBtnHydroVisualList_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
+        {
+            ShowVisualListCtrl();
+        }
+
+        #endregion
+
+        #region 姘村姏鏍¢獙
+
+        //鏍¢獙鎺т欢
+        private XhsProjectSimulationHydroCheckResultCtrl _checkCtrl = null;
+
+        //鑾峰彇鏍¢獙鎺т欢
+        private XhsProjectSimulationHydroCheckResultCtrl GetCheckCtrl()
+        {
+            if (_checkCtrl == null)
+            {
+                _checkCtrl = new XhsProjectSimulationHydroCheckResultCtrl();
+                _checkCtrl.Dock = DockStyle.Fill;
+                _checkCtrl.HydroClickEvent += async (code) =>
+                {
+                    if (_hydroInfo == null)
+                    {
+                        return;
+                    }
+                    var elementIds = new List<string>();
+                    if (string.IsNullOrEmpty(code))
+                    {
+                        _selectedVisual = null;
+                    }
+                    else
+                    {
+                        var allParterList = _hydroInfo.GetAllVisuals();
+                        _selectedVisual = allParterList?.Find(x => x.Code == code);
+                        if (_selectedVisual != null)
+                        {
+                            elementIds.Add(_selectedVisual.Code);
+                        }
+                    }
+                    await _bimfaceCtrl?.ZoomAndSelectComponents(elementIds);
+                    ShowSelectedProperty();
+                };
+            }
+            return _checkCtrl;
+        }
+
+        //鏄剧ず妫�鏌ユ帶浠�
+        private void ShowCheckCtrl()
+        {
+            if (_checkResult == null)
+            {
+                return;
+            }
+            var checkCtrl = GetCheckCtrl();
+            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)
+        {
+            if (_hydroInfo == null)
+            {
+                return;
+            }
+            _checkResult = _hydroInfo.Check();
+            ShowCheckCtrl();
+        }
+
+        #endregion
+
+
+    }
+}
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/XhsProjectSimulationSchemeMgrPage.resx b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/XhsProjectSimulationSchemeMgrPage.resx
new file mode 100644
index 0000000..ff18f74
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/XhsProjectSimulationSchemeMgrPage.resx
@@ -0,0 +1,581 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!--
+    Microsoft ResX Schema
+
+    Version 2.0
+
+    The primary goals of this format is to allow a simple XML format
+    that is mostly human readable. The generation and parsing of the
+    various data types are done through the TypeConverter classes
+    associated with the data types.
+
+    Example:
+
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+
+    There are any number of "resheader" rows that contain simple
+    name/value pairs.
+
+    Each data row contains a name, and value. The row also contains a
+    type or mimetype. Type corresponds to a .NET class that support
+    text/value conversion through the TypeConverter architecture.
+    Classes that don't support this are serialized and stored with the
+    mimetype set.
+
+    The mimetype is used for serialized objects, and tells the
+    ResXResourceReader how to depersist the object. This is currently not
+    extensible. For a given mimetype the value must be set accordingly:
+
+    Note - application/x-microsoft.net.object.binary.base64 is the format
+    that the ResXResourceWriter will generate, however the reader can
+    read any of the formats listed below.
+
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <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">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAKMCAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9Cgku
+        WWVsbG93e2ZpbGw6I0ZGQjExNTt9CgkuQmx1ZXtmaWxsOiMxMTc3RDc7fQoJLkdyZWVue2ZpbGw6IzAz
+        OUMyMzt9CgkuUmVke2ZpbGw6I0QxMUMxQzt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh
+        Y2l0eTowLjc1O30KCS5zdDF7b3BhY2l0eTowLjU7fQoJLnN0MntvcGFjaXR5OjAuMjU7fQo8L3N0eWxl
+        Pg0KICA8ZyBpZD0iQ2hlY2tCb3giPg0KICAgIDxwYXRoIGQ9Ik0yNyw0SDVDNC41LDQsNCw0LjUsNCw1
+        djIyYzAsMC41LDAuNSwxLDEsMWgyMmMwLjUsMCwxLTAuNSwxLTFWNUMyOCw0LjUsMjcuNSw0LDI3LDR6
+        IE0xNCwyMmwtNi02bDItMmw0LDQgICBsOC04bDIsMkwxNCwyMnoiIGNsYXNzPSJHcmVlbiIgLz4NCiAg
+        PC9nPg0KPC9zdmc+Cw==
+</value>
+  </data>
+  <data name="barBtnHydroCalcu.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAKoCAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+        MTYgMTYiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsdWV7ZmlsbDojMzQ3NUJBO30KCS5C
+        bGFja3tmaWxsOiM3MzczNzM7fQo8L3N0eWxlPg0KICA8cGF0aCBkPSJNMCwxdjE0aDE2VjFIMHogTTE1
+        LDE0SDFWMmgxNFYxNHoiIGNsYXNzPSJCbGFjayIgLz4NCiAgPHBhdGggZD0iTTcuMiw4SDYuMWwwLjIt
+        MWgxLjFsMC4zLTEuNkM3LjksNSw4LDQuNCw5LjIsNC4xQzkuOSw0LDEwLjUsNCwxMSw0bC0wLjIsMWMt
+        MC4xLDAtMC42LDAtMS4xLDAuMSAgQzkuNCw1LjIsOS4zLDUuMyw5LjMsNS41TDguOSw3aDEuM0wxMCw4
+        SDguN2wtMC41LDIuNmMtMC4xLDAuNC0wLjIsMS0xLjQsMS4zQzYuMSwxMiw1LjUsMTIsNSwxMmwwLjIt
+        MWMwLjEsMCwwLjYsMCwxLjEtMC4xICBjMC4zLTAuMSwwLjQtMC4yLDAuNC0wLjRMNy4yLDh6IiBjbGFz
+        cz0iQmx1ZSIgLz4NCjwvc3ZnPgs=
+</value>
+  </data>
+  <data name="barBtnHydroExportInp.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAIQEAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLlJlZHtmaWxsOiNEMTFDMUM7fQoJLkJs
+        YWNre2ZpbGw6IzcyNzI3Mjt9CgkuQmx1ZXtmaWxsOiMxMTc3RDc7fQoJLkdyZWVue2ZpbGw6IzAzOUMy
+        Mzt9CgkuWWVsbG93e2ZpbGw6I0ZGQjExNTt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh
+        Y2l0eTowLjU7fQoJLnN0MXtvcGFjaXR5OjAuNzU7fQoJLnN0MntvcGFjaXR5OjAuMjU7fQo8L3N0eWxl
+        Pg0KICA8ZyBpZD0iT3V0bG9va0V4cG9ydCI+DQogICAgPHBvbHlnb24gcG9pbnRzPSIxNiw0IDI0LDQg
+        MjQsMCAzMiw2IDI0LDEyIDI0LDggMTYsOCAgIiBjbGFzcz0iR3JlZW4iIC8+DQogICAgPHBhdGggZD0i
+        TTI1LDE0SDE0VjhMMCwxMi4yVjI4bDE0LDR2LTZoMTFjMC41LDAsMS0wLjUsMS0xVjE1QzI2LDE0LjUs
+        MjUuNSwxNCwyNSwxNHogTTkuMiwyMi45QzguNiwyMy42LDcuOSwyNCw3LDI0ICAgYy0wLjksMC0xLjYt
+        MC40LTIuMi0xLjFDNC4zLDIyLjIsNCwyMS4zLDQsMjAuMWMwLTEuMiwwLjMtMi4yLDAuOC0zQzUuNCwx
+        Ni40LDYuMSwxNiw3LjEsMTZjMC45LDAsMS42LDAuNCwyLjEsMS4xICAgYzAuNSwwLjcsMC44LDEuNyww
+        LjgsMi44QzEwLDIxLjIsOS43LDIyLjIsOS4yLDIyLjl6IE0xNCwxNmg5bC02LDRsLTMtMlYxNnogTTI0
+        LDI0SDE0di00bDMsMmw3LTQuNlYyNHogTTguNCwxNy45ICAgYzAuMywwLjUsMC41LDEuMiwwLjUsMi4x
+        YzAsMC45LTAuMiwxLjYtMC41LDIuMWMtMC4zLDAuNS0wLjgsMC44LTEuNCwwLjhjLTAuNiwwLTEtMC4z
+        LTEuNC0wLjhTNS4xLDIwLjksNS4xLDIwICAgYzAtMC45LDAuMi0xLjYsMC41LTIuMUM2LDE3LjQsNi41
+        LDE3LjEsNywxNy4xQzcuNiwxNy4xLDguMSwxNy40LDguNCwxNy45eiIgY2xhc3M9IkJsdWUiIC8+DQog
+        IDwvZz4NCjwvc3ZnPgs=
+</value>
+  </data>
+  <data name="barBtnSave.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAMICAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsYWNre2ZpbGw6IzczNzM3NDt9Cgku
+        WWVsbG93e2ZpbGw6I0ZDQjAxQjt9CgkuR3JlZW57ZmlsbDojMTI5QzQ5O30KCS5CbHVle2ZpbGw6IzM4
+        N0NCNzt9CgkuUmVke2ZpbGw6I0QwMjEyNzt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh
+        Y2l0eTowLjU7fQoJLnN0MXtvcGFjaXR5OjAuNzU7fQoJLnN0MntvcGFjaXR5OjAuMjU7fQoJLnN0M3tk
+        aXNwbGF5Om5vbmU7ZmlsbDojNzM3Mzc0O30KPC9zdHlsZT4NCiAgPHBhdGggZD0iTTI3LDRoLTN2MTBI
+        OFY0SDVDNC40LDQsNCw0LjQsNCw1djIyYzAsMC42LDAuNCwxLDEsMWgyMmMwLjYsMCwxLTAuNCwxLTFW
+        NUMyOCw0LjQsMjcuNiw0LDI3LDR6IE0yNCwyNEg4di02ICBoMTZWMjR6IE0xMCw0djhoMTBWNEgxMHog
+        TTE0LDEwaC0yVjZoMlYxMHoiIGNsYXNzPSJCbGFjayIgLz4NCjwvc3ZnPgs=
+</value>
+  </data>
+  <data name="barBtnHydroVisualList.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAKsDAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkdyZWVue2ZpbGw6IzAzOUMyMzt9Cgku
+        QmxhY2t7ZmlsbDojNzI3MjcyO30KCS5SZWR7ZmlsbDojRDExQzFDO30KCS5ZZWxsb3d7ZmlsbDojRkZC
+        MTE1O30KCS5CbHVle2ZpbGw6IzExNzdENzt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh
+        Y2l0eTowLjU7fQoJLnN0MXtvcGFjaXR5OjAuNzU7fQo8L3N0eWxlPg0KICA8ZyBpZD0iU2hvd1dlaWdo
+        dGVkTGVnZW5kIj4NCiAgICA8ZyBjbGFzcz0ic3QwIj4NCiAgICAgIDxwb2x5Z29uIHBvaW50cz0iMjgs
+        MCAyLDAgMiwyIDI4LDIgMjgsMjggMzAsMjggMzAsMiAzMCwwICAgIiBjbGFzcz0iQmxhY2siIC8+DQog
+        ICAgPC9nPg0KICAgIDxwYXRoIGQ9Ik0yLDI4VjBIMHYzMGgzMHYtMkgyeiBNMjQsOEgxNFY2aDEwVjh6
+        IE0yNCwxNEgxNHYyaDEwVjE0eiBNMjQsMjJIMTR2MmgxMFYyMnoiIGNsYXNzPSJCbGFjayIgLz4NCiAg
+        ICA8cGF0aCBkPSJNMTAsNmMwLDEuMS0wLjksMi0yLDJTNiw3LjEsNiw2czAuOS0yLDItMlMxMCw0Ljks
+        MTAsNnogTTgsMTBjLTEuNywwLTMsMS4zLTMsM3MxLjMsMywzLDNzMy0xLjMsMy0zICAgUzkuNywxMCw4
+        LDEweiBNMTIsMjJjMC0yLjItMS44LTQtNC00cy00LDEuOC00LDRzMS44LDQsNCw0UzEyLDI0LjIsMTIs
+        MjJ6IiBjbGFzcz0iQmx1ZSIgLz4NCiAgPC9nPg0KPC9zdmc+Cw==
+</value>
+  </data>
+  <data name="barBtnFastShowHidden.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAP0DAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsYWNre2ZpbGw6IzczNzM3NDt9Cgku
+        WWVsbG93e2ZpbGw6I0ZDQjAxQjt9CgkuR3JlZW57ZmlsbDojMTI5QzQ5O30KCS5CbHVle2ZpbGw6IzM4
+        N0NCNzt9CgkuUmVke2ZpbGw6I0QwMjEyNzt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh
+        Y2l0eTowLjU7fQoJLnN0MXtvcGFjaXR5OjAuNzU7fQoJLnN0MntvcGFjaXR5OjAuMjU7fQoJLnN0M3tk
+        aXNwbGF5Om5vbmU7ZmlsbDojNzM3Mzc0O30KPC9zdHlsZT4NCiAgPHBhdGggZD0iTTI3LDJIMUMwLjUs
+        MiwwLDIuNSwwLDN2N2gyOFYzQzI4LDIuNSwyNy41LDIsMjcsMnoiIGNsYXNzPSJCbHVlIiAvPg0KICA8
+        ZyBjbGFzcz0ic3QwIj4NCiAgICA8cGF0aCBkPSJNMjYsMTYuMlYxMGgydjYuOUMyNy40LDE2LjYsMjYu
+        NywxNi40LDI2LDE2LjJ6IE0xNC4xLDI0LjdMMTMuOSwyNEgyVjEwSDB2MTVjMCwwLjUsMC41LDEsMSwx
+        aDEzLjggICBDMTQuNCwyNS4zLDE0LjIsMjQuOCwxNC4xLDI0Ljd6IiBjbGFzcz0iQmxhY2siIC8+DQog
+        IDwvZz4NCiAgPHBhdGggZD0iTTI0LDE4Yy01LjcsMC04LDYtOCw2czIuMyw2LDgsNnM4LTYsOC02UzI5
+        LjcsMTgsMjQsMTh6IE0yNCwyOGMtMi4yLDAtNC0xLjgtNC00YzAtMi4yLDEuOC00LDQtNCAgYzIuMiww
+        LDQsMS44LDQsNEMyOCwyNi4yLDI2LjIsMjgsMjQsMjh6IE0yNiwyNGMwLDEuMS0wLjksMi0yLDJzLTIt
+        MC45LTItMnMwLjktMiwyLTJTMjYsMjIuOSwyNiwyNHoiIGNsYXNzPSJCbGFjayIgLz4NCjwvc3ZnPgs=
+</value>
+  </data>
+  <data name="barBtnMatchingList.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAG0DAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iTWF0aF9feDI2X19UcmlnIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6
+        bmV3IDAgMCAzMiAzMiI+DQogIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CgkuR3JlZW57ZmlsbDojMDM5
+        QzIzO30KPC9zdHlsZT4NCiAgPHBhdGggZD0iTTE3LjgsMTZoLTcuNWMwLjEtMSwwLjUtMS45LDEtMi42
+        QzEyLDEyLjQsMTIuOSwxMiwxNCwxMmMxLjIsMCwyLjIsMC40LDIuOCwxLjNDMTcuMywxNCwxNy43LDE0
+        LjksMTcuOCwxNnogICBNMTQsMjJjMS4yLDAsMi4xLTAuNCwyLjgtMS4zYzAuNS0wLjcsMC45LTEuNiwx
+        LTIuN2gtNy41YzAuMSwxLjEsMC40LDEuOSwxLDIuN0MxMS45LDIxLjYsMTIuOCwyMiwxNCwyMnogTTQs
+        NWMwLDAuNiwwLjQsMSwxLDFoMjEgIHYyM2MwLDAuNi0wLjQsMS0xLDFIM2MtMC42LDAtMS0wLjQtMS0x
+        VjVjMC0xLjcsMS4zLTMsMy0zaDIwYzAuNiwwLDEsMC40LDEsMXYxSDVDNC40LDQsNCw0LjQsNCw1eiBN
+        OCwxNy4yYzAsMiwwLjUsMy43LDEuNiw0LjkgIGMxLjEsMS4zLDIuNSwxLjksNC4zLDEuOWMxLjgsMCwz
+        LjMtMC42LDQuNC0xLjljMS4xLTEuMywxLjYtMywxLjYtNS4yYzAtMi0wLjUtMy43LTEuNi00LjljLTEu
+        MS0xLjMtMi41LTEuOS00LjItMS45ICBjLTEuOSwwLTMuNCwwLjYtNC41LDEuOUM4LjYsMTMuMiw4LDE1
+        LDgsMTcuMnoiIGNsYXNzPSJHcmVlbiIgLz4NCjwvc3ZnPgs=
+</value>
+  </data>
+  <data name="barBtnUnMatchingList.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAKQDAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iVW5ncm91cCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5S
+        ZWR7ZmlsbDojRDExQzFDO30KCS5CbGFja3tmaWxsOiM3MjcyNzI7fQoJLnN0MHtvcGFjaXR5OjAuNzU7
+        fQo8L3N0eWxlPg0KICA8ZyBjbGFzcz0ic3QwIj4NCiAgICA8cGF0aCBkPSJNMTQsNEg4djJINlYyaDhW
+        NHogTTgsMjZ2LTJINnYydjJoMmg2di0ySDh6IiBjbGFzcz0iQmxhY2siIC8+DQogIDwvZz4NCiAgPHBh
+        dGggZD0iTTE2LDJ2OHYydjZ2MnY4aDE2di04di0ydi02di0yVjJIMTZ6IE0zMCwyNkgxOHYtNmgxMlYy
+        NnogTTMwLDE4SDE4di02aDEyVjE4eiBNMTgsMTBWNGgxMnY2SDE4eiIgY2xhc3M9IkJsYWNrIiAvPg0K
+        ICA8cGF0aCBkPSJNMjgsOGgtOFY2aDhWOHogTTI4LDE0aC04djJoOFYxNHogTTI4LDIyaC04djJoOFYy
+        MnoiIGNsYXNzPSJCbHVlIiAvPg0KICA8cGF0aCBkPSJNNyw4Yy0zLjksMC03LDMuMS03LDdjMCwzLjks
+        My4xLDcsNyw3czctMy4xLDctN0MxNCwxMS4xLDEwLjksOCw3LDh6IE03LDEwYzEsMCwyLDAuMywyLjgs
+        MC44bC02LjksNi45ICBDMi4zLDE3LDIsMTYsMiwxNUMyLDEyLjIsNC4yLDEwLDcsMTB6IE03LDIwYy0x
+        LDAtMi0wLjMtMi44LTAuOGw2LjktNi45QzExLjcsMTMsMTIsMTQsMTIsMTVDMTIsMTcuOCw5LjgsMjAs
+        NywyMHoiIGNsYXNzPSJSZWQiIC8+DQo8L3N2Zz4L
+</value>
+  </data>
+  <data name="barBtnSetList.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAKcEAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLlllbGxvd3tmaWxsOiNGRkIxMTU7fQoJ
+        LlJlZHtmaWxsOiNEMTFDMUM7fQoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9CgkuQmx1ZXtmaWxsOiMxMTc3
+        RDc7fQoJLldoaXRle2ZpbGw6I0ZGRkZGRjt9CgkuR3JlZW57ZmlsbDojMDM5QzIzO30KCS5zdDB7b3Bh
+        Y2l0eTowLjc1O30KCS5zdDF7b3BhY2l0eTowLjU7fQoJLnN0MntvcGFjaXR5OjAuMjU7fQoJLnN0M3tm
+        aWxsOiNGRkIxMTU7fQo8L3N0eWxlPg0KICA8ZyAvPg0KICA8ZyBpZD0iWC1BeGlzX1NldHRpbmdzIj4N
+        CiAgICA8cG9seWdvbiBwb2ludHM9IjQsMjYgNCwyIDIsMiAyLDI4IDYsMjggNiwzMCA4LDMwIDgsMjgg
+        MTIsMjggMTIsMzAgMTQsMzAgMTQsMjggMTgsMjggMTgsMzAgMjAsMzAgMjAsMjggMjQsMjggICAgMjQs
+        MzAgMjYsMzAgMjYsMjggMzAsMjggMzAsMjYgICIgY2xhc3M9IkJsYWNrIiAvPg0KICAgIDxwYXRoIGQ9
+        Ik0yOCwxNC40di0yLjhsLTMtMC42Yy0wLjMtMC44LTAuNS0xLjgtMS4xLTIuNWwxLjgtMi41bC0xLjkt
+        MS45TDIxLjMsNmMtMC43LTAuNC0xLjYtMC44LTIuNS0xbC0wLjQtM2gtMi44ICAgbC0wLjUsM2MtMC44
+        LDAuMy0xLjgsMC41LTIuNSwxbC0yLjUtMS44TDguMiw2LjFMMTAsOC42Yy0wLjQsMC43LTAuOCwxLjct
+        MS4xLDIuNUw2LDExLjZ2Mi44bDMsMC41YzAuMywwLjgsMC41LDEuOCwxLjEsMi41ICAgbC0xLjgsMi41
+        bDEuOSwxLjlsMi41LTEuOGMwLjcsMC40LDEuNiwwLjgsMi41LDFsMC40LDNoMi44bDAuNi0zYzAuOC0w
+        LjMsMS44LTAuNiwyLjUtMWwyLjUsMS44bDEuOS0xLjlMMjQsMTcuNCAgIGMwLjQtMC43LDAuOC0xLjYs
+        MS4xLTIuNUwyOCwxNC40eiBNMTcsMTZjLTEuNywwLTMtMS4zLTMtM3MxLjMtMywzLTNzMywxLjMsMywz
+        UzE4LjcsMTYsMTcsMTZ6IiBjbGFzcz0iQmx1ZSIgLz4NCiAgPC9nPg0KPC9zdmc+Cw==
+</value>
+  </data>
+  <data name="barBtnParallelAnaly.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAAkDAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLlllbGxvd3tmaWxsOiNGRkIxMTU7fQoJ
+        LlJlZHtmaWxsOiNEMTFDMUM7fQoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5HcmVlbntmaWxsOiMwMzlD
+        MjM7fQoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh
+        Y2l0eTowLjU7fQoJLnN0MXtkaXNwbGF5Om5vbmU7fQoJLnN0MntkaXNwbGF5OmlubGluZTtmaWxsOiMw
+        MzlDMjM7fQoJLnN0M3tkaXNwbGF5OmlubGluZTtmaWxsOiNEMTFDMUM7fQoJLnN0NHtkaXNwbGF5Omlu
+        bGluZTtmaWxsOiM3MjcyNzI7fQo8L3N0eWxlPg0KICA8ZyBpZD0iSGlnaCI+DQogICAgPHBhdGggZD0i
+        TTMxLDJIMUMwLjUsMiwwLDIuNSwwLDN2MjZjMCwwLjUsMC41LDEsMSwxaDMwYzAuNSwwLDEtMC41LDEt
+        MVYzQzMyLDIuNSwzMS41LDIsMzEsMnogTTI4LDE4bC00LTRsLTgsOGwtNC00ICAgbC02LDZsLTItMmw4
+        LThsNCw0bDYtNmwtNC00aDEwVjE4eiIgY2xhc3M9IlJlZCIgLz4NCiAgPC9nPg0KPC9zdmc+Cw==
+</value>
+  </data>
+  <data name="barBtnSearch.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAFQEAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkdyZWVue2ZpbGw6IzAzOUMyMzt9Cgku
+        QmxhY2t7ZmlsbDojNzI3MjcyO30KCS5SZWR7ZmlsbDojRDExQzFDO30KCS5ZZWxsb3d7ZmlsbDojRkZC
+        MTE1O30KCS5CbHVle2ZpbGw6IzExNzdENzt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh
+        Y2l0eTowLjU7fQoJLnN0MXtvcGFjaXR5OjAuNzU7fQo8L3N0eWxlPg0KICA8ZyBpZD0iRW5hYmxlU2Vh
+        cmNoIj4NCiAgICA8cGF0aCBkPSJNMTQuNSwxNy44QzEwLjgsMTcuMSw4LDEzLjksOCwxMGMwLTQuNCwz
+        LjYtOCw4LThzOCwzLjYsOCw4YzAsMS41LTAuNCwyLjgtMS4xLDRjMCwwLDAuMSwwLDAuMSwwICAgYzAu
+        NywwLDEuNCwwLjEsMi4xLDAuMmMwLjYtMS4zLDAuOS0yLjcsMC45LTQuMmMwLTUuNS00LjUtMTAtMTAt
+        MTBDMTAuNSwwLDYsNC41LDYsMTBjMCwyLjEsMC43LDQuMSwxLjgsNS43bC03LjUsNy42ICAgYy0wLjQs
+        MC4zLTAuNCwwLjksMCwxLjNsMS4yLDEuMmMwLjMsMC4zLDAuOSwwLjMsMS4yLDBsNy42LTcuNmMwLjks
+        MC42LDEuOSwxLjEsMi45LDEuNEMxMy42LDE5LDE0LDE4LjQsMTQuNSwxNy44eiIgY2xhc3M9IkJsdWUi
+        IC8+DQogICAgPHBhdGggZD0iTTIzLDE2Yy00LjQsMC04LjEsMy05LDdjMC45LDQsNC42LDcsOSw3YzQu
+        NCwwLDguMS0zLDktN0MzMS4xLDE5LDI3LjQsMTYsMjMsMTZ6IE0yMywyOGMtMy4zLDAtNi4xLTItNy01
+        ICAgYzAuOS0zLDMuNy01LDctNXM2LjEsMiw3LDVDMjkuMSwyNiwyNi4zLDI4LDIzLDI4eiBNMjMsMjZj
+        LTEuNywwLTMtMS4zLTMtM3MxLjMtMywzLTNzMywxLjMsMywzUzI0LjcsMjYsMjMsMjZ6IiBjbGFzcz0i
+        QmxhY2siIC8+DQogIDwvZz4NCjwvc3ZnPgs=
+</value>
+  </data>
+  <data name="barBtnGradingSet.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAAsFAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLlllbGxvd3tmaWxsOiNGRkIxMTU7fQoJ
+        LlJlZHtmaWxsOiNEMTFDMUM7fQoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9CgkuQmx1ZXtmaWxsOiMxMTc3
+        RDc7fQoJLldoaXRle2ZpbGw6I0ZGRkZGRjt9CgkuR3JlZW57ZmlsbDojMDM5QzIzO30KCS5zdDB7b3Bh
+        Y2l0eTowLjc1O30KCS5zdDF7b3BhY2l0eTowLjU7fQoJLnN0MntvcGFjaXR5OjAuMjU7fQoJLnN0M3tm
+        aWxsOiNGRkIxMTU7fQo8L3N0eWxlPg0KICA8ZyBpZD0iRWRpdENvbG9ycyI+DQogICAgPHBhdGggZD0i
+        TTI5LDBIMUMwLjUsMCwwLDAuNSwwLDF2MjhjMCwwLjUsMC41LDEsMSwxaDI4YzAuNSwwLDEtMC41LDEt
+        MVYxQzMwLDAuNSwyOS41LDAsMjksMHogTTI4LDI4SDJWMmgyNlYyOHoiIGNsYXNzPSJCbGFjayIgLz4N
+        CiAgICA8cGF0aCBkPSJNMTAsMTBINFY0aDZWMTB6IE0xOCw0aC02djZoNlY0eiBNMTAsMTJINHY2aDZW
+        MTJ6IiBjbGFzcz0iWWVsbG93IiAvPg0KICAgIDxwYXRoIGQ9Ik0xMCwyNkg0di02aDZWMjZ6IE0xOCwx
+        MmgtNnY2aDZWMTJ6IiBjbGFzcz0iR3JlZW4iIC8+DQogICAgPHBhdGggZD0iTTI2LDEwaC02VjRoNlYx
+        MHogTTI2LDEyaC02djZoNlYxMnoiIGNsYXNzPSJSZWQiIC8+DQogICAgPHBhdGggZD0iTTI2LDI2aC02
+        di02aDZWMjZ6IE0xOCwyMGgtNnY2aDZWMjB6IiBjbGFzcz0iQmx1ZSIgLz4NCiAgICA8ZyBjbGFzcz0i
+        c3QxIj4NCiAgICAgIDxyZWN0IHg9IjQiIHk9IjEyIiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0i
+        R3JlZW4iIC8+DQogICAgICA8cGF0aCBkPSJNMTgsMTBoLTZWNGg2VjEweiBNMjYsMjBoLTZ2Nmg2VjIw
+        eiIgY2xhc3M9IlJlZCIgLz4NCiAgICAgIDxwYXRoIGQ9Ik0yNiwxOGgtNnYtNmg2VjE4eiBNMTgsMTJo
+        LTZ2Nmg2VjEyeiIgY2xhc3M9IkJsdWUiIC8+DQogICAgPC9nPg0KICAgIDxnIGNsYXNzPSJzdDEiPg0K
+        ICAgICAgPHJlY3QgeD0iMjAiIHk9IjIwIiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0iQmx1ZSIg
+        Lz4NCiAgICA8L2c+DQogIDwvZz4NCjwvc3ZnPgs=
+</value>
+  </data>
+  <data name="barBtnGradingApply.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAALMDAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsYWNre2ZpbGw6IzczNzM3NDt9Cgku
+        WWVsbG93e2ZpbGw6I0ZDQjAxQjt9CgkuR3JlZW57ZmlsbDojMTI5QzQ5O30KCS5CbHVle2ZpbGw6IzM4
+        N0NCNzt9CgkuUmVke2ZpbGw6I0QwMjEyNzt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh
+        Y2l0eTowLjU7fQoJLnN0MXtvcGFjaXR5OjAuNzU7fQoJLnN0MntvcGFjaXR5OjAuMjU7fQoJLnN0M3tk
+        aXNwbGF5Om5vbmU7ZmlsbDojNzM3Mzc0O30KPC9zdHlsZT4NCiAgPHBhdGggZD0iTTI5LDE2SDE1Yy0w
+        LjUsMC0xLDAuNS0xLDF2MTRjMCwwLjUsMC41LDEsMSwxaDE0YzAuNSwwLDEtMC41LDEtMVYxN0MzMCwx
+        Ni41LDI5LjUsMTYsMjksMTZ6IE0yMC41LDI4ICBMMTcsMjQuNWwxLjUtMS41bDIsMmw1LTVsMS41LDEu
+        NUwyMC41LDI4eiIgY2xhc3M9IkdyZWVuIiAvPg0KICA8cGF0aCBkPSJNMTIsMTBoLTJWOGgyVjEweiBN
+        MjIsOGgtOHYyaDhWOHogTTEyLDEyaC0ydjJoMlYxMnogTTEyLDE2aC0ydjJoMlYxNnogTTEyLDIwaC0y
+        djJoMlYyMHogTTIyLDEyaC04djJoOFYxMnogICIgY2xhc3M9IkJsYWNrIiAvPg0KICA8cGF0aCBkPSJN
+        MTIsMjZINlY0aDIwdjEwaDJWM2MwLTAuNS0wLjUtMS0xLTFINUM0LjUsMiw0LDIuNSw0LDN2MjRjMCww
+        LjUsMC41LDEsMSwxaDdWMjZ6IiBjbGFzcz0iQmxhY2siIC8+DQo8L3N2Zz4L
+</value>
+  </data>
+  <data name="barBtnRefresh.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAIkDAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLlllbGxvd3tmaWxsOiNGRkIxMTU7fQoJ
+        LlJlZHtmaWxsOiNEMTFDMUM7fQoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5HcmVlbntmaWxsOiMwMzlD
+        MjM7fQoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh
+        Y2l0eTowLjU7fQoJLnN0MXtkaXNwbGF5Om5vbmU7fQoJLnN0MntkaXNwbGF5OmlubGluZTtmaWxsOiMw
+        MzlDMjM7fQoJLnN0M3tkaXNwbGF5OmlubGluZTtmaWxsOiNEMTFDMUM7fQoJLnN0NHtkaXNwbGF5Omlu
+        bGluZTtmaWxsOiM3MjcyNzI7fQo8L3N0eWxlPg0KICA8ZyBpZD0iQ2hhbmdlVmlldyI+DQogICAgPHBh
+        dGggZD0iTTI0LjUsNy41QzIyLjMsNS4zLDE5LjMsNCwxNiw0QzEwLjEsNCw1LjEsOC4zLDQuMiwxNGg0
+        LjFjMC45LTMuNCw0LTYsNy43LTZjMi4yLDAsNC4yLDAuOSw1LjYsMi40TDE4LDE0ICAgaDUuN2g0LjFI
+        MjhWNEwyNC41LDcuNXogTTE2LDI0Yy0yLjIsMC00LjItMC45LTUuNi0yLjRMMTQsMThIOC4yaC00SDR2
+        MTBsMy41LTMuNUM5LjcsMjYuNywxMi43LDI4LDE2LDI4YzUuOSwwLDEwLjgtNC4zLDExLjgtMTAgICBo
+        LTQuMUMyMi44LDIxLjQsMTkuNywyNCwxNiwyNHoiIGNsYXNzPSJCbHVlIiAvPg0KICA8L2c+DQo8L3N2
+        Zz4L
+</value>
+  </data>
+  <data name="barBtnSetMark.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAHwCAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5Z
+        ZWxsb3d7ZmlsbDojRkZCMTE1O30KCS5CbGFja3tmaWxsOiM3MjcyNzI7fQoJLkdyZWVue2ZpbGw6IzAz
+        OUMyMzt9CgkuUmVke2ZpbGw6I0QxMUMxQzt9Cgkuc3Qwe29wYWNpdHk6MC43NTt9Cgkuc3Qxe29wYWNp
+        dHk6MC41O30KPC9zdHlsZT4NCiAgPGcgaWQ9IkZsYWciPg0KICAgIDxwYXRoIGQ9Ik04LDRINUM0LjQs
+        NCw0LDQuNCw0LDV2MjJjMCwwLjUsMC40LDEsMSwxaDJjMC42LDAsMS0wLjUsMS0xVjR6IiBjbGFzcz0i
+        QmxhY2siIC8+DQogICAgPHBvbHlnb24gcG9pbnRzPSIyOCwyMCAxMCwyMCAxMCw0IDI4LDQgMjAsMTIg
+        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">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAADUFAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsYWNre2ZpbGw6IzczNzM3NDt9Cgku
+        WWVsbG93e2ZpbGw6I0ZDQjAxQjt9CgkuR3JlZW57ZmlsbDojMTI5QzQ5O30KCS5CbHVle2ZpbGw6IzM4
+        N0NCNzt9CgkuUmVke2ZpbGw6I0QwMjEyNzt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh
+        Y2l0eTowLjU7fQoJLnN0MXtvcGFjaXR5OjAuNzU7fQoJLnN0MntvcGFjaXR5OjAuMjU7fQoJLnN0M3tk
+        aXNwbGF5Om5vbmU7ZmlsbDojNzM3Mzc0O30KPC9zdHlsZT4NCiAgPHBhdGggZD0iTTMxLDE2aC00Yy0w
+        LjYsMC0xLDAuNC0xLDF2NGMwLDAuNiwwLjQsMSwxLDFoNGMwLjYsMCwxLTAuNCwxLTF2LTRDMzIsMTYu
+        NCwzMS42LDE2LDMxLDE2eiBNMzAsMjBoLTJ2LTJoMlYyMCAgeiIgY2xhc3M9IkJsdWUiIC8+DQogIDxw
+        YXRoIGQ9Ik0xNyw2aC00Yy0wLjYsMC0xLDAuNC0xLDF2NGMwLDAuNiwwLjQsMSwxLDFoNGMwLjYsMCwx
+        LTAuNCwxLTFWN0MxOCw2LjQsMTcuNiw2LDE3LDZ6IE0xNiwxMGgtMlY4aDJWMTB6ICAgTTE3LDI2aC00
+        Yy0wLjYsMC0xLDAuNC0xLDF2NGMwLDAuNiwwLjQsMSwxLDFoNGMwLjYsMCwxLTAuNCwxLTF2LTRDMTgs
+        MjYuNCwxNy42LDI2LDE3LDI2eiBNMTYsMzBoLTJ2LTJoMlYzMHoiIGNsYXNzPSJCbHVlIiAvPg0KICA8
+        cGF0aCBkPSJNNSwxNkgxYy0wLjYsMC0xLDAuNC0xLDF2NGMwLDAuNiwwLjQsMSwxLDFoNGMwLjYsMCwx
+        LTAuNCwxLTF2LTRDNiwxNi40LDUuNiwxNiw1LDE2eiBNNCwyMEgydi0yaDJWMjB6IiBjbGFzcz0iQmx1
+        ZSIgLz4NCiAgPHBvbHlnb24gcG9pbnRzPSIzMSwzIDI4LDAgMjgsMiAyLDIgMiw0IDI4LDQgMjgsNiAi
+        IGNsYXNzPSJCbGFjayIgLz4NCiAgPGcgY2xhc3M9InN0MCI+DQogICAgPHBhdGggZD0iTTI4LDEwSDE4
+        VjhoMTJ2NGgybC0zLDNsLTMtM2gyVjEweiBNMjUsMTlsLTMtM3YySDZ2MmgxNnYyTDI1LDE5eiBNNCwx
+        MGg0djJsMy0zTDgsNnYySDJ2OGgyVjEweiBNOCwyOEg0ICAgdi02SDJ2OGg2djJsMy0zbC0zLTNWMjh6
+        IE0yNiwyNmgydjJIMTh2MmgxMnYtNGgybC0zLTNMMjYsMjZ6IiBjbGFzcz0iQmxhY2siIC8+DQogIDwv
+        Zz4NCjwvc3ZnPgs=
+</value>
+  </data>
+  <data name="barBtnUnloadFlowDirection.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAANcCAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5Z
+        ZWxsb3d7ZmlsbDojRkZCMTE1O30KCS5CbGFja3tmaWxsOiM3MjcyNzI7fQoJLkdyZWVue2ZpbGw6IzAz
+        OUMyMzt9CgkuUmVke2ZpbGw6I0QxMUMxQzt9Cgkuc3Qwe29wYWNpdHk6MC43NTt9Cgkuc3Qxe29wYWNp
+        dHk6MC41O30KPC9zdHlsZT4NCiAgPGcgaWQ9IkZvcmJpZCI+DQogICAgPHBhdGggZD0iTTE2LDRDOS40
+        LDQsNCw5LjQsNCwxNnM1LjQsMTIsMTIsMTJzMTItNS40LDEyLTEyUzIyLjYsNCwxNiw0eiBNMTYsOGMx
+        LjUsMCwyLjksMC40LDQuMSwxLjFsLTExLDExICAgQzguNCwxOC45LDgsMTcuNSw4LDE2QzgsMTEuNiwx
+        MS42LDgsMTYsOHogTTE2LDI0Yy0xLjUsMC0yLjgtMC40LTQtMS4xTDIyLjksMTJjMC43LDEuMiwxLjEs
+        Mi41LDEuMSw0QzI0LDIwLjQsMjAuNCwyNCwxNiwyNHoiIGNsYXNzPSJSZWQiIC8+DQogIDwvZz4NCjwv
+        c3ZnPgs=
+</value>
+  </data>
+  <data name="barBtnClearMark.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAANcCAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5Z
+        ZWxsb3d7ZmlsbDojRkZCMTE1O30KCS5CbGFja3tmaWxsOiM3MjcyNzI7fQoJLkdyZWVue2ZpbGw6IzAz
+        OUMyMzt9CgkuUmVke2ZpbGw6I0QxMUMxQzt9Cgkuc3Qwe29wYWNpdHk6MC43NTt9Cgkuc3Qxe29wYWNp
+        dHk6MC41O30KPC9zdHlsZT4NCiAgPGcgaWQ9IkZvcmJpZCI+DQogICAgPHBhdGggZD0iTTE2LDRDOS40
+        LDQsNCw5LjQsNCwxNnM1LjQsMTIsMTIsMTJzMTItNS40LDEyLTEyUzIyLjYsNCwxNiw0eiBNMTYsOGMx
+        LjUsMCwyLjksMC40LDQuMSwxLjFsLTExLDExICAgQzguNCwxOC45LDgsMTcuNSw4LDE2QzgsMTEuNiwx
+        MS42LDgsMTYsOHogTTE2LDI0Yy0xLjUsMC0yLjgtMC40LTQtMS4xTDIyLjksMTJjMC43LDEuMiwxLjEs
+        Mi41LDEuMSw0QzI0LDIwLjQsMjAuNCwyNCwxNiwyNHoiIGNsYXNzPSJSZWQiIC8+DQogIDwvZz4NCjwv
+        c3ZnPgs=
+</value>
+  </data>
+  <data name="batBtnCancelGradingApply.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAANcCAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5Z
+        ZWxsb3d7ZmlsbDojRkZCMTE1O30KCS5CbGFja3tmaWxsOiM3MjcyNzI7fQoJLkdyZWVue2ZpbGw6IzAz
+        OUMyMzt9CgkuUmVke2ZpbGw6I0QxMUMxQzt9Cgkuc3Qwe29wYWNpdHk6MC43NTt9Cgkuc3Qxe29wYWNp
+        dHk6MC41O30KPC9zdHlsZT4NCiAgPGcgaWQ9IkZvcmJpZCI+DQogICAgPHBhdGggZD0iTTE2LDRDOS40
+        LDQsNCw5LjQsNCwxNnM1LjQsMTIsMTIsMTJzMTItNS40LDEyLTEyUzIyLjYsNCwxNiw0eiBNMTYsOGMx
+        LjUsMCwyLjksMC40LDQuMSwxLjFsLTExLDExICAgQzguNCwxOC45LDgsMTcuNSw4LDE2QzgsMTEuNiwx
+        MS42LDgsMTYsOHogTTE2LDI0Yy0xLjUsMC0yLjgtMC40LTQtMS4xTDIyLjksMTJjMC43LDEuMiwxLjEs
+        Mi41LDEuMSw0QzI0LDIwLjQsMjAuNCwyNCwxNiwyNHoiIGNsYXNzPSJSZWQiIC8+DQogIDwvZz4NCjwv
+        c3ZnPgs=
+</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>
+  <metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>81</value>
+  </metadata>
+  <metadata name="svgImg32.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>45, 22</value>
+  </metadata>
+  <metadata name="rmSet.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>323, 21</value>
+  </metadata>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="rmSet.Glyph" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
+        dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAArdEVYdFRpdGxlAFNldHVwO0N1c3RvbWl6O0Rlc2ln
+        bjtTZXR0aW5nO1Byb3BlcnQ4H7UhAAABzElEQVRYR8WWS07DQBBEswIkYAE3YkkkLgJHYMcJ+G7gEnwk
+        4AzAno9YorCEG5gqyx61O9WOnUnw4kXWTHV1xZ+ZGRVFMSjlz97RY192wQQUFbzmmNKG5ASwzW0IpQ3J
+        CeCb1yhtSFuAFXACXsE5WAV2XjUnVsMa1tLjGNDTzocBKLwG1vge0HAL7FdjCs5RQy1r7Bw9GyGiAKfA
+        FtY8gR83pqDm2Y3V0Dv1igK8A1W8CD5A6hUFuASqeBFcgdQrCrAGHoAyyIGejZc5CkAYInqO8/AC/JfU
+        GmAb/AJlRm7BDtio4PUdUFpCL3o2+rQFOADKiBwCVUM4p2oIPRt6G8Cv7RH8lw0TAe+OqrWUe4cN0KU5
+        4a32DT3UqFrPxAZQAsUm8A091KjaKZYVgC+lqp3CBhjiEXzbAGMOmMkIvmC+oafLS/gFxjaA598/Q8+s
+        hegG8FavV/C67Z/3Xoi4bHL5VGbzwGW981JM4TI2o/pQk3pFAQbfjj+BKl4E9E69ogDRkYzPMfdIdgZS
+        ryjArENp2yfKuexDKaGQx/I3cAH8G2yNLVbDGtbSo9exvAuqOVHakJwAau/gUq60ITkB/N5Rru1AaUNS
+        gOEoRn8K5LVvQjKRrgAAAABJRU5ErkJggg==
+</value>
+  </data>
+</root>
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/05-function/XhsProjectSimulationFunctionMgrCtrl.Designer.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/05-function/XhsProjectSimulationFunctionMgrCtrl.Designer.cs
index d71e037..6caf838 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/05-function/XhsProjectSimulationFunctionMgrCtrl.Designer.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/05-function/XhsProjectSimulationFunctionMgrCtrl.Designer.cs
@@ -63,13 +63,12 @@
             accordionControl1.Images = svgImg32;
             accordionControl1.ItemHeight = 35;
             accordionControl1.Location = new Point(0, 0);
-            accordionControl1.Margin = new Padding(2);
             accordionControl1.Name = "accordionControl1";
             accordionControl1.OptionsHamburgerMenu.HighlightRootElements = DevExpress.Utils.DefaultBoolean.False;
             accordionControl1.OptionsMinimizing.AllowFooterResizing = false;
             accordionControl1.OptionsMinimizing.AllowMinimizeMode = DevExpress.Utils.DefaultBoolean.False;
             accordionControl1.ScrollBarMode = DevExpress.XtraBars.Navigation.ScrollBarMode.Fluent;
-            accordionControl1.Size = new Size(247, 643);
+            accordionControl1.Size = new Size(353, 1010);
             accordionControl1.TabIndex = 1;
             accordionControl1.ViewType = DevExpress.XtraBars.Navigation.AccordionControlViewType.HamburgerMenu;
             accordionControl1.ElementClick += accordionControl1_ElementClick;
@@ -77,8 +76,9 @@
             // accordionContentContainer1
             // 
             accordionContentContainer1.Controls.Add(xhsProjectSimulationSchemeMgrCtrl1);
+            accordionContentContainer1.Margin = new Padding(4, 5, 4, 5);
             accordionContentContainer1.Name = "accordionContentContainer1";
-            accordionContentContainer1.Size = new Size(228, 406);
+            accordionContentContainer1.Size = new Size(325, 663);
             accordionContentContainer1.SizeMode = DevExpress.XtraBars.Navigation.AccordionContentContainerSizeMode.Stretch;
             accordionContentContainer1.TabIndex = 1;
             // 
@@ -86,8 +86,9 @@
             // 
             xhsProjectSimulationSchemeMgrCtrl1.Dock = DockStyle.Fill;
             xhsProjectSimulationSchemeMgrCtrl1.Location = new Point(0, 0);
+            xhsProjectSimulationSchemeMgrCtrl1.Margin = new Padding(6, 8, 6, 8);
             xhsProjectSimulationSchemeMgrCtrl1.Name = "xhsProjectSimulationSchemeMgrCtrl1";
-            xhsProjectSimulationSchemeMgrCtrl1.Size = new Size(228, 406);
+            xhsProjectSimulationSchemeMgrCtrl1.Size = new Size(325, 663);
             xhsProjectSimulationSchemeMgrCtrl1.TabIndex = 0;
             // 
             // elementInfo
@@ -154,11 +155,12 @@
             // 
             // XhsProjectSimulationFunctionMgrCtrl
             // 
-            AutoScaleDimensions = new SizeF(7F, 14F);
+            AutoScaleDimensions = new SizeF(10F, 22F);
             AutoScaleMode = AutoScaleMode.Font;
             Controls.Add(accordionControl1);
+            Margin = new Padding(4, 5, 4, 5);
             Name = "XhsProjectSimulationFunctionMgrCtrl";
-            Size = new Size(247, 643);
+            Size = new Size(353, 1010);
             ((ISupportInitialize)accordionControl1).EndInit();
             accordionControl1.ResumeLayout(false);
             accordionContentContainer1.ResumeLayout(false);
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/05-function/XhsProjectSimulationFunctionMgrCtrl.resx b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/05-function/XhsProjectSimulationFunctionMgrCtrl.resx
index b7016da..163ad0a 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/05-function/XhsProjectSimulationFunctionMgrCtrl.resx
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/05-function/XhsProjectSimulationFunctionMgrCtrl.resx
@@ -1,7 +1,7 @@
 锘�<?xml version="1.0" encoding="utf-8"?>
 <root>
   <!--
-    Microsoft ResX Schema 
+    Microsoft ResX Schema
 
     Version 2.0
 
@@ -48,7 +48,7 @@
     value   : The object must be serialized with
             : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
             : and then encoded with base64 encoding.
-    
+
     mimetype: application/x-microsoft.net.object.soap.base64
     value   : The object must be serialized with
             : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/XhsProjectSimulationMgrPage.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/XhsProjectSimulationMgrPage.cs
index 4379a1a..4f1fad7 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/XhsProjectSimulationMgrPage.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/XhsProjectSimulationMgrPage.cs
@@ -125,7 +125,7 @@
 
             var dlg = new AddXhsSchemeDlg();
             await dlg.SetBindingData(_project, _projectSite, _hydroInfo);
-            dlg.ShowDialog();
+            dlg.ShowDialog(); 
         }
 
         //姣旇緝椤圭洰鏂规浜嬩欢
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/HStation.WinFrmUI.Xhs.Core.csproj b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/HStation.WinFrmUI.Xhs.Core.csproj
index edd8a61..fc7103a 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/HStation.WinFrmUI.Xhs.Core.csproj
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/HStation.WinFrmUI.Xhs.Core.csproj
@@ -153,6 +153,9 @@
     <Compile Update="03-simulation\04-scheme\01-add\01-set\02-valve\SetSchemeValveListCtrl.cs">
       <SubType>UserControl</SubType>
     </Compile>
+    <Compile Update="03-simulation\04-scheme\XhsProjectSimulationSchemeMgrPage.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
     <Compile Update="03-simulation\06-simulation\01-matching\02-pump\01-pumpsinglematching\PumpSingleMatchingDlg.cs" />
     <Compile Update="03-simulation\01-info\XhsProjectSimulationHydroInfoCtrl.cs" />
     <Compile Update="03-simulation\01-info\XhsProjectSimulationProjectInfoCtrl.cs" />
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/HStation.WinFrmUI.Xhs.Core.csproj.user b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/HStation.WinFrmUI.Xhs.Core.csproj.user
index 4f5b07c..4c009e1 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/HStation.WinFrmUI.Xhs.Core.csproj.user
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/HStation.WinFrmUI.Xhs.Core.csproj.user
@@ -97,6 +97,9 @@
     <Compile Update="03-simulation\04-scheme\01-add\AddXhsSchemeDlg.cs">
       <SubType>Form</SubType>
     </Compile>
+    <Compile Update="03-simulation\04-scheme\99-ctrl\XhsParterListCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
     <Compile Update="03-simulation\04-scheme\AddXhsProjectSimulationSchemeDlg.cs">
       <SubType>Form</SubType>
     </Compile>

--
Gitblit v1.9.3