lixiaojun
2024-12-04 e0df433d23b1afffa0b04389ad8b915a91f8debc
对接部分匹配
已删除12个文件
已重命名4个文件
已修改29个文件
2843 ■■■■ 文件已修改
WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/00-core/ImportXhsProjectHelper.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/01-property/SimulationPropertyCtrl.Designer.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/01-property/SimulationPropertyCtrl.cs 257 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/01-property/SimulationPropertyCtrl.resx 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/02-page/XhsProjectSimulationSchemePage.cs 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.cs 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/08-working/XhsProjectSimulationWorkingPage.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/HStation.WinFrmUI.Xhs.Core.csproj.user 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/05-attribute/HydroModelTypeProAttribute.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/07-curve/01-view/HydroCurveViewCtrl.Designer.cs 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/07-curve/01-view/HydroCurveViewCtrl.cs 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/07-curve/01-view/HydroCurveViewCtrl.resx 123 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/07-curve/01-view/HydroCurveViewDlg.Designer.cs 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/07-curve/01-view/HydroCurveViewDlg.cs 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/07-curve/01-view/HydroCurveViewDlg.resx 120 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/07-curve/02-set/SetHydroCurveCtrl.Designer.cs 486 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/07-curve/02-set/SetHydroCurveCtrl.cs 126 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/07-curve/02-set/SetHydroCurveCtrl.resx 226 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/07-curve/02-set/SetHydroCurveDlg.Designer.cs 164 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/07-curve/02-set/SetHydroCurveDlg.cs 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/07-curve/02-set/SetHydroCurveDlg.resx 120 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/07-curve/HydroCurvePointViewModel.cs 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/05-property/HydroVisualPropertyCtrl.Designer.cs 72 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/05-property/HydroVisualPropertyCtrl.cs 110 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/05-property/HydroVisualPropertyCtrl.resx 179 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/02-tank/HydroTankListCtrl.Designer.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/00-core/HydroMatchingHelper.cs 239 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/01-tank/HydroTankMatchingViewModel.cs 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/02-blunthead/HydroBluntheadMatchingViewModel.cs 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/03-elbow/HydroElbowMatchingViewModel.cs 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/04-threelink/HydroThreelinkMatchingViewModel.cs 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/05-fourlink/HydroFourlinkMatchingViewModel.cs 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/06-meter/HydroMeterMatchingViewModel.cs 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/07-flowmeter/HydroFlowmeterMatchingViewModel.cs 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/08-pressmeter/HydroFlowmeterMatchingViewModel.cs 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/09-nozzle/HydroNozzleMatchingViewModel.cs 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/10-hydrant/HydroHydrantMatchingViewModel.cs 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/11-pipe/HydroPipeMatchingViewModel.cs 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/12-pump/HydroPumpMatchingViewModel.cs 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/12-translation/HydroTranslationMatchingViewModel.cs 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/14-valve/HydroValveMatchingViewModel.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/15-exchanger/HydroExchangerMatchingViewModel.cs 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/16-compressor/HydroCompressorMatchingViewModel.cs 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/Yw.WinFrmUI.Hydro.Core.csproj 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/Yw.WinFrmUI.Hydro.Core.csproj.user 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/00-core/ImportXhsProjectHelper.cs
@@ -235,10 +235,10 @@
            }
            feedBackMsg?.Invoke("正在进行产品匹配...", Color.Black);
            var matchingParas = AssetsMatchingParasHelper.Create(hydroInfo, null);
            var matchingParas = Yw.WinFrmUI.HydroMatchingHelper.Create(hydroInfo);
            if (AssetsMatchingHelper.Matching(matchingParas, out string error))
            {
                if (AssetsMatchingParasHelper.Apply(hydroInfo, matchingParas))
                if (Yw.WinFrmUI.HydroMatchingHelper.Apply(hydroInfo, matchingParas))
                {
                    feedBackMsg?.Invoke("产品匹配完成。。。", Color.Green);
                }
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/01-property/SimulationPropertyCtrl.Designer.cs
ÎļþÃû´Ó WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/01-property/XhsProjectSimulationPropertyCtrl.Designer.cs ÐÞ¸Ä
@@ -1,6 +1,6 @@
namespace HStation.WinFrmUI
{
    partial class XhsProjectSimulationPropertyCtrl
    partial class SimulationPropertyCtrl
    {
        /// <summary> 
        /// Required designer variable.
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/01-property/SimulationPropertyCtrl.cs
ÎļþÃû´Ó WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/01-property/XhsProjectSimulationPropertyCtrl.cs ÐÞ¸Ä
@@ -7,14 +7,13 @@
    /// <summary>
    /// é¡¹ç›®æ¨¡æ‹Ÿå±žæ€§æŽ§ä»¶
    /// </summary>
    public partial class XhsProjectSimulationPropertyCtrl : DevExpress.XtraEditors.XtraUserControl
    public partial class SimulationPropertyCtrl : DevExpress.XtraEditors.XtraUserControl
    {
        public XhsProjectSimulationPropertyCtrl()
        public SimulationPropertyCtrl()
        {
            InitializeComponent();
            this.hydroVisualPropertyCtrl1.MatchingDbEvent += HydroVisualPropertyCtrl1_MatchingDbEvent;
            this.hydroVisualPropertyCtrl1.SetCurveEvent += HydroVisualPropertyCtrl1_SetCurveEvent;
            this.hydroVisualPropertyCtrl1.SetPatternEvent += HydroVisualPropertyCtrl1_SetPatternEvent;
            this.hydroVisualPropertyCtrl1.HydroViewEvent += HydroVisualPropertyCtrl1_HydroViewEvent;
            this.hydroVisualPropertyCtrl1.BlinkLinkNodeEvent += HydroVisualPropertyCtrl1_BlinkLinkNodeEvent;
@@ -58,7 +57,7 @@
        /// </summary>
        public event Action<HydroVisualInfo> FlowEffectPropertyValueChangedEvent;
        #endregion äº‹ä»¶é›†
        #endregion
        #region å±žæ€§èµ‹å€¼
@@ -71,7 +70,7 @@
            set { this.hydroVisualPropertyCtrl1.SelectedObject = value; }
        }
        #endregion å±žæ€§èµ‹å€¼
        #endregion
        #region å±žæ€§æ›´æ–°
@@ -110,114 +109,153 @@
        #region äº‹ä»¶å®žçް
        //匹配Db
        private bool HydroVisualPropertyCtrl1_MatchingDbEvent(HydroVisualViewModel vm)
        private void HydroVisualPropertyCtrl1_MatchingDbEvent(HydroVisualViewModel vm)
        {
            if (vm == null)
            {
                return false;
                return;
            }
            var bol = false;
            var catalog = HydroParterCatalogHelper.GetCode(vm.Catalog);
            switch (catalog)
            switch (vm.Vmo.Catalog)
            {
                case Yw.Hydro.ParterCatalog.Pump://æ°´æ³µ
                case Yw.Hydro.ParterCatalog.Tank:
                    {
                        /*  var pumpInfo = vm.HydroInfo.Pumps?.Find(x => x.Code == vm.Code);
                          if (pumpInfo == null)
                          {
                              break;
                          }
                          var input = AssetsMatchingParasHelper.Create(vm.HydroInfo, pumpInfo, null);
                          var dlg = new PumpSingleMatchingDlg();
                          dlg.SetBindingData(input);
                          dlg.ReloadDataEvent += (output) =>
                          {
                              bol = AssetsMatchingParasHelper.Apply(vm.HydroInfo, output);
                              if (bol)
                              {
                                  vm.UpdateProperty();
                              }
                          };
                          dlg.ShowDialog();*/
                    }
                    break;
                case Yw.Hydro.ParterCatalog.Valve://阀门
                    {
                        /* var valveInfo = vm.HydroInfo.Valves?.Find(x => x.Code == vm.Code);
                         if (valveInfo == null)
                         {
                             break;
                         }
                         var input = AssetsMatchingParasHelper.Create(vm.HydroInfo, valveInfo, null);
                         var dlg = new ValveSingleMatchingDlg();
                         dlg.SetBindingData(input);
                         dlg.ReloadDataEvent += (rhs) =>
                         {
                             bol = AssetsMatchingParasHelper.Apply(vm.HydroInfo, rhs);
                             if (bol)
                             {
                                 vm.UpdateProperty();
                                 this.hydroVisualPropertyCtrl1.UpdateRows();
                             }
                         };
                         dlg.ShowDialog();*/
                    }
                    break;
                case Yw.Hydro.ParterCatalog.Pipe://管道
                    {
                    }
                    break;
                case Yw.Hydro.ParterCatalog.Elbow://弯头
                    {
                        var elbowInfo = vm.HydroInfo.Elbows?.Find(x => x.Code == vm.Code);
                        if (elbowInfo == null)
                        {
                            break;
                        }
                        var input = HydroMatchingHelper.Create(elbowInfo, vm.HydroInfo, null);
                        var dlg = new ElbowSingMatchingDlg();
                        dlg.SetBindingData(input);
                        var tankViewModel = vm as HydroTankViewModel;
                        var input = HydroMatchingHelper.Create(tankViewModel.Vmo, tankViewModel.HydroInfo);
                        var dlg = new TankSingleMatchingDlg();
                        dlg.ReloadDataEvent += (output) =>
                        {
                            bol = HydroMatchingHelper.Apply(vm.HydroInfo, null, output);
                            if (bol)
                            {
                                vm.UpdateProperty();
                                this.hydroVisualPropertyCtrl1.UpdateRows();
                            }
                            HydroMatchingHelper.Apply(tankViewModel.HydroInfo, tankViewModel.Vmo, output);
                            tankViewModel.UpdateProperty();
                            this.hydroVisualPropertyCtrl1.UpdateRows();
                        };
                        dlg.SetBindingData(input);
                        dlg.ShowDialog();
                    }
                    break;
                case Yw.Hydro.ParterCatalog.Threelink://三通
                case Yw.Hydro.ParterCatalog.Waterbox:
                    {
                        var tankViewModel = vm as HydroTankViewModel;
                        var input = HydroMatchingHelper.Create(tankViewModel.Vmo, tankViewModel.HydroInfo);
                        var dlg = new TankSingleMatchingDlg();
                        dlg.ReloadDataEvent += (output) =>
                        {
                            HydroMatchingHelper.Apply(tankViewModel.HydroInfo, tankViewModel.Vmo, output);
                            tankViewModel.UpdateProperty();
                            this.hydroVisualPropertyCtrl1.UpdateRows();
                        };
                        dlg.SetBindingData(input);
                        dlg.ShowDialog();
                    }
                    break;
                case Yw.Hydro.ParterCatalog.Fourlink://四通
                case Yw.Hydro.ParterCatalog.Blunthead:
                    {
                    }
                    break;
                case Yw.Hydro.ParterCatalog.Elbow:
                    {
                        var elbowViewModel = vm as HydroElbowViewModel;
                        var input = HydroMatchingHelper.Create(elbowViewModel.Vmo, elbowViewModel.HydroInfo);
                        var dlg = new ElbowSingMatchingDlg();
                        dlg.ReloadDataEvent += (output) =>
                        {
                            HydroMatchingHelper.Apply(elbowViewModel.HydroInfo, elbowViewModel.Vmo, output);
                            elbowViewModel.UpdateProperty();
                            this.hydroVisualPropertyCtrl1.UpdateRows();
                        };
                        dlg.SetBindingData(input);
                        dlg.ShowDialog();
                    }
                    break;
                case Yw.Hydro.ParterCatalog.Threelink:
                    {
                    }
                    break;
                case Yw.Hydro.ParterCatalog.Fourlink:
                    {
                    }
                    break;
                case Yw.Hydro.ParterCatalog.Meter:
                    {
                    }
                    break;
                case Yw.Hydro.ParterCatalog.Flowmeter:
                    {
                    }
                    break;
                case Yw.Hydro.ParterCatalog.Pressmeter:
                    {
                    }
                    break;
                case Yw.Hydro.ParterCatalog.Nozzle:
                    {
                    }
                    break;
                case Yw.Hydro.ParterCatalog.Hydrant:
                    {
                    }
                    break;
                case Yw.Hydro.ParterCatalog.Pipe:
                    {
                    }
                    break;
                case Yw.Hydro.ParterCatalog.Pump:
                    {
                        var pumpViewModel = vm as HydroPumpViewModel;
                        var input = HydroMatchingHelper.Create(pumpViewModel.Vmo, pumpViewModel.HydroInfo);
                        var dlg = new PumpSingleMatchingDlg();
                        dlg.ReloadDataEvent += (output) =>
                        {
                            HydroMatchingHelper.Apply(pumpViewModel.HydroInfo, pumpViewModel.Vmo, output);
                            pumpViewModel.UpdateProperty();
                            this.hydroVisualPropertyCtrl1.UpdateRows();
                        };
                        dlg.SetBindingData(input);
                        dlg.ShowDialog();
                    }
                    break;
                case Yw.Hydro.ParterCatalog.Valve:
                    {
                    }
                    break;
                case Yw.Hydro.ParterCatalog.Exchanger:
                    {
                    }
                    break;
                case Yw.Hydro.ParterCatalog.Compressor:
                    {
                    }
                    break;
                default: break;
            }
            return bol;
        }
        //选择曲线
        private bool HydroVisualPropertyCtrl1_SetCurveEvent(HydroVisualViewModel vm, string curve, string curveType)
        //设置曲线
        private void HydroVisualPropertyCtrl1_SetCurveEvent(HydroVisualViewModel vm, string curve, string curveType)
        {
            if (vm == null)
            {
                return false;
                return;
            }
            switch (curve)
            {
                case HydroCurve.Tank:
                    {
                    }
                    break;
                case HydroCurve.Pump:
                    {
                        //var pumpInfo = vm.HydroInfo.Pumps?.Find(x => x.Code == vm.Code);
@@ -239,52 +277,29 @@
                        //    return bol;
                        //};
                        //dlg.ShowDialog();
                        return true;
                        //return true;
                    }
                case HydroCurve.PumpQH:
                    {
                        return false;
                    }
                case HydroCurve.PumpQP:
                    {
                        return false;
                    }
                case HydroCurve.PumpQE:
                    {
                        return false;
                    }
                    break;
                case HydroCurve.Valve:
                    {
                        return false;
                    }
                case HydroCurve.ValveQL:
                    break;
                case HydroCurve.Exchanger:
                    {
                        return false;
                    }
                    break;
                case HydroCurve.Compressor:
                    {
                    }
                    break;
                default: break;
            }
            return false;
        }
        //选择模式
        private bool HydroVisualPropertyCtrl1_SetPatternEvent(HydroVisualViewModel vm, string patternType)
        {
            switch (patternType)
            {
                case HydroPattern.Head:
                    {
                        return false;
                    }
                case HydroPattern.Demand:
                    {
                        return false;
                    }
                default: break;
            }
            return false;
        }
        #endregion äº‹ä»¶å®žçް
        #endregion
        #region äº‹ä»¶ç©¿é€
@@ -332,6 +347,6 @@
            this.FlowEffectPropertyValueChangedEvent?.Invoke(vm?.Vmo);
        }
        #endregion äº‹ä»¶ç©¿é€
        #endregion
    }
}
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/01-property/SimulationPropertyCtrl.resx
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/02-page/XhsProjectSimulationSchemePage.cs
@@ -149,10 +149,10 @@
        #region å±žæ€§æŽ§ä»¶
        //属性控件
        private XhsProjectSimulationPropertyCtrl _propertyCtrl = null;
        private SimulationPropertyCtrl _propertyCtrl = null;
        //获取属性控件
        private XhsProjectSimulationPropertyCtrl GetPropertyCtrl()
        private SimulationPropertyCtrl GetPropertyCtrl()
        {
            if (_hydroInfo == null)
            {
@@ -160,7 +160,7 @@
            }
            if (_propertyCtrl == null)
            {
                _propertyCtrl = new XhsProjectSimulationPropertyCtrl();
                _propertyCtrl = new SimulationPropertyCtrl();
                _propertyCtrl.Dock = DockStyle.Fill;
                _propertyCtrl.HydroViewEvent += (visual) =>
                {
@@ -248,7 +248,7 @@
                {
                    if (this.controlContainerRight.Controls.Count > 0)
                    {
                        if (this.controlContainerRight.Controls[0] is XhsProjectSimulationPropertyCtrl)
                        if (this.controlContainerRight.Controls[0] is SimulationPropertyCtrl)
                        {
                            return true;
                        }
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.cs
@@ -147,10 +147,10 @@
        #region å±žæ€§æŽ§ä»¶
        //属性控件
        private XhsProjectSimulationPropertyCtrl _propertyCtrl = null;
        private SimulationPropertyCtrl _propertyCtrl = null;
        //获取属性控件
        private XhsProjectSimulationPropertyCtrl GetPropertyCtrl()
        private SimulationPropertyCtrl GetPropertyCtrl()
        {
            if (_hydroInfo == null)
            {
@@ -158,7 +158,7 @@
            }
            if (_propertyCtrl == null)
            {
                _propertyCtrl = new XhsProjectSimulationPropertyCtrl();
                _propertyCtrl = new SimulationPropertyCtrl();
                _propertyCtrl.Dock = DockStyle.Fill;
                _propertyCtrl.HydroViewEvent += (visual) =>
                {
@@ -246,7 +246,7 @@
                {
                    if (this.controlContainerRight.Controls.Count > 0)
                    {
                        if (this.controlContainerRight.Controls[0] is XhsProjectSimulationPropertyCtrl)
                        if (this.controlContainerRight.Controls[0] is SimulationPropertyCtrl)
                        {
                            return true;
                        }
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/08-working/XhsProjectSimulationWorkingPage.cs
@@ -234,7 +234,7 @@
                {
                    if (this.controlContainerRight.Controls.Count > 0)
                    {
                        if (this.controlContainerRight.Controls[0] is XhsProjectSimulationPropertyCtrl)
                        if (this.controlContainerRight.Controls[0] is SimulationPropertyCtrl)
                        {
                            return true;
                        }
WinFrmUI/HStation.WinFrmUI.Xhs.Core/HStation.WinFrmUI.Xhs.Core.csproj.user
@@ -85,7 +85,7 @@
    <Compile Update="03-simulation\01-info\XhsProjectSimulationProjectInfoCtrl.cs">
      <SubType>UserControl</SubType>
    </Compile>
    <Compile Update="03-simulation\01-property\XhsProjectSimulationPropertyCtrl.cs">
    <Compile Update="03-simulation\01-property\SimulationPropertyCtrl.cs">
      <SubType>UserControl</SubType>
    </Compile>
    <Compile Update="03-simulation\02-bimface\XhsProjectSimulationBimfaceCtrl.cs">
WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/05-attribute/HydroModelTypeProAttribute.cs
@@ -14,5 +14,4 @@
    }
}
WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/07-curve/01-view/HydroCurveViewCtrl.Designer.cs
ÎļþÒÑɾ³ý
WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/07-curve/01-view/HydroCurveViewCtrl.cs
ÎļþÒÑɾ³ý
WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/07-curve/01-view/HydroCurveViewCtrl.resx
ÎļþÒÑɾ³ý
WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/07-curve/01-view/HydroCurveViewDlg.Designer.cs
ÎļþÒÑɾ³ý
WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/07-curve/01-view/HydroCurveViewDlg.cs
ÎļþÒÑɾ³ý
WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/07-curve/01-view/HydroCurveViewDlg.resx
ÎļþÒÑɾ³ý
WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/07-curve/02-set/SetHydroCurveCtrl.Designer.cs
ÎļþÒÑɾ³ý
WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/07-curve/02-set/SetHydroCurveCtrl.cs
ÎļþÒÑɾ³ý
WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/07-curve/02-set/SetHydroCurveCtrl.resx
ÎļþÒÑɾ³ý
WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/07-curve/02-set/SetHydroCurveDlg.Designer.cs
ÎļþÒÑɾ³ý
WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/07-curve/02-set/SetHydroCurveDlg.cs
ÎļþÒÑɾ³ý
WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/07-curve/02-set/SetHydroCurveDlg.resx
ÎļþÒÑɾ³ý
WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/07-curve/HydroCurvePointViewModel.cs
WinFrmUI/Yw.WinFrmUI.Hydro.Core/05-property/HydroVisualPropertyCtrl.Designer.cs
@@ -29,16 +29,16 @@
        private void InitializeComponent()
        {
            components = new Container();
            DevExpress.Utils.SuperToolTip superToolTip8 = new DevExpress.Utils.SuperToolTip();
            DevExpress.Utils.ToolTipItem toolTipItem8 = new DevExpress.Utils.ToolTipItem();
            DevExpress.Utils.SuperToolTip superToolTip6 = new DevExpress.Utils.SuperToolTip();
            DevExpress.Utils.ToolTipItem toolTipItem6 = new DevExpress.Utils.ToolTipItem();
            DevExpress.Utils.SuperToolTip superToolTip7 = new DevExpress.Utils.SuperToolTip();
            DevExpress.Utils.ToolTipItem toolTipItem7 = new DevExpress.Utils.ToolTipItem();
            ComponentResourceManager resources = new ComponentResourceManager(typeof(HydroVisualPropertyCtrl));
            DevExpress.Utils.SuperToolTip superToolTip1 = new DevExpress.Utils.SuperToolTip();
            DevExpress.Utils.ToolTipItem toolTipItem1 = new DevExpress.Utils.ToolTipItem();
            DevExpress.Utils.SuperToolTip superToolTip2 = new DevExpress.Utils.SuperToolTip();
            DevExpress.Utils.ToolTipItem toolTipItem2 = new DevExpress.Utils.ToolTipItem();
            DevExpress.Utils.SuperToolTip superToolTip3 = new DevExpress.Utils.SuperToolTip();
            DevExpress.Utils.ToolTipItem toolTipItem3 = new DevExpress.Utils.ToolTipItem();
            DevExpress.Utils.SuperToolTip superToolTip4 = new DevExpress.Utils.SuperToolTip();
            DevExpress.Utils.ToolTipTitleItem toolTipTitleItem1 = new DevExpress.Utils.ToolTipTitleItem();
            DevExpress.Utils.ToolTipItem toolTipItem4 = new DevExpress.Utils.ToolTipItem();
            DevExpress.Utils.SuperToolTip superToolTip5 = new DevExpress.Utils.SuperToolTip();
            DevExpress.Utils.ToolTipTitleItem toolTipTitleItem2 = new DevExpress.Utils.ToolTipTitleItem();
            DevExpress.Utils.ToolTipItem toolTipItem5 = new DevExpress.Utils.ToolTipItem();
            layoutControl1 = new DevExpress.XtraLayout.LayoutControl();
            hydroVisualPropertyDescriptionCtrl1 = new HydroVisualPropertyDescriptionCtrl();
            propertyGridControl1 = new DevExpress.XtraVerticalGrid.PropertyGridControl();
@@ -51,7 +51,7 @@
            bar1 = new DevExpress.XtraBars.Bar();
            barBtnExpandAll = new DevExpress.XtraBars.BarButtonItem();
            barBtnCollpseAll = new DevExpress.XtraBars.BarButtonItem();
            barBtnDb = new DevExpress.XtraBars.BarButtonItem();
            barBtnMatchingDb = new DevExpress.XtraBars.BarButtonItem();
            barBtnChangeLink = new DevExpress.XtraBars.BarButtonItem();
            barBtnView = new DevExpress.XtraBars.BarButtonItem();
            barBtnHelp = new DevExpress.XtraBars.BarButtonItem();
@@ -165,7 +165,7 @@
            barManager1.DockControls.Add(barDockControlLeft);
            barManager1.DockControls.Add(barDockControlRight);
            barManager1.Form = this;
            barManager1.Items.AddRange(new DevExpress.XtraBars.BarItem[] { barBtnHelp, barBtnExpandAll, barBtnCollpseAll, barBtnChangeLink, barBtnView, barBtnDb });
            barManager1.Items.AddRange(new DevExpress.XtraBars.BarItem[] { barBtnHelp, barBtnExpandAll, barBtnCollpseAll, barBtnChangeLink, barBtnView, barBtnMatchingDb });
            barManager1.MaxItemId = 19;
            // 
            // bar1
@@ -180,7 +180,7 @@
            bar1.DockRow = 0;
            bar1.DockStyle = DevExpress.XtraBars.BarDockStyle.Top;
            bar1.FloatLocation = new Point(1899, 679);
            bar1.LinksPersistInfo.AddRange(new DevExpress.XtraBars.LinkPersistInfo[] { new DevExpress.XtraBars.LinkPersistInfo(barBtnExpandAll), new DevExpress.XtraBars.LinkPersistInfo(barBtnCollpseAll), new DevExpress.XtraBars.LinkPersistInfo(barBtnDb), new DevExpress.XtraBars.LinkPersistInfo(barBtnChangeLink), new DevExpress.XtraBars.LinkPersistInfo(barBtnView), new DevExpress.XtraBars.LinkPersistInfo(barBtnHelp) });
            bar1.LinksPersistInfo.AddRange(new DevExpress.XtraBars.LinkPersistInfo[] { new DevExpress.XtraBars.LinkPersistInfo(barBtnExpandAll), new DevExpress.XtraBars.LinkPersistInfo(barBtnCollpseAll), new DevExpress.XtraBars.LinkPersistInfo(barBtnMatchingDb), new DevExpress.XtraBars.LinkPersistInfo(barBtnChangeLink), new DevExpress.XtraBars.LinkPersistInfo(barBtnView), new DevExpress.XtraBars.LinkPersistInfo(barBtnHelp) });
            bar1.OptionsBar.AllowQuickCustomization = false;
            bar1.OptionsBar.DrawBorder = false;
            bar1.OptionsBar.RotateWhenVertical = false;
@@ -205,25 +205,25 @@
            barBtnCollpseAll.Name = "barBtnCollpseAll";
            barBtnCollpseAll.ItemClick += barBtnCollpseAll_ItemClick;
            // 
            // barBtnDb
            // barBtnMatchingDb
            // 
            barBtnDb.Caption = "选择";
            barBtnDb.Id = 18;
            barBtnDb.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnDb.ImageOptions.SvgImage");
            barBtnDb.Name = "barBtnDb";
            toolTipItem1.Text = "从产品库中进行选择";
            superToolTip1.Items.Add(toolTipItem1);
            barBtnDb.SuperTip = superToolTip1;
            barBtnDb.ItemClick += barBtnDb_ItemClick;
            barBtnMatchingDb.Caption = "选择";
            barBtnMatchingDb.Id = 18;
            barBtnMatchingDb.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnDb.ImageOptions.SvgImage");
            barBtnMatchingDb.Name = "barBtnMatchingDb";
            toolTipItem8.Text = "从产品库中进行选择";
            superToolTip8.Items.Add(toolTipItem8);
            barBtnMatchingDb.SuperTip = superToolTip8;
            barBtnMatchingDb.ItemClick += barBtnMatchingDb_ItemClick;
            // 
            // barBtnChangeLink
            // 
            barBtnChangeLink.Id = 16;
            barBtnChangeLink.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnChangeLink.ImageOptions.SvgImage");
            barBtnChangeLink.Name = "barBtnChangeLink";
            toolTipItem2.Text = "调整上下游";
            superToolTip2.Items.Add(toolTipItem2);
            barBtnChangeLink.SuperTip = superToolTip2;
            toolTipItem6.Text = "调整上下游";
            superToolTip6.Items.Add(toolTipItem6);
            barBtnChangeLink.SuperTip = superToolTip6;
            barBtnChangeLink.Visibility = DevExpress.XtraBars.BarItemVisibility.Never;
            barBtnChangeLink.ItemClick += barBtnChangeLink_ItemClick;
            // 
@@ -232,9 +232,9 @@
            barBtnView.Id = 17;
            barBtnView.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnView.ImageOptions.SvgImage");
            barBtnView.Name = "barBtnView";
            toolTipItem3.Text = "查看";
            superToolTip3.Items.Add(toolTipItem3);
            barBtnView.SuperTip = superToolTip3;
            toolTipItem7.Text = "查看";
            superToolTip7.Items.Add(toolTipItem7);
            barBtnView.SuperTip = superToolTip7;
            barBtnView.Visibility = DevExpress.XtraBars.BarItemVisibility.Never;
            barBtnView.ItemClick += barBtnView_ItemClick;
            // 
@@ -245,14 +245,14 @@
            barBtnHelp.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnHelp.ImageOptions.SvgImage");
            barBtnHelp.ImageOptions.SvgImageSize = new Size(20, 20);
            barBtnHelp.Name = "barBtnHelp";
            toolTipTitleItem1.Appearance.Image = (Image)resources.GetObject("resource.Image");
            toolTipTitleItem1.Appearance.Options.UseImage = true;
            toolTipTitleItem1.ImageOptions.Image = (Image)resources.GetObject("resource.Image1");
            toolTipItem4.LeftIndent = 6;
            toolTipItem4.Text = "描述信息";
            superToolTip4.Items.Add(toolTipTitleItem1);
            superToolTip4.Items.Add(toolTipItem4);
            barBtnHelp.SuperTip = superToolTip4;
            toolTipTitleItem2.Appearance.Image = (Image)resources.GetObject("resource.Image");
            toolTipTitleItem2.Appearance.Options.UseImage = true;
            toolTipTitleItem2.ImageOptions.Image = (Image)resources.GetObject("resource.Image1");
            toolTipItem5.LeftIndent = 6;
            toolTipItem5.Text = "描述信息";
            superToolTip5.Items.Add(toolTipTitleItem2);
            superToolTip5.Items.Add(toolTipItem5);
            barBtnHelp.SuperTip = superToolTip5;
            barBtnHelp.ItemClick += barBtnHelp_ItemClick;
            // 
            // barDockControlTop
@@ -332,6 +332,6 @@
        private HydroVisualPropertyDescriptionCtrl hydroVisualPropertyDescriptionCtrl1;
        private DevExpress.XtraLayout.LayoutControlItem layoutDescription;
        private DevExpress.Utils.SvgImageCollection svgImg16;
        private DevExpress.XtraBars.BarButtonItem barBtnDb;
        private DevExpress.XtraBars.BarButtonItem barBtnMatchingDb;
    }
}
WinFrmUI/Yw.WinFrmUI.Hydro.Core/05-property/HydroVisualPropertyCtrl.cs
@@ -21,50 +21,37 @@
        /// <summary>
        /// åŒ¹é…db事件
        /// ç¬¬ä¸€ä¸ªå‚数为匹配Db的ViewModel
        /// ç¬¬äºŒä¸ªå‚数为是否匹配成功
        /// </summary>
        public event Func<HydroVisualViewModel, bool> MatchingDbEvent;
        public event Action<HydroVisualViewModel> MatchingDbEvent;
        /// <summary>
        /// è®¾ç½®æ›²çº¿äº‹ä»¶
        /// ç¬¬ä¸€ä¸ªå‚数为设置曲线的ViewModel
        /// ç¬¬äºŒä¸ªå‚数为曲线类型
        /// ç¬¬ä¸‰ä¸ªå‚数为是否设置成功
        /// ç¬¬äºŒä¸ªå‚数为曲线 (HydroCurve)
        /// ç¬¬ä¸‰ä¸ªå‚数为曲线类型(HydroCurveType)
        /// </summary>
        public event Func<HydroVisualViewModel, string, string, bool> SetCurveEvent;
        /// <summary>
        /// è®¾ç½®æ¨¡å¼äº‹ä»¶
        /// ç¬¬ä¸€ä¸ªå‚数为设置模式事的ViewModel
        /// ç¬¬äºŒä¸ªå‚数为模式事类型
        /// ç¬¬ä¸‰ä¸ªå‚数为是否设置成功
        /// </summary>
        public event Func<HydroVisualViewModel, string, bool> SetPatternEvent;
        public event Action<HydroVisualViewModel, string, string> SetCurveEvent;
        /// <summary>
        /// å±žæ€§å€¼å‘生改变事件
        /// </summary>
        public event Action<HydroVisualViewModel> PropertyValueChangedEvent;
        /// <summary>
        /// æ ‡æ³¨å±žæ€§å€¼æ”¹å˜äº‹ä»¶
        /// </summary>
        public event Action<HydroVisualViewModel> MarkPropertyValueChangedEvent;
        /// <summary>
        /// åˆ†çº§å±žæ€§å€¼æ”¹å˜äº‹ä»¶
        /// </summary>
        public event Action<HydroVisualViewModel> GradingPropertyValueChangedEvent;
        /// <summary>
        /// æ°´æµåŠ¨ç”»å±žæ€§å€¼æ”¹å˜äº‹ä»¶
        /// </summary>
        public event Action<HydroVisualViewModel> FlowEffectPropertyValueChangedEvent;
        /// <summary>
        /// å¼ºè°ƒè¿žæŽ¥èŠ‚ç‚¹äº‹ä»¶
        /// ç¬¬ä¸€ä¸ªå‚数为本身Code
        /// ç¬¬äºŒä¸ªå‚数为连接节点Code
        /// </summary>
        public event Action<HydroLinkViewModel, string> BlinkLinkNodeEvent;
        /// <summary>
        /// æŸ¥çœ‹æž„件事件
        /// </summary>
@@ -84,17 +71,17 @@
            set
            {
                this.barBtnChangeLink.Visibility = value is HydroLinkViewModel ? BarItemVisibility.Always : BarItemVisibility.Never;
                this.barBtnDb.Visibility = value == null ? BarItemVisibility.Never : BarItemVisibility.Always;
                this.barBtnMatchingDb.Visibility = value == null ? BarItemVisibility.Never : BarItemVisibility.Always;
                this.barBtnView.Visibility = value == null ? BarItemVisibility.Never : BarItemVisibility.Always;
                if (value != null)
                {
                    if (value is HydroReservoirViewModel)
                    {
                        this.barBtnDb.Visibility = BarItemVisibility.Never;
                        this.barBtnMatchingDb.Visibility = BarItemVisibility.Never;
                    }
                    else if (value is HydroJunctionViewModel)
                    {
                        this.barBtnDb.Visibility = BarItemVisibility.Never;
                        this.barBtnMatchingDb.Visibility = BarItemVisibility.Never;
                    }
                }
                this.propertyGridControl1.SelectedObject = value;
@@ -339,35 +326,6 @@
            #endregion
            #region åž‹å·
            var modelTypeAttri = (HydroModelTypeProAttribute)descriptor.Attributes[typeof(HydroModelTypeProAttribute)];
            if (modelTypeAttri != null)
            {
                var buttonEdit = new RepositoryItemButtonEdit();
                buttonEdit.TextEditStyle = TextEditStyles.DisableTextEditor;
                buttonEdit.ButtonClick += delegate
                {
                    if (this.MatchingDbEvent == null)
                    {
                        return;
                    }
                    var vm = GetPropertyViewModel(e.Row);
                    if (vm == null)
                    {
                        return;
                    }
                    var bol = this.MatchingDbEvent.Invoke(vm);
                    if (bol)
                    {
                        UpdateRows();
                    }
                };
                e.RepositoryItem = buttonEdit;
            }
            #endregion
            #region æ›²çº¿
            var curvePropAttri = (HydroCurveProAttribute)descriptor.Attributes[typeof(HydroCurveProAttribute)];
@@ -382,29 +340,7 @@
                    {
                        return;
                    }
                    if (this.SetCurveEvent == null || !this.SetCurveEvent.Invoke(vm, curvePropAttri.Curve, curvePropAttri.CurveType))
                    {
                        var curveCode = e.Row.Properties.Value?.ToString();
                        var curveInfo = vm.HydroInfo.Curves?.Find(x => x.Code == curveCode);
                        var dlg = new SetHydroCurveDlg();
                        dlg.SetBindingData(vm.HydroInfo, curveInfo, curvePropAttri.Curve, curvePropAttri.CurveType);
                        dlg.ReloadDataEvent += (curveInfoRhs) =>
                        {
                            if (vm.HydroInfo.Curves == null)
                            {
                                vm.HydroInfo.Curves = new List<Model.HydroCurveInfo>();
                            }
                            if (curveInfo != null)
                            {
                                vm.HydroInfo.Curves.Remove(curveInfo);
                            }
                            vm.HydroInfo.Curves.Add(curveInfo);
                            e.Row.Properties.Value = curveInfo.Code;
                            vm.UpdateVmoProperty();
                            UpdateRows();
                        };
                        dlg.ShowDialog();
                    }
                    this.SetCurveEvent?.Invoke(vm, curvePropAttri.Curve, curvePropAttri.CurveType);
                };
                e.RepositoryItem = buttonEdit;
            }
@@ -420,26 +356,7 @@
                buttonEdit.TextEditStyle = TextEditStyles.DisableTextEditor;
                buttonEdit.ButtonClick += delegate
                {
                    var vm = GetPropertyViewModel(e.Row);
                    switch (patternProAttri.PatternType)
                    {
                        case HydroPattern.Head:
                            {
                                if (this.SetPatternEvent == null || !this.SetPatternEvent.Invoke(vm, HydroPattern.Head))
                                {
                                    //缺省的设置方法
                                }
                            }
                            break;
                        case HydroPattern.Demand:
                            {
                                if (this.SetPatternEvent == null || !this.SetPatternEvent.Invoke(vm, HydroPattern.Demand))
                                {
                                    //缺省的设置方法
                                }
                            }
                            break;
                    }
                };
                e.RepositoryItem = buttonEdit;
            }
@@ -694,18 +611,15 @@
            }
        }
        //选择
        private void barBtnDb_ItemClick(object sender, ItemClickEventArgs e)
        //Db匹配
        private void barBtnMatchingDb_ItemClick(object sender, ItemClickEventArgs e)
        {
            var vm = this.SelectedObject;
            if (vm == null)
            {
                return;
            }
            if (this.MatchingDbEvent != null)
            {
            }
            this.MatchingDbEvent?.Invoke(vm);
        }
        //改变连接节点
WinFrmUI/Yw.WinFrmUI.Hydro.Core/05-property/HydroVisualPropertyCtrl.resx
@@ -120,98 +120,13 @@
  <metadata name="svgImg16.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
    <value>17, 17</value>
  </metadata>
  <metadata name="svgImg16.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
    <value>17, 17</value>
  </metadata>
  <metadata name="barManager1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
    <value>151, 19</value>
  </metadata>
  <assembly alias="DevExpress.Data.v23.2" name="DevExpress.Data.v23.2, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
  <data name="barBtnExpandAll.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAALACAAAC77u/
        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
        Y2U9InByZXNlcnZlIiBpZD0iRXhwYW5kX0ZpZWxkIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3
        IDAgMCAzMiAzMiI+DQogIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CgkuQmxhY2t7ZmlsbDojNzI3Mjcy
        O30KCS5HcmVlbntmaWxsOiMwMzlDMjM7fQoJLnN0MHtvcGFjaXR5OjAuNzU7fQo8L3N0eWxlPg0KICA8
        cG9seWdvbiBwb2ludHM9IjE0LDYgMTAsNiAxMCwyIDYsMiA2LDYgMiw2IDIsMTAgNiwxMCA2LDE0IDEw
        LDE0IDEwLDEwIDE0LDEwICIgY2xhc3M9IkdyZWVuIiAvPg0KICA8ZyBjbGFzcz0ic3QwIj4NCiAgICA8
        cGF0aCBkPSJNMjIsNmgxMHYySDIyVjZ6IE0yMiwxMmgxMHYtMkgyMlYxMnogTTIyLDIwaDEwdi0ySDIy
        VjIweiBNMjIsMjRoMTB2LTJIMjJWMjR6IiBjbGFzcz0iQmxhY2siIC8+DQogIDwvZz4NCiAgPHBhdGgg
        ZD0iTTE4LDJoMTR2MkgxOFYyeiBNMTgsMTZoMTR2LTJIMThWMTZ6IE0xOCwyOGgxNHYtMkgxOFYyOHoi
        IGNsYXNzPSJCbGFjayIgLz4NCjwvc3ZnPgs=
</value>
  </data>
  <data name="barBtnCollpseAll.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAIcCAAAC77u/
        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
        Y2U9InByZXNlcnZlIiBpZD0iQ29sbGFwc2VfRmllbGQiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpu
        ZXcgMCAwIDMyIDMyIj4NCiAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5CbGFja3tmaWxsOiM3Mjcy
        NzI7fQoJLlJlZHtmaWxsOiNEMTFDMUM7fQoJLnN0MHtvcGFjaXR5OjAuNzU7fQo8L3N0eWxlPg0KICA8
        cmVjdCB4PSIyIiB5PSI2IiB3aWR0aD0iMTIiIGhlaWdodD0iNCIgY2xhc3M9IlJlZCIgLz4NCiAgPGcg
        Y2xhc3M9InN0MCI+DQogICAgPHBhdGggZD0iTTIyLDZoMTB2MkgyMlY2eiBNMjIsMTJoMTB2LTJIMjJW
        MTJ6IE0yMiwyMGgxMHYtMkgyMlYyMHogTTIyLDI0aDEwdi0ySDIyVjI0eiIgY2xhc3M9IkJsYWNrIiAv
        Pg0KICA8L2c+DQogIDxwYXRoIGQ9Ik0xOCwyaDE0djJIMThWMnogTTE4LDE2aDE0di0ySDE4VjE2eiBN
        MTgsMjhoMTR2LTJIMThWMjh6IiBjbGFzcz0iQmxhY2siIC8+DQo8L3N2Zz4L
</value>
  </data>
  <data name="barBtnDb.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAMACAAAC77u/
        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
        Y2U9InByZXNlcnZlIiBpZD0iU2VsZWN0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAz
        MiAzMiI+DQogIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CgkuQmxhY2t7ZmlsbDojNzI3MjcyO30KCS5C
        bHVle2ZpbGw6IzExNzdENzt9Cgkuc3Qwe29wYWNpdHk6MC41O30KPC9zdHlsZT4NCiAgPGcgY2xhc3M9
        InN0MCI+DQogICAgPHBhdGggZD0iTTEwLDEwSDZWNmg0VjEweiBNMjQsNkgxMnY0aDEyVjZ6IE0xMCwx
        Mkg2djEyaDRWMTJ6IiBjbGFzcz0iQmx1ZSIgLz4NCiAgPC9nPg0KICA8cGF0aCBkPSJNMTYsMjhoLTEu
        OEgxMkgzYy0wLjYsMC0xLTAuNC0xLTFWM2MwLTAuNiwwLjQtMSwxLTFoMjRjMC42LDAsMSwwLjQsMSwx
        djl2Mi4ydjYuOWwtMi0ydi01VjEyVjRINHYyMmg4aDIuMSAgSDE2VjI4eiBNMjQuMiwyNkgzMEwxOCwx
        NHYxNi41bDQtNGwyLDVjMC4yLDAuNCwwLjYsMC42LDEsMC40bDAuNy0wLjNjMC40LTAuMiwwLjYtMC42
        LDAuNC0xTDI0LjIsMjZ6IiBjbGFzcz0iQmxhY2siIC8+DQo8L3N2Zz4L
</value>
  </data>
  <data name="barBtnChangeLink.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAK0BAAAC77u/
        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBlbmFibGUt
        YmFja2dyb3VuZD0ibmV3IDAgMCAzMiAzMiIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgaWQ9IkxheWVyXzEi
        Pg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkdyZWVue2ZpbGw6IzAzOUMyMzt9Cjwvc3R5bGU+
        DQogIDxwb2x5Z29uIHBvaW50cz0iMzAsMjIgMjIsMTYgMjIsMjAgMTIsMjAgMjgsNCAyMiw0IDIsNCAy
        LDggMTgsOCAyLDI0IDIyLDI0IDIyLDI4ICIgZmlsbD0iIzAzOUMyMyIgY2xhc3M9IkdyZWVuIiAvPg0K
        PC9zdmc+Cw==
</value>
  </data>
  <data name="barBtnView.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAADUCAAAC77u/
        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5Z
        ZWxsb3d7ZmlsbDojRkZCMTE1O30KCS5CbGFja3tmaWxsOiM3MjcyNzI7fQoJLkdyZWVue2ZpbGw6IzAz
        OUMyMzt9CgkuUmVke2ZpbGw6I0QxMUMxQzt9Cgkuc3Qwe29wYWNpdHk6MC43NTt9Cgkuc3Qxe29wYWNp
        dHk6MC41O30KPC9zdHlsZT4NCiAgPGcgaWQ9IlNlbmQiPg0KICAgIDxwb2x5Z29uIHBvaW50cz0iMiwy
        MCA4LDIyLjQgMjQsMTAgMTIsMjQgMTIsMzAgMTYuMywyNS43IDIyLDI4IDMwLDIgICIgY2xhc3M9IkJs
        dWUiIC8+DQogIDwvZz4NCjwvc3ZnPgs=
</value>
  </data>
  <data name="barBtnHelp.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
@@ -268,4 +183,92 @@
        6XTsLy5SM69xQkG9AAAAAElFTkSuQmCC
</value>
  </data>
  <data name="barBtnExpandAll.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAALACAAAC77u/
        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
        Y2U9InByZXNlcnZlIiBpZD0iRXhwYW5kX0ZpZWxkIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3
        IDAgMCAzMiAzMiI+DQogIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CgkuQmxhY2t7ZmlsbDojNzI3Mjcy
        O30KCS5HcmVlbntmaWxsOiMwMzlDMjM7fQoJLnN0MHtvcGFjaXR5OjAuNzU7fQo8L3N0eWxlPg0KICA8
        cG9seWdvbiBwb2ludHM9IjE0LDYgMTAsNiAxMCwyIDYsMiA2LDYgMiw2IDIsMTAgNiwxMCA2LDE0IDEw
        LDE0IDEwLDEwIDE0LDEwICIgY2xhc3M9IkdyZWVuIiAvPg0KICA8ZyBjbGFzcz0ic3QwIj4NCiAgICA8
        cGF0aCBkPSJNMjIsNmgxMHYySDIyVjZ6IE0yMiwxMmgxMHYtMkgyMlYxMnogTTIyLDIwaDEwdi0ySDIy
        VjIweiBNMjIsMjRoMTB2LTJIMjJWMjR6IiBjbGFzcz0iQmxhY2siIC8+DQogIDwvZz4NCiAgPHBhdGgg
        ZD0iTTE4LDJoMTR2MkgxOFYyeiBNMTgsMTZoMTR2LTJIMThWMTZ6IE0xOCwyOGgxNHYtMkgxOFYyOHoi
        IGNsYXNzPSJCbGFjayIgLz4NCjwvc3ZnPgs=
</value>
  </data>
  <data name="barBtnCollpseAll.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAIcCAAAC77u/
        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
        Y2U9InByZXNlcnZlIiBpZD0iQ29sbGFwc2VfRmllbGQiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpu
        ZXcgMCAwIDMyIDMyIj4NCiAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5CbGFja3tmaWxsOiM3Mjcy
        NzI7fQoJLlJlZHtmaWxsOiNEMTFDMUM7fQoJLnN0MHtvcGFjaXR5OjAuNzU7fQo8L3N0eWxlPg0KICA8
        cmVjdCB4PSIyIiB5PSI2IiB3aWR0aD0iMTIiIGhlaWdodD0iNCIgY2xhc3M9IlJlZCIgLz4NCiAgPGcg
        Y2xhc3M9InN0MCI+DQogICAgPHBhdGggZD0iTTIyLDZoMTB2MkgyMlY2eiBNMjIsMTJoMTB2LTJIMjJW
        MTJ6IE0yMiwyMGgxMHYtMkgyMlYyMHogTTIyLDI0aDEwdi0ySDIyVjI0eiIgY2xhc3M9IkJsYWNrIiAv
        Pg0KICA8L2c+DQogIDxwYXRoIGQ9Ik0xOCwyaDE0djJIMThWMnogTTE4LDE2aDE0di0ySDE4VjE2eiBN
        MTgsMjhoMTR2LTJIMThWMjh6IiBjbGFzcz0iQmxhY2siIC8+DQo8L3N2Zz4L
</value>
  </data>
  <data name="barBtnChangeLink.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAK0BAAAC77u/
        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBlbmFibGUt
        YmFja2dyb3VuZD0ibmV3IDAgMCAzMiAzMiIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgaWQ9IkxheWVyXzEi
        Pg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkdyZWVue2ZpbGw6IzAzOUMyMzt9Cjwvc3R5bGU+
        DQogIDxwb2x5Z29uIHBvaW50cz0iMzAsMjIgMjIsMTYgMjIsMjAgMTIsMjAgMjgsNCAyMiw0IDIsNCAy
        LDggMTgsOCAyLDI0IDIyLDI0IDIyLDI4ICIgZmlsbD0iIzAzOUMyMyIgY2xhc3M9IkdyZWVuIiAvPg0K
        PC9zdmc+Cw==
</value>
  </data>
  <data name="barBtnView.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAADUCAAAC77u/
        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5Z
        ZWxsb3d7ZmlsbDojRkZCMTE1O30KCS5CbGFja3tmaWxsOiM3MjcyNzI7fQoJLkdyZWVue2ZpbGw6IzAz
        OUMyMzt9CgkuUmVke2ZpbGw6I0QxMUMxQzt9Cgkuc3Qwe29wYWNpdHk6MC43NTt9Cgkuc3Qxe29wYWNp
        dHk6MC41O30KPC9zdHlsZT4NCiAgPGcgaWQ9IlNlbmQiPg0KICAgIDxwb2x5Z29uIHBvaW50cz0iMiwy
        MCA4LDIyLjQgMjQsMTAgMTIsMjQgMTIsMzAgMTYuMywyNS43IDIyLDI4IDMwLDIgICIgY2xhc3M9IkJs
        dWUiIC8+DQogIDwvZz4NCjwvc3ZnPgs=
</value>
  </data>
  <data name="barBtnDb.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAMACAAAC77u/
        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
        Y2U9InByZXNlcnZlIiBpZD0iU2VsZWN0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAz
        MiAzMiI+DQogIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CgkuQmxhY2t7ZmlsbDojNzI3MjcyO30KCS5C
        bHVle2ZpbGw6IzExNzdENzt9Cgkuc3Qwe29wYWNpdHk6MC41O30KPC9zdHlsZT4NCiAgPGcgY2xhc3M9
        InN0MCI+DQogICAgPHBhdGggZD0iTTEwLDEwSDZWNmg0VjEweiBNMjQsNkgxMnY0aDEyVjZ6IE0xMCwx
        Mkg2djEyaDRWMTJ6IiBjbGFzcz0iQmx1ZSIgLz4NCiAgPC9nPg0KICA8cGF0aCBkPSJNMTYsMjhoLTEu
        OEgxMkgzYy0wLjYsMC0xLTAuNC0xLTFWM2MwLTAuNiwwLjQtMSwxLTFoMjRjMC42LDAsMSwwLjQsMSwx
        djl2Mi4ydjYuOWwtMi0ydi01VjEyVjRINHYyMmg4aDIuMSAgSDE2VjI4eiBNMjQuMiwyNkgzMEwxOCwx
        NHYxNi41bDQtNGwyLDVjMC4yLDAuNCwwLjYsMC42LDEsMC40bDAuNy0wLjNjMC40LTAuMiwwLjYtMC42
        LDAuNC0xTDI0LjIsMjZ6IiBjbGFzcz0iQmxhY2siIC8+DQo8L3N2Zz4L
</value>
  </data>
</root>
WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/02-tank/HydroTankListCtrl.Designer.cs
@@ -90,7 +90,7 @@
            // 
            // hydroTankViewModelBindingSource
            // 
            hydroTankViewModelBindingSource.DataSource = typeof(HydroTankViewModel);
            hydroTankViewModelBindingSource.DataSource = typeof(HydroElbowViewModel);
            // 
            // layoutControl1
            // 
WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/00-core/HydroMatchingHelper.cs
@@ -15,22 +15,9 @@
        #region åˆ›å»º
        /// <summary>
        /// åˆ›å»ºè‡ªåŠ¨åŒ¹é…ViewModel
        /// </summary>
        public static HydroMatchingViewModel Create(Yw.Model.HydroModelInfo hydroInfo, List<HydroCalcuVisualResult> allCalcuResultVisualList = null)
        {
            if (hydroInfo == null)
            {
                return default;
            }
            var allCalcuResultVisualDict = allCalcuResultVisualList?.ToDictionary(x => x.Code);
            return Create(hydroInfo, allCalcuResultVisualDict);
        }
        /// <summary>
        /// åˆ›å»º
        /// </summary>
        public static HydroMatchingViewModel Create(Yw.Model.HydroModelInfo hydroInfo, Dictionary<string, HydroCalcuVisualResult> allCalcuResultVisualDict = null)
        public static HydroMatchingViewModel Create(Yw.Model.HydroModelInfo hydroInfo)
        {
            if (hydroInfo == null)
            {
@@ -42,97 +29,97 @@
            #region æ°´æ± 
            var tanks = hydroInfo.GetAllTanks();
            vm.Tanks = tanks?.Select(x => Create(x, hydroInfo, allCalcuResultVisualDict?.GetValue(x.Code) as HydroCalcuNodeResult)).ToList();
            vm.Tanks = tanks?.Select(x => Create(x, hydroInfo)).ToList();
            #endregion
            #region é—·å¤´
            vm.Bluntheads = hydroInfo.Bluntheads?.Select(x => Create(x, hydroInfo, allCalcuResultVisualDict?.GetValue(x.Code) as HydroCalcuNodeResult)).ToList();
            vm.Bluntheads = hydroInfo.Bluntheads?.Select(x => Create(x, hydroInfo)).ToList();
            #endregion
            #region å¼¯å¤´
            vm.Elbows = hydroInfo.Elbows?.Select(x => Create(x, hydroInfo, allCalcuResultVisualDict?.GetValue(x.Code) as HydroCalcuNodeResult)).ToList();
            vm.Elbows = hydroInfo.Elbows?.Select(x => Create(x, hydroInfo)).ToList();
            #endregion
            #region ä¸‰é€š
            vm.Threelinks = hydroInfo.Threelinks?.Select(x => Create(x, hydroInfo, allCalcuResultVisualDict?.GetValue(x.Code) as HydroCalcuNodeResult)).ToList();
            vm.Threelinks = hydroInfo.Threelinks?.Select(x => Create(x, hydroInfo)).ToList();
            #endregion
            #region å››é€š
            vm.Fourlinks = hydroInfo.Fourlinks?.Select(x => Create(x, hydroInfo, allCalcuResultVisualDict?.GetValue(x.Code) as HydroCalcuNodeResult)).ToList();
            vm.Fourlinks = hydroInfo.Fourlinks?.Select(x => Create(x, hydroInfo)).ToList();
            #endregion
            #region å–·å˜´
            vm.Nozzles = hydroInfo.Nozzles?.Select(x => Create(x, hydroInfo, allCalcuResultVisualDict?.GetValue(x.Code) as HydroCalcuNodeResult)).ToList();
            vm.Nozzles = hydroInfo.Nozzles?.Select(x => Create(x, hydroInfo)).ToList();
            #endregion
            #region æ¶ˆç«æ “
            vm.Hydrants = hydroInfo.Hydrants?.Select(x => Create(x, hydroInfo, allCalcuResultVisualDict?.GetValue(x.Code) as HydroCalcuNodeResult)).ToList();
            vm.Hydrants = hydroInfo.Hydrants?.Select(x => Create(x, hydroInfo)).ToList();
            #endregion
            #region æ°´è¡¨
            vm.Meters = hydroInfo.Meters?.Select(x => Create(x, hydroInfo, allCalcuResultVisualDict?.GetValue(x.Code) as HydroCalcuNodeResult)).ToList();
            vm.Meters = hydroInfo.Meters?.Select(x => Create(x, hydroInfo)).ToList();
            #endregion
            #region æµé‡è®¡
            vm.Flowmeters = hydroInfo.Flowmeters?.Select(x => Create(x, hydroInfo, allCalcuResultVisualDict?.GetValue(x.Code) as HydroCalcuFlowmeterResult)).ToList();
            vm.Flowmeters = hydroInfo.Flowmeters?.Select(x => Create(x, hydroInfo)).ToList();
            #endregion
            #region åŽ‹åŠ›è¡¨
            vm.Pressmeters = hydroInfo.Pressmeters?.Select(x => Create(x, hydroInfo, allCalcuResultVisualDict?.GetValue(x.Code) as HydroCalcuPressmeterResult)).ToList();
            vm.Pressmeters = hydroInfo.Pressmeters?.Select(x => Create(x, hydroInfo)).ToList();
            #endregion
            #region ç®¡é“
            vm.Pipes = hydroInfo.Pipes?.Select(x => Create(x, hydroInfo, allCalcuResultVisualDict?.GetValue(x.Code) as HydroCalcuLinkResult)).ToList();
            vm.Pipes = hydroInfo.Pipes?.Select(x => Create(x, hydroInfo)).ToList();
            #endregion
            #region è¿‡æ¸¡ä»¶
            vm.Translations = hydroInfo.Translations?.Select(x => Create(x, hydroInfo, allCalcuResultVisualDict?.GetValue(x.Code) as HydroCalcuLinkResult)).ToList();
            vm.Translations = hydroInfo.Translations?.Select(x => Create(x, hydroInfo)).ToList();
            #endregion
            #region æ°´æ³µ
            vm.Pumps = hydroInfo.Pumps?.Select(x => Create(x, hydroInfo, allCalcuResultVisualDict?.GetValue(x.Code) as HydroCalcuPumpResult)).ToList();
            vm.Pumps = hydroInfo.Pumps?.Select(x => Create(x, hydroInfo)).ToList();
            #endregion
            #region é˜€é—¨
            vm.Valves = hydroInfo.Valves?.Select(x => Create(x, hydroInfo, allCalcuResultVisualDict?.GetValue(x.Code) as HydroCalcuLinkResult)).ToList();
            vm.Valves = hydroInfo.Valves?.Select(x => Create(x, hydroInfo)).ToList();
            #endregion
            #region æ¢çƒ­å™¨
            vm.Exchangers = hydroInfo.Exchangers?.Select(x => Create(x, hydroInfo, allCalcuResultVisualDict?.GetValue(x.Code) as HydroCalcuLinkResult)).ToList();
            vm.Exchangers = hydroInfo.Exchangers?.Select(x => Create(x, hydroInfo)).ToList();
            #endregion
            #region åŽ‹ç¼©æœº
            vm.Compressors = hydroInfo.Compressors?.Select(x => Create(x, hydroInfo, allCalcuResultVisualDict?.GetValue(x.Code) as HydroCalcuLinkResult)).ToList();
            vm.Compressors = hydroInfo.Compressors?.Select(x => Create(x, hydroInfo)).ToList();
            #endregion
@@ -144,9 +131,9 @@
        /// <summary>
        /// åˆ›å»ºæ°´æ± è‡ªåŠ¨åŒ¹é…ViewModel
        /// </summary>
        public static HydroTankMatchingViewModel Create(HydroTankInfo parterInfo, HydroModelInfo hydroInfo, HydroCalcuNodeResult calcuResult = null)
        public static HydroTankMatchingViewModel Create(HydroTankInfo visualInfo, HydroModelInfo hydroInfo)
        {
            if (parterInfo == null)
            if (visualInfo == null)
            {
                return default;
            }
@@ -154,19 +141,19 @@
            {
                return default;
            }
            return new HydroTankMatchingViewModel(parterInfo, hydroInfo, calcuResult);
            return new HydroTankMatchingViewModel(visualInfo, hydroInfo);
        }
        /// <summary>
        /// åˆ›å»ºæ°´æ± è‡ªåŠ¨åŒ¹é…ViewModel
        /// </summary>
        public static HydroTankMatchingViewModel Create(HydroTankViewModel parterViewModel)
        public static HydroTankMatchingViewModel Create(HydroTankViewModel visualViewModel)
        {
            if (parterViewModel == null)
            if (visualViewModel == null)
            {
                return default;
            }
            return new HydroTankMatchingViewModel(parterViewModel);
            return new HydroTankMatchingViewModel(visualViewModel);
        }
        #endregion
@@ -176,9 +163,9 @@
        /// <summary>
        /// åˆ›å»ºé—·å¤´è‡ªåŠ¨åŒ¹é…ViewModel
        /// </summary>
        public static HydroBluntheadMatchingViewModel Create(HydroBluntheadInfo parterInfo, HydroModelInfo hydroInfo, HydroCalcuNodeResult calcuResult = null)
        public static HydroBluntheadMatchingViewModel Create(HydroBluntheadInfo visualInfo, HydroModelInfo hydroInfo)
        {
            if (parterInfo == null)
            if (visualInfo == null)
            {
                return default;
            }
@@ -186,19 +173,19 @@
            {
                return default;
            }
            return new HydroBluntheadMatchingViewModel(parterInfo, hydroInfo, calcuResult);
            return new HydroBluntheadMatchingViewModel(visualInfo, hydroInfo);
        }
        /// <summary>
        /// åˆ›å»ºé—·å¤´è‡ªåŠ¨åŒ¹é…ViewModel
        /// </summary>
        public static HydroBluntheadMatchingViewModel Create(HydroBluntheadViewModel parterViewModel)
        public static HydroBluntheadMatchingViewModel Create(HydroBluntheadViewModel visualViewModel)
        {
            if (parterViewModel == null)
            if (visualViewModel == null)
            {
                return default;
            }
            return new HydroBluntheadMatchingViewModel(parterViewModel);
            return new HydroBluntheadMatchingViewModel(visualViewModel);
        }
        #endregion
@@ -208,9 +195,9 @@
        /// <summary>
        /// åˆ›å»ºå¼¯å¤´è‡ªåŠ¨åŒ¹é…ViewModel
        /// </summary>
        public static HydroElbowMatchingViewModel Create(HydroElbowInfo parterInfo, HydroModelInfo hydroInfo, HydroCalcuNodeResult calcuResult = null)
        public static HydroElbowMatchingViewModel Create(HydroElbowInfo visualInfo, HydroModelInfo hydroInfo)
        {
            if (parterInfo == null)
            if (visualInfo == null)
            {
                return default;
            }
@@ -218,19 +205,19 @@
            {
                return default;
            }
            return new HydroElbowMatchingViewModel(parterInfo, hydroInfo, calcuResult);
            return new HydroElbowMatchingViewModel(visualInfo, hydroInfo);
        }
        /// <summary>
        /// åˆ›å»ºå¼¯å¤´è‡ªåŠ¨åŒ¹é…ViewModel
        /// </summary>
        public static HydroElbowMatchingViewModel Create(HydroElbowViewModel parterViewModel)
        public static HydroElbowMatchingViewModel Create(HydroElbowViewModel visualViewModel)
        {
            if (parterViewModel == null)
            if (visualViewModel == null)
            {
                return default;
            }
            return new HydroElbowMatchingViewModel(parterViewModel);
            return new HydroElbowMatchingViewModel(visualViewModel);
        }
        #endregion
@@ -240,9 +227,9 @@
        /// <summary>
        /// åˆ›å»ºä¸‰é€šè‡ªåŠ¨åŒ¹é…ViewModel
        /// </summary>
        public static HydroThreelinkMatchingViewModel Create(HydroThreelinkInfo parterInfo, HydroModelInfo hydroInfo, HydroCalcuNodeResult calcuResult = null)
        public static HydroThreelinkMatchingViewModel Create(HydroThreelinkInfo visualInfo, HydroModelInfo hydroInfo)
        {
            if (parterInfo == null)
            if (visualInfo == null)
            {
                return default;
            }
@@ -250,19 +237,19 @@
            {
                return default;
            }
            return new HydroThreelinkMatchingViewModel(parterInfo, hydroInfo, calcuResult);
            return new HydroThreelinkMatchingViewModel(visualInfo, hydroInfo);
        }
        /// <summary>
        /// åˆ›å»ºä¸‰é€šè‡ªåŠ¨åŒ¹é…ViewModel
        /// </summary>
        public static HydroThreelinkMatchingViewModel Create(HydroThreelinkViewModel parterViewModel)
        public static HydroThreelinkMatchingViewModel Create(HydroThreelinkViewModel visualViewModel)
        {
            if (parterViewModel == null)
            if (visualViewModel == null)
            {
                return default;
            }
            return new HydroThreelinkMatchingViewModel(parterViewModel);
            return new HydroThreelinkMatchingViewModel(visualViewModel);
        }
        #endregion
@@ -272,9 +259,9 @@
        /// <summary>
        /// åˆ›å»ºå››é€šè‡ªåŠ¨åŒ¹é…ViewModel
        /// </summary>
        public static HydroFourlinkMatchingViewModel Create(HydroFourlinkInfo parterInfo, HydroModelInfo hydroInfo, HydroCalcuNodeResult calcuResult = null)
        public static HydroFourlinkMatchingViewModel Create(HydroFourlinkInfo visualInfo, HydroModelInfo hydroInfo)
        {
            if (parterInfo == null)
            if (visualInfo == null)
            {
                return default;
            }
@@ -282,19 +269,19 @@
            {
                return default;
            }
            return new HydroFourlinkMatchingViewModel(parterInfo, hydroInfo, calcuResult);
            return new HydroFourlinkMatchingViewModel(visualInfo, hydroInfo);
        }
        /// <summary>
        /// åˆ›å»ºå››é€šè‡ªåŠ¨åŒ¹é…ViewModel
        /// </summary>
        public static HydroFourlinkMatchingViewModel Create(HydroFourlinkViewModel parterViewModel)
        public static HydroFourlinkMatchingViewModel Create(HydroFourlinkViewModel visualViewModel)
        {
            if (parterViewModel == null)
            if (visualViewModel == null)
            {
                return default;
            }
            return new HydroFourlinkMatchingViewModel(parterViewModel);
            return new HydroFourlinkMatchingViewModel(visualViewModel);
        }
        #endregion
@@ -304,9 +291,9 @@
        /// <summary>
        /// åˆ›å»ºå–·å¤´è‡ªåŠ¨åŒ¹é…ViewModel
        /// </summary>
        public static HydroNozzleMatchingViewModel Create(HydroNozzleInfo parterInfo, HydroModelInfo hydroInfo, HydroCalcuNodeResult calcuResult = null)
        public static HydroNozzleMatchingViewModel Create(HydroNozzleInfo visualInfo, HydroModelInfo hydroInfo)
        {
            if (parterInfo == null)
            if (visualInfo == null)
            {
                return default;
            }
@@ -314,19 +301,19 @@
            {
                return default;
            }
            return new HydroNozzleMatchingViewModel(parterInfo, hydroInfo, calcuResult);
            return new HydroNozzleMatchingViewModel(visualInfo, hydroInfo);
        }
        /// <summary>
        /// åˆ›å»ºå–·å¤´è‡ªåŠ¨åŒ¹é…ViewModel
        /// </summary>
        public static HydroNozzleMatchingViewModel Create(HydroNozzleViewModel parterViewModel)
        public static HydroNozzleMatchingViewModel Create(HydroNozzleViewModel visualViewModel)
        {
            if (parterViewModel == null)
            if (visualViewModel == null)
            {
                return default;
            }
            return new HydroNozzleMatchingViewModel(parterViewModel);
            return new HydroNozzleMatchingViewModel(visualViewModel);
        }
        #endregion
@@ -336,9 +323,9 @@
        /// <summary>
        /// åˆ›å»ºæ¶ˆç«æ “自动匹配ViewModel
        /// </summary>
        public static HydroHydrantMatchingViewModel Create(HydroHydrantInfo parterInfo, HydroModelInfo hydroInfo, HydroCalcuNodeResult calcuResult = null)
        public static HydroHydrantMatchingViewModel Create(HydroHydrantInfo visualInfo, HydroModelInfo hydroInfo)
        {
            if (parterInfo == null)
            if (visualInfo == null)
            {
                return default;
            }
@@ -346,19 +333,19 @@
            {
                return default;
            }
            return new HydroHydrantMatchingViewModel(parterInfo, hydroInfo, calcuResult);
            return new HydroHydrantMatchingViewModel(visualInfo, hydroInfo);
        }
        /// <summary>
        /// åˆ›å»ºæ¶ˆç«æ “自动匹配ViewModel
        /// </summary>
        public static HydroHydrantMatchingViewModel Create(HydroHydrantViewModel parterViewModel)
        public static HydroHydrantMatchingViewModel Create(HydroHydrantViewModel visualViewModel)
        {
            if (parterViewModel == null)
            if (visualViewModel == null)
            {
                return default;
            }
            return new HydroHydrantMatchingViewModel(parterViewModel);
            return new HydroHydrantMatchingViewModel(visualViewModel);
        }
        #endregion
@@ -368,9 +355,9 @@
        /// <summary>
        /// åˆ›å»ºæ°´è¡¨è‡ªåŠ¨åŒ¹é…ViewModel
        /// </summary>
        public static HydroMeterMatchingViewModel Create(HydroMeterInfo parterInfo, HydroModelInfo hydroInfo, HydroCalcuNodeResult calcuResult = null)
        public static HydroMeterMatchingViewModel Create(HydroMeterInfo visualInfo, HydroModelInfo hydroInfo)
        {
            if (parterInfo == null)
            if (visualInfo == null)
            {
                return default;
            }
@@ -378,19 +365,19 @@
            {
                return default;
            }
            return new HydroMeterMatchingViewModel(parterInfo, hydroInfo, calcuResult);
            return new HydroMeterMatchingViewModel(visualInfo, hydroInfo);
        }
        /// <summary>
        /// åˆ›å»ºæ°´è¡¨è‡ªåŠ¨åŒ¹é…ViewModel
        /// </summary>
        public static HydroMeterMatchingViewModel Create(HydroMeterViewModel parterViewModel)
        public static HydroMeterMatchingViewModel Create(HydroMeterViewModel visualViewModel)
        {
            if (parterViewModel == null)
            if (visualViewModel == null)
            {
                return default;
            }
            return new HydroMeterMatchingViewModel(parterViewModel);
            return new HydroMeterMatchingViewModel(visualViewModel);
        }
        #endregion
@@ -400,9 +387,9 @@
        /// <summary>
        /// åˆ›å»ºæµé‡è®¡è‡ªåŠ¨åŒ¹é…ViewModel
        /// </summary>
        public static HydroFlowmeterMatchingViewModel Create(HydroFlowmeterInfo parterInfo, HydroModelInfo hydroInfo, HydroCalcuFlowmeterResult calcuResult = null)
        public static HydroFlowmeterMatchingViewModel Create(HydroFlowmeterInfo visualInfo, HydroModelInfo hydroInfo)
        {
            if (parterInfo == null)
            if (visualInfo == null)
            {
                return default;
            }
@@ -410,19 +397,19 @@
            {
                return default;
            }
            return new HydroFlowmeterMatchingViewModel(parterInfo, hydroInfo, calcuResult);
            return new HydroFlowmeterMatchingViewModel(visualInfo, hydroInfo);
        }
        /// <summary>
        /// åˆ›å»ºæµé‡è®¡è‡ªåŠ¨åŒ¹é…ViewModel
        /// </summary>
        public static HydroFlowmeterMatchingViewModel Create(HydroFlowmeterViewModel parterViewModel)
        public static HydroFlowmeterMatchingViewModel Create(HydroFlowmeterViewModel visualViewModel)
        {
            if (parterViewModel == null)
            if (visualViewModel == null)
            {
                return default;
            }
            return new HydroFlowmeterMatchingViewModel(parterViewModel);
            return new HydroFlowmeterMatchingViewModel(visualViewModel);
        }
        #endregion
@@ -432,9 +419,9 @@
        /// <summary>
        /// åˆ›å»ºåŽ‹åŠ›è¡¨è‡ªåŠ¨åŒ¹é…ViewModel
        /// </summary>
        public static HydroPressmeterMatchingViewModel Create(HydroPressmeterInfo parterInfo, HydroModelInfo hydroInfo, HydroCalcuPressmeterResult calcuResult = null)
        public static HydroPressmeterMatchingViewModel Create(HydroPressmeterInfo visualInfo, HydroModelInfo hydroInfo)
        {
            if (parterInfo == null)
            if (visualInfo == null)
            {
                return default;
            }
@@ -442,19 +429,19 @@
            {
                return default;
            }
            return new HydroPressmeterMatchingViewModel(parterInfo, hydroInfo, calcuResult);
            return new HydroPressmeterMatchingViewModel(visualInfo, hydroInfo);
        }
        /// <summary>
        /// åˆ›å»ºåŽ‹åŠ›è¡¨è‡ªåŠ¨åŒ¹é…ViewModel
        /// </summary>
        public static HydroPressmeterMatchingViewModel Create(HydroPressmeterViewModel parterViewModel)
        public static HydroPressmeterMatchingViewModel Create(HydroPressmeterViewModel visualViewModel)
        {
            if (parterViewModel == null)
            if (visualViewModel == null)
            {
                return default;
            }
            return new HydroPressmeterMatchingViewModel(parterViewModel);
            return new HydroPressmeterMatchingViewModel(visualViewModel);
        }
        #endregion
@@ -464,9 +451,9 @@
        /// <summary>
        /// åˆ›å»ºç®¡é“自动匹配ViewModel
        /// </summary>
        public static HydroPipeMatchingViewModel Create(HydroPipeInfo pipeInfo, HydroModelInfo hydroInfo, HydroCalcuLinkResult calcuResult = null)
        public static HydroPipeMatchingViewModel Create(HydroPipeInfo visualInfo, HydroModelInfo hydroInfo)
        {
            if (pipeInfo == null)
            if (visualInfo == null)
            {
                return default;
            }
@@ -474,19 +461,19 @@
            {
                return default;
            }
            return new HydroPipeMatchingViewModel(pipeInfo, hydroInfo, calcuResult);
            return new HydroPipeMatchingViewModel(visualInfo, hydroInfo);
        }
        /// <summary>
        /// åˆ›å»ºç®¡é“自动匹配ViewModel
        /// </summary>
        public static HydroPipeMatchingViewModel Create(HydroPipeViewModel pipeViewModel)
        public static HydroPipeMatchingViewModel Create(HydroPipeViewModel visualViewModel)
        {
            if (pipeViewModel == null)
            if (visualViewModel == null)
            {
                return default;
            }
            return new HydroPipeMatchingViewModel(pipeViewModel);
            return new HydroPipeMatchingViewModel(visualViewModel);
        }
        #endregion
@@ -496,9 +483,9 @@
        /// <summary>
        /// åˆ›å»ºè¿‡æ¸¡ä»¶è‡ªåŠ¨åŒ¹é…ViewModel
        /// </summary>
        public static HydroTranslationMatchingViewModel Create(HydroTranslationInfo parterInfo, HydroModelInfo hydroInfo, HydroCalcuLinkResult calcuResult = null)
        public static HydroTranslationMatchingViewModel Create(HydroTranslationInfo visualInfo, HydroModelInfo hydroInfo)
        {
            if (parterInfo == null)
            if (visualInfo == null)
            {
                return default;
            }
@@ -506,19 +493,19 @@
            {
                return default;
            }
            return new HydroTranslationMatchingViewModel(parterInfo, hydroInfo, calcuResult);
            return new HydroTranslationMatchingViewModel(visualInfo, hydroInfo);
        }
        /// <summary>
        /// åˆ›å»ºè¿‡æ¸¡ä»¶è‡ªåŠ¨åŒ¹é…ViewModel
        /// </summary>
        public static HydroTranslationMatchingViewModel Create(HydroTranslationViewModel parterViewModel)
        public static HydroTranslationMatchingViewModel Create(HydroTranslationViewModel visualViewModel)
        {
            if (parterViewModel == null)
            if (visualViewModel == null)
            {
                return default;
            }
            return new HydroTranslationMatchingViewModel(parterViewModel);
            return new HydroTranslationMatchingViewModel(visualViewModel);
        }
        #endregion
@@ -528,9 +515,9 @@
        /// <summary>
        /// åˆ›å»ºæ°´æ³µè‡ªåŠ¨åŒ¹é…ViewModel
        /// </summary>
        public static HydroPumpMatchingViewModel Create(HydroPumpInfo pumpInfo, HydroModelInfo hydroInfo, HydroCalcuPumpResult calcuResult = null)
        public static HydroPumpMatchingViewModel Create(HydroPumpInfo visualInfo, HydroModelInfo hydroInfo)
        {
            if (pumpInfo == null)
            if (visualInfo == null)
            {
                return default;
            }
@@ -538,19 +525,19 @@
            {
                return default;
            }
            return new HydroPumpMatchingViewModel(pumpInfo, hydroInfo, calcuResult);
            return new HydroPumpMatchingViewModel(visualInfo, hydroInfo);
        }
        /// <summary>
        /// åˆ›å»ºæ°´æ³µè‡ªåŠ¨åŒ¹é…ViewModel
        /// </summary>
        public static HydroPumpMatchingViewModel Create(HydroPumpViewModel pumpViewModel)
        public static HydroPumpMatchingViewModel Create(HydroPumpViewModel visualViewModel)
        {
            if (pumpViewModel == null)
            if (visualViewModel == null)
            {
                return default;
            }
            return new HydroPumpMatchingViewModel(pumpViewModel);
            return new HydroPumpMatchingViewModel(visualViewModel);
        }
        #endregion
@@ -560,9 +547,9 @@
        /// <summary>
        /// åˆ›å»ºé˜€é—¨è‡ªåŠ¨åŒ¹é…ViewModel
        /// </summary>
        public static HydroValveMatchingViewModel Create(HydroValveInfo valveInfo, HydroModelInfo hydroInfo, HydroCalcuLinkResult calcuResult = null)
        public static HydroValveMatchingViewModel Create(HydroValveInfo visualInfo, HydroModelInfo hydroInfo)
        {
            if (valveInfo == null)
            if (visualInfo == null)
            {
                return default;
            }
@@ -570,19 +557,19 @@
            {
                return default;
            }
            return new HydroValveMatchingViewModel(valveInfo, hydroInfo, calcuResult);
            return new HydroValveMatchingViewModel(visualInfo, hydroInfo);
        }
        /// <summary>
        /// åˆ›å»ºé˜€é—¨è‡ªåŠ¨åŒ¹é…ViewModel
        /// </summary>
        public static HydroValveMatchingViewModel Create(HydroValveViewModel valveViewModel)
        public static HydroValveMatchingViewModel Create(HydroValveViewModel visualViewModel)
        {
            if (valveViewModel == null)
            if (visualViewModel == null)
            {
                return default;
            }
            return new HydroValveMatchingViewModel(valveViewModel);
            return new HydroValveMatchingViewModel(visualViewModel);
        }
        #endregion
@@ -592,9 +579,9 @@
        /// <summary>
        /// åˆ›å»ºæ¢çƒ­å™¨è‡ªåŠ¨åŒ¹é…ViewModel
        /// </summary>
        public static HydroExchangerMatchingViewModel Create(HydroExchangerInfo parterInfo, HydroModelInfo hydroInfo, HydroCalcuLinkResult calcuResult = null)
        public static HydroExchangerMatchingViewModel Create(HydroExchangerInfo visualInfo, HydroModelInfo hydroInfo)
        {
            if (parterInfo == null)
            if (visualInfo == null)
            {
                return default;
            }
@@ -602,19 +589,19 @@
            {
                return default;
            }
            return new HydroExchangerMatchingViewModel(parterInfo, hydroInfo, calcuResult);
            return new HydroExchangerMatchingViewModel(visualInfo, hydroInfo);
        }
        /// <summary>
        /// åˆ›å»ºæ¢çƒ­å™¨è‡ªåŠ¨åŒ¹é…ViewModel
        /// </summary>
        public static HydroExchangerMatchingViewModel Create(HydroExchangerViewModel parterViewModel)
        public static HydroExchangerMatchingViewModel Create(HydroExchangerViewModel visualViewModel)
        {
            if (parterViewModel == null)
            if (visualViewModel == null)
            {
                return default;
            }
            return new HydroExchangerMatchingViewModel(parterViewModel);
            return new HydroExchangerMatchingViewModel(visualViewModel);
        }
        #endregion
@@ -624,9 +611,9 @@
        /// <summary>
        /// åˆ›å»ºåŽ‹ç¼©æœºè‡ªåŠ¨åŒ¹é…ViewModel
        /// </summary>
        public static HydroCompressorMatchingViewModel Create(HydroCompressorInfo parterInfo, HydroModelInfo hydroInfo, HydroCalcuLinkResult calcuResult = null)
        public static HydroCompressorMatchingViewModel Create(HydroCompressorInfo visualInfo, HydroModelInfo hydroInfo)
        {
            if (parterInfo == null)
            if (visualInfo == null)
            {
                return default;
            }
@@ -634,19 +621,19 @@
            {
                return default;
            }
            return new HydroCompressorMatchingViewModel(parterInfo, hydroInfo, calcuResult);
            return new HydroCompressorMatchingViewModel(visualInfo, hydroInfo);
        }
        /// <summary>
        /// åˆ›å»ºåŽ‹ç¼©æœºè‡ªåŠ¨åŒ¹é…ViewModel
        /// </summary>
        public static HydroCompressorMatchingViewModel Create(HydroCompressorViewModel parterViewModel)
        public static HydroCompressorMatchingViewModel Create(HydroCompressorViewModel visualViewModel)
        {
            if (parterViewModel == null)
            if (visualViewModel == null)
            {
                return default;
            }
            return new HydroCompressorMatchingViewModel(parterViewModel);
            return new HydroCompressorMatchingViewModel(visualViewModel);
        }
        #endregion
WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/01-tank/HydroTankMatchingViewModel.cs
@@ -8,8 +8,7 @@
        /// <summary>
        ///
        /// </summary>
        public HydroTankMatchingViewModel()
        { }
        public HydroTankMatchingViewModel() { }
        /// <summary>
        ///
@@ -33,16 +32,7 @@
        /// <summary>
        ///
        /// </summary>
        public HydroTankMatchingViewModel(Yw.Model.HydroTankInfo rhs, Yw.Model.HydroModelInfo hydroInfo, HydroCalcuNodeResult calcuResult) : this(rhs, hydroInfo)
        {
        }
        /// <summary>
        ///
        /// </summary>
        public HydroTankMatchingViewModel(HydroTankViewModel rhs) : this(rhs.Vmo, rhs.HydroInfo)
        {
        }
        public HydroTankMatchingViewModel(HydroTankViewModel rhs) : this(rhs.Vmo, rhs.HydroInfo) { }
        /// <summary>
        /// ID
WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/02-blunthead/HydroBluntheadMatchingViewModel.cs
@@ -29,18 +29,7 @@
        /// <summary>
        ///
        /// </summary>
        public HydroBluntheadMatchingViewModel(Yw.Model.HydroBluntheadInfo rhs, Yw.Model.HydroModelInfo hydroInfo, HydroCalcuNodeResult calcuResult) : this(rhs, hydroInfo)
        {
        }
        /// <summary>
        ///
        /// </summary>
        public HydroBluntheadMatchingViewModel(HydroBluntheadViewModel rhs) : this(rhs.Vmo, rhs.HydroInfo)
        {
        }
        public HydroBluntheadMatchingViewModel(HydroBluntheadViewModel rhs) : this(rhs.Vmo, rhs.HydroInfo) { }
        /// <summary>
        /// ID
WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/03-elbow/HydroElbowMatchingViewModel.cs
@@ -31,18 +31,7 @@
        /// <summary>
        ///
        /// </summary>
        public HydroElbowMatchingViewModel(Yw.Model.HydroElbowInfo rhs, Yw.Model.HydroModelInfo hydroInfo, HydroCalcuNodeResult calcuResult) : this(rhs, hydroInfo)
        {
        }
        /// <summary>
        ///
        /// </summary>
        public HydroElbowMatchingViewModel(HydroElbowViewModel rhs) : this(rhs.Vmo, rhs.HydroInfo)
        {
        }
        public HydroElbowMatchingViewModel(HydroElbowViewModel rhs) : this(rhs.Vmo, rhs.HydroInfo) { }
        /// <summary>
        /// ID
WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/04-threelink/HydroThreelinkMatchingViewModel.cs
@@ -31,18 +31,7 @@
        /// <summary>
        ///
        /// </summary>
        public HydroThreelinkMatchingViewModel(Yw.Model.HydroThreelinkInfo rhs, Yw.Model.HydroModelInfo hydroInfo, HydroCalcuNodeResult calcuResult) : this(rhs, hydroInfo)
        {
        }
        /// <summary>
        ///
        /// </summary>
        public HydroThreelinkMatchingViewModel(HydroThreelinkViewModel rhs) : this(rhs.Vmo, rhs.HydroInfo)
        {
        }
        public HydroThreelinkMatchingViewModel(HydroThreelinkViewModel rhs) : this(rhs.Vmo, rhs.HydroInfo) { }
        /// <summary>
        /// ID
WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/05-fourlink/HydroFourlinkMatchingViewModel.cs
@@ -29,18 +29,7 @@
        /// <summary>
        ///
        /// </summary>
        public HydroFourlinkMatchingViewModel(Yw.Model.HydroFourlinkInfo rhs, Yw.Model.HydroModelInfo hydroInfo, HydroCalcuNodeResult calcuResult) : this(rhs, hydroInfo)
        {
        }
        /// <summary>
        ///
        /// </summary>
        public HydroFourlinkMatchingViewModel(HydroFourlinkViewModel rhs) : this(rhs.Vmo, rhs.HydroInfo)
        {
        }
        public HydroFourlinkMatchingViewModel(HydroFourlinkViewModel rhs) : this(rhs.Vmo, rhs.HydroInfo) { }
        /// <summary>
        /// ID
WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/06-meter/HydroMeterMatchingViewModel.cs
@@ -27,18 +27,7 @@
        /// <summary>
        ///
        /// </summary>
        public HydroMeterMatchingViewModel(Yw.Model.HydroMeterInfo rhs, Yw.Model.HydroModelInfo hydroInfo, HydroCalcuNodeResult calcuResult) : this(rhs, hydroInfo)
        {
        }
        /// <summary>
        ///
        /// </summary>
        public HydroMeterMatchingViewModel(HydroMeterViewModel rhs) : this(rhs.Vmo, rhs.HydroInfo)
        {
        }
        public HydroMeterMatchingViewModel(HydroMeterViewModel rhs) : this(rhs.Vmo, rhs.HydroInfo) { }
        /// <summary>
        /// ID
WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/07-flowmeter/HydroFlowmeterMatchingViewModel.cs
@@ -27,18 +27,7 @@
        /// <summary>
        ///
        /// </summary>
        public HydroFlowmeterMatchingViewModel(Yw.Model.HydroFlowmeterInfo rhs, Yw.Model.HydroModelInfo hydroInfo, HydroCalcuFlowmeterResult calcuResult) : this(rhs, hydroInfo)
        {
        }
        /// <summary>
        ///
        /// </summary>
        public HydroFlowmeterMatchingViewModel(HydroFlowmeterViewModel rhs) : this(rhs.Vmo, rhs.HydroInfo)
        {
        }
        public HydroFlowmeterMatchingViewModel(HydroFlowmeterViewModel rhs) : this(rhs.Vmo, rhs.HydroInfo) { }
        /// <summary>
        /// ID
WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/08-pressmeter/HydroFlowmeterMatchingViewModel.cs
@@ -27,18 +27,7 @@
        /// <summary>
        ///
        /// </summary>
        public HydroPressmeterMatchingViewModel(Yw.Model.HydroPressmeterInfo rhs, Yw.Model.HydroModelInfo hydroInfo, HydroCalcuPressmeterResult calcuResult) : this(rhs, hydroInfo)
        {
        }
        /// <summary>
        ///
        /// </summary>
        public HydroPressmeterMatchingViewModel(HydroPressmeterViewModel rhs) : this(rhs.Vmo, rhs.HydroInfo)
        {
        }
        public HydroPressmeterMatchingViewModel(HydroPressmeterViewModel rhs) : this(rhs.Vmo, rhs.HydroInfo) { }
        /// <summary>
        /// ID
WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/09-nozzle/HydroNozzleMatchingViewModel.cs
@@ -30,18 +30,7 @@
        /// <summary>
        ///
        /// </summary>
        public HydroNozzleMatchingViewModel(Yw.Model.HydroNozzleInfo rhs, Yw.Model.HydroModelInfo hydroInfo, HydroCalcuNodeResult calcuResult) : this(rhs, hydroInfo)
        {
        }
        /// <summary>
        ///
        /// </summary>
        public HydroNozzleMatchingViewModel(HydroNozzleViewModel rhs) : this(rhs.Vmo, rhs.HydroInfo)
        {
        }
        public HydroNozzleMatchingViewModel(HydroNozzleViewModel rhs) : this(rhs.Vmo, rhs.HydroInfo) { }
        /// <summary>
        /// ID
WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/10-hydrant/HydroHydrantMatchingViewModel.cs
@@ -30,18 +30,7 @@
        /// <summary>
        ///
        /// </summary>
        public HydroHydrantMatchingViewModel(Yw.Model.HydroHydrantInfo rhs, Yw.Model.HydroModelInfo hydroInfo, HydroCalcuNodeResult calcuResult) : this(rhs, hydroInfo)
        {
        }
        /// <summary>
        ///
        /// </summary>
        public HydroHydrantMatchingViewModel(HydroHydrantViewModel rhs) : this(rhs.Vmo, rhs.HydroInfo)
        {
        }
        public HydroHydrantMatchingViewModel(HydroHydrantViewModel rhs) : this(rhs.Vmo, rhs.HydroInfo) { }
        /// <summary>
        /// ID
WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/11-pipe/HydroPipeMatchingViewModel.cs
@@ -31,18 +31,7 @@
        /// <summary>
        ///
        /// </summary>
        public HydroPipeMatchingViewModel(Yw.Model.HydroPipeInfo rhs, Yw.Model.HydroModelInfo hydroInfo, HydroCalcuLinkResult calcuResult) : this(rhs, hydroInfo)
        {
        }
        /// <summary>
        ///
        /// </summary>
        public HydroPipeMatchingViewModel(HydroPipeViewModel rhs) : this(rhs.Vmo, rhs.HydroInfo)
        {
        }
        public HydroPipeMatchingViewModel(HydroPipeViewModel rhs) : this(rhs.Vmo, rhs.HydroInfo) { }
        /// <summary>
        /// ID
WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/12-pump/HydroPumpMatchingViewModel.cs
@@ -33,20 +33,7 @@
        /// <summary>
        /// 
        /// </summary>
        public HydroPumpMatchingViewModel(Yw.Model.HydroPumpInfo rhs, Yw.Model.HydroModelInfo hydroInfo, HydroCalcuPumpResult calcuResult) : this(rhs, hydroInfo)
        {
            this.CalcuQ = calcuResult?.CalcuQ;
            this.CalcuH = calcuResult?.CalcuH;
        }
        /// <summary>
        ///
        /// </summary>
        public HydroPumpMatchingViewModel(HydroPumpViewModel rhs) : this(rhs.Vmo, rhs.HydroInfo)
        {
            this.CalcuQ = rhs.CalcuQ;
            this.CalcuH = rhs.CalcuH;
        }
        public HydroPumpMatchingViewModel(HydroPumpViewModel rhs) : this(rhs.Vmo, rhs.HydroInfo) { }
        /// <summary>
        /// ID
@@ -112,16 +99,6 @@
        /// è®¾å®šé¢‘率
        /// </summary>
        public double CurrentHz { get; set; }
        /// <summary>
        /// è®¡ç®—流量
        /// </summary>
        public double? CalcuQ { get; set; }
        /// <summary>
        /// è®¡ç®—扬程
        /// </summary>
        public double? CalcuH { get; set; }
        /// <summary>
        /// åŒ¹é…åž‹å·
WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/12-translation/HydroTranslationMatchingViewModel.cs
@@ -33,18 +33,7 @@
        /// <summary>
        ///
        /// </summary>
        public HydroTranslationMatchingViewModel(Yw.Model.HydroTranslationInfo rhs, Yw.Model.HydroModelInfo hydroInfo, HydroCalcuLinkResult calcuResult) : this(rhs, hydroInfo)
        {
        }
        /// <summary>
        ///
        /// </summary>
        public HydroTranslationMatchingViewModel(HydroTranslationViewModel rhs) : this(rhs.Vmo, rhs.HydroInfo)
        {
        }
        public HydroTranslationMatchingViewModel(HydroTranslationViewModel rhs) : this(rhs.Vmo, rhs.HydroInfo) { }
        /// <summary>
        /// ID
WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/14-valve/HydroValveMatchingViewModel.cs
@@ -37,14 +37,6 @@
        /// <summary>
        ///
        /// </summary>
        public HydroValveMatchingViewModel(Yw.Model.HydroValveInfo rhs, Yw.Model.HydroModelInfo hydroInfo, HydroCalcuLinkResult calcuResult) : this(rhs, hydroInfo)
        {
        }
        /// <summary>
        ///
        /// </summary>
        public HydroValveMatchingViewModel(HydroValveViewModel rhs) : this(rhs.Vmo, rhs.HydroInfo)
        {
WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/15-exchanger/HydroExchangerMatchingViewModel.cs
@@ -30,18 +30,7 @@
        /// <summary>
        ///
        /// </summary>
        public HydroExchangerMatchingViewModel(Yw.Model.HydroExchangerInfo rhs, Yw.Model.HydroModelInfo hydroInfo, HydroCalcuLinkResult calcuResult) : this(rhs, hydroInfo)
        {
        }
        /// <summary>
        ///
        /// </summary>
        public HydroExchangerMatchingViewModel(HydroExchangerViewModel rhs) : this(rhs.Vmo, rhs.HydroInfo)
        {
        }
        public HydroExchangerMatchingViewModel(HydroExchangerViewModel rhs) : this(rhs.Vmo, rhs.HydroInfo) { }
        /// <summary>
        /// ID
WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/16-compressor/HydroCompressorMatchingViewModel.cs
@@ -30,18 +30,7 @@
        /// <summary>
        ///
        /// </summary>
        public HydroCompressorMatchingViewModel(Yw.Model.HydroCompressorInfo rhs, Yw.Model.HydroModelInfo hydroInfo, HydroCalcuLinkResult calcuResult) : this(rhs, hydroInfo)
        {
        }
        /// <summary>
        ///
        /// </summary>
        public HydroCompressorMatchingViewModel(HydroCompressorViewModel rhs) : this(rhs.Vmo, rhs.HydroInfo)
        {
        }
        public HydroCompressorMatchingViewModel(HydroCompressorViewModel rhs) : this(rhs.Vmo, rhs.HydroInfo) { }
        /// <summary>
        /// ID
WinFrmUI/Yw.WinFrmUI.Hydro.Core/Yw.WinFrmUI.Hydro.Core.csproj
@@ -62,12 +62,6 @@
        <Compile Update="02-model\HydroModelMgrPage.cs">
            <SubType>UserControl</SubType>
        </Compile>
        <Compile Update="04-viewmodel\07-curve\01-view\HydroCurveViewDlg.cs">
            <SubType>Form</SubType>
        </Compile>
        <Compile Update="04-viewmodel\07-curve\02-set\SetHydroCurveDlg.cs">
            <SubType>Form</SubType>
        </Compile>
        <Compile Update="05-property\HydroVisualPropertyViewCtrl.cs">
            <SubType>UserControl</SubType>
        </Compile>
WinFrmUI/Yw.WinFrmUI.Hydro.Core/Yw.WinFrmUI.Hydro.Core.csproj.user
@@ -4,12 +4,6 @@
    <Compile Update="01-scene\AddHydroSceneDlg.cs">
      <SubType>Form</SubType>
    </Compile>
    <Compile Update="04-viewmodel\07-curve\01-view\HydroCurveViewCtrl.cs">
      <SubType>UserControl</SubType>
    </Compile>
    <Compile Update="04-viewmodel\07-curve\02-set\SetHydroCurveCtrl.cs">
      <SubType>UserControl</SubType>
    </Compile>
    <Compile Update="05-property\HydroVisualPropertyDescriptionCtrl.cs">
      <SubType>UserControl</SubType>
    </Compile>