From 4cb1f00f84d160f97afd0fb86cf600e1be667dd5 Mon Sep 17 00:00:00 2001
From: lixiaojun <1287241240@qq.com>
Date: 星期四, 17 十月 2024 11:22:15 +0800
Subject: [PATCH] 水力组件更新

---
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/05-converter/HydroPipeStatusConverter.cs                                        |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/02-emitter/02-nozzle/HydroNozzleListCtrl.cs                   |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-link/01-pipe/00-core/HydroPipeViewModel.cs                                     |   18 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/01-source/02-tank/01-waterbox/HydroWaterboxListCtrl.resx                  |    0 
 Service/HStation.Service.Revit.Core/02-parter/02-node/01-source/01-reservoir/RevitReservoir.cs                              |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-link/01-pipe/02-exchanger/HydroExchangerListCtrl.resx                          |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/01-coupling/01-blunthead/HydroBluntheadListCtrl.cs            |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-link/01-pipe/00-core/HydroPipeListCtrl.Designer.cs                             |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-link/01-pipe/01-translation/HydroTranslationViewModel.cs                       |    2 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-node/03-junction/04-other/HydroFlowmeterPropertyViewModel.cs                 |    2 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/03-link/01-pipe/01-translation/HydroTranslationPropertyViewModel.cs             |    2 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-link/03-valve/HydroValveListCtrl.cs                                            |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-node/03-junction/03-meter/HydroMeterPropertyViewModel.cs                     |    2 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-node/03-junction/01-coupling/03-threelink/HydroThreelinkPropertyViewModel.cs |   63 +++
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/05-converter/HydroValveTypeConverter.cs                                         |   12 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/06-curve/SetHydroCurveCtrl.cs                                                   |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/02-emitter/01-hydrant/HydroHydrantListCtrl.Designer.cs        |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/00-core/HydroJunctionListCtrl.Designer.cs                     |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/01-source/00-core/HydroSourceViewModel.cs                                 |    2 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/06-curve/SetHydroCurveDlg.cs                                                    |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/04-other/02-pressmeter/HydroPressmeterListCtrl.resx           |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/06-curve/SetHydroCurveCtrl.Designer.cs                                          |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/Yw.WinFrmUI.Hydro.Core.csproj.user                                                          |   12 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/01-coupling/02-elbow/HydroElbowViewModel.cs                   |   53 ++
 Service/HStation.Service.Revit.Core/02-parter/02-node/02-junction/02-emitter/00-core/RevitEmitter.cs                        |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-node/03-junction/01-coupling/01-blunthead/HydroBluntheadPropertyViewModel.cs |    4 
 Service/HStation.Service.Revit.Core/02-parter/02-node/01-source/02-tank/RevitWaterbox.cs                                    |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/01-coupling/03-threelink/HydroThreelinkListCtrl.cs            |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-node/03-junction/01-coupling/04-fourlink/HydroFourlinkPropertyViewModel.cs   |    4 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/06-curve/SetHydroCurveCtrl.resx                                                 |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/03-meter/HydroMeterViewModel.cs                               |    2 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/06-curve/HydroCurveViewCtrl.resx                                                |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-node/03-junction/00-core/HydroJunctionPropertyViewModel.cs                   |   19 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-node/01-source/02-tank/HydroWaterboxPropertyViewModel.cs                     |    2 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/06-curve/HydroCurveViewCtrl.Designer.cs                                         |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-link/03-valve/HydroValveViewModel.cs                                           |   18 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/02-bimface/XhsProjectSimulationBimfaceCtrl.cs                             |   11 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-link/02-pump/HydroPumpViewModel.cs                                             |   65 ++
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/05-converter/HydroValveStatusConverter.cs                                       |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/02-emitter/02-nozzle/HydroNozzleListCtrl.resx                 |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-node/01-source/01-reservoir/HydroReservoirPropertyViewModel.cs               |    4 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/01-source/02-tank/01-waterbox/HydroWaterboxListCtrl.cs                    |    0 
 Service/HStation.Service.Revit.Core/02-parter/02-node/02-junction/03-meter/RevitMeter.cs                                    |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-link/02-pump/HydroPumpListCtrl.Designer.cs                                     |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/06-curve/HydroCurveViewDlg.Designer.cs                                          |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/01-coupling/04-fourlink/HydroFourlinkListCtrl.Designer.cs     |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/01-visual/HydroVisualPropertyViewModel.cs                                       |   23 +
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/03-link/00-core/HydroLinkPropertyViewModel.cs                                   |    8 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/01-source/01-reservoir/HydroReservoirListCtrl.cs                          |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-link/01-pipe/01-translation/HydroTranslationListCtrl.Designer.cs               |    0 
 Service/HStation.Service.Revit.Core/02-parter/02-node/02-junction/01-coupling/03-threelink/RevitThreelink.cs                |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/01-source/02-tank/00-core/HydroTankListCtrl.resx                          |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/01-coupling/03-threelink/HydroThreelinkListCtrl.resx          |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/01-coupling/04-fourlink/HydroFourlinkListCtrl.resx            |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-link/01-pipe/02-exchanger/HydroExchangerViewModel.cs                           |    2 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-node/03-junction/02-emitter/01-hydrant/HydroHydrantPropertyViewModel.cs      |   26 +
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/01-source/01-reservoir/HydroReservoirListCtrl.resx                        |    0 
 Service/HStation.Service.Revit.Core/02-parter/02-node/02-junction/02-emitter/02-hydrant/RevitHydrant.cs                     |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/01-source/02-tank/00-core/HydroTankViewModel.cs                           |   30 +
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/03-meter/HydroMeterListCtrl.Designer.cs                       |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/00-core/HydroJunctionViewModel.cs                             |    8 
 Service/HStation.Service.Revit.Core/02-parter/02-node/02-junction/05-other/RevitPressmeter.cs                               |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/01-source/02-tank/00-core/HydroTankListCtrl.Designer.cs                   |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/05-converter/HydroPumpStatusConverter.cs                                        |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-node/03-junction/02-emitter/02-nozzle/HydroNozzlePropertyViewModel.cs        |   25 +
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/03-link/01-pipe/03-compressor/HydroCompressorPropertyViewModel.cs               |   24 +
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/01-coupling/02-elbow/HydroElbowListCtrl.cs                    |    0 
 Service/HStation.Service.Revit.Core/02-parter/02-node/02-junction/00-core/RevitJunction.cs                                  |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/01-coupling/01-blunthead/HydroBluntheadListCtrl.resx          |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/01-coupling/04-fourlink/HydroFourlinkViewModel.cs             |    4 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-link/01-pipe/02-exchanger/HydroExchangerListCtrl.cs                            |    0 
 Service/HStation.Service.Revit.Core/02-parter/02-node/01-source/02-tank/RevitTank.cs                                        |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/03-meter/HydroMeterListCtrl.cs                                |    0 
 Service/HStation.Service.Revit.Core/02-parter/02-node/02-junction/01-coupling/04-fourlink/RevitFourlink.cs                  |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/04-other/02-pressmeter/HydroPressmeterListCtrl.cs             |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-node/03-junction/01-coupling/02-elbow/HydroElbowPropertyViewModel.cs         |   63 +++
 Service/HStation.Service.Revit.Core/02-parter/02-node/02-junction/01-coupling/00-core/RevitCoupling.cs                      |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/01-coupling/03-threelink/HydroThreelinkListCtrl.Designer.cs   |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/03-link/03-valve/HydroValvePropertyViewModel.cs                                 |   35 +
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/00-core/HydroJunctionListCtrl.resx                            |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/01-source/01-reservoir/HydroReservoirListCtrl.Designer.cs                 |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/01-source/02-tank/00-core/HydroTankListCtrl.cs                            |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-link/01-pipe/02-exchanger/HydroExchangerListCtrl.Designer.cs                   |    0 
 Hydro/Yw.Hydro.Core/ParseHelper.cs                                                                                          |    4 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/02-emitter/01-hydrant/HydroHydrantViewModel.cs                |    2 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/03-meter/HydroMeterListCtrl.resx                              |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/02-emitter/01-hydrant/HydroHydrantListCtrl.cs                 |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-node/03-junction/01-coupling/00-core/HydroCouplingPropertyViewModel.cs       |   64 +++
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-node/01-source/02-tank/HydroTankPropertyViewModel.cs                         |   26 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/01-property/XhsProjectSimulationPropertyCtrl.cs                           |    2 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-link/02-pump/HydroPumpListCtrl.resx                                            |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-link/01-pipe/01-translation/HydroTranslationListCtrl.cs                        |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/03-link/01-pipe/00-core/HydroPipePropertyViewModel.cs                           |   25 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/01-source/01-reservoir/HydroReservoirViewModel.cs                         |    6 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/01-coupling/01-blunthead/HydroBluntheadListCtrl.Designer.cs   |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/03-link/02-pump/HydroPumpPropertyViewModel.cs                                   |  112 +++--
 Hydro/HStation.Hydro.Core/TransferHelper.cs                                                                                 |    4 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/01-source/02-tank/01-waterbox/HydroWaterboxListCtrl.Designer.cs           |    0 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.cs                             |    2 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/01-coupling/01-blunthead/HydroBluntheadViewModel.cs           |    2 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-node/01-source/00-core/HydroSourcePropertyViewModel.cs                       |    2 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/01-coupling/02-elbow/HydroElbowListCtrl.Designer.cs           |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/04-other/01-flowmeter/HydroFlowmeterListCtrl.resx             |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/02-emitter/00-core/HydroEmitterViewModel.cs                   |    6 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/01-source/02-tank/01-waterbox/HydroWaterboxViewModel.cs                   |    2 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/06-curve/HydroCurveViewCtrl.cs                                                  |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/02-emitter/02-nozzle/HydroNozzleListCtrl.Designer.cs          |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-node/03-junction/04-other/HydroPressmeterPropertyViewModel.cs                |    2 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/00-core/HydroParterViewModel.cs                                                   |   10 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/01-coupling/00-core/HydroCouplingViewModel.cs                 |   54 ++
 Service/HStation.Service.Revit.Core/02-parter/02-node/02-junction/01-coupling/02-elbow/RevitElbow.cs                        |    0 
 Service/HStation.Service.Revit.Core/02-parter/02-node/01-source/00-core/RevitSource.cs                                      |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-node/03-junction/02-emitter/00-core/HydroEmitterPropertyViewModel.cs         |    8 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/06-curve/HydroCurveViewDlg.resx                                                 |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/04-other/01-flowmeter/HydroFlowmeterListCtrl.cs               |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/02-emitter/01-hydrant/HydroHydrantListCtrl.resx               |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/03-link/01-pipe/02-exchanger/HydroExchangerPropertyViewModel.cs                 |    2 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-link/03-valve/HydroValveListCtrl.Designer.cs                                   |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/01-visual/HydroVisualViewModel.cs                                                 |   27 +
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-link/01-pipe/01-translation/HydroTranslationListCtrl.resx                      |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/06-curve/HydroCurveViewDlg.cs                                                   |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/04-other/01-flowmeter/HydroFlowmeterListCtrl.Designer.cs      |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/01-coupling/03-threelink/HydroThreelinkViewModel.cs           |   53 ++
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/02-emitter/02-nozzle/HydroNozzleViewModel.cs                  |    2 
 Service/HStation.Service.Revit.Core/02-parter/02-node/02-junction/01-coupling/01-blunthead/RevitBlunthead.cs                |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/04-other/02-pressmeter/HydroPressmeterListCtrl.Designer.cs    |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/00-core/HydroParterInfoUpdateExtensions.cs                                      |   20 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/06-curve/SetHydroCurveDlg.Designer.cs                                           |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/00-core/HydroJunctionListCtrl.cs                              |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/00-core/HydroNodeViewModel.cs                                             |   10 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-link/01-pipe/00-core/HydroPipeListCtrl.cs                                      |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/06-curve/HydroCurvePointViewModel.cs                                            |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/04-other/02-pressmeter/HydroPressmeterViewModel.cs            |    2 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-node/00-core/HydroNodePropertyViewModel.cs                                   |    9 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/01-coupling/02-elbow/HydroElbowListCtrl.resx                  |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/Yw.WinFrmUI.Hydro.Core.csproj                                                               |   34 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/04-other/01-flowmeter/HydroFlowmeterViewModel.cs              |    2 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-link/01-pipe/00-core/HydroPipeListCtrl.resx                                    |    0 
 /dev/null                                                                                                                   |   35 -
 Hydro/Yw.Hydro.Core/Yw.Hydro.Core.csproj                                                                                    |    2 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/06-curve/SetHydroCurveDlg.resx                                                  |    0 
 Service/HStation.Service.Revit.Core/02-parter/02-node/02-junction/02-emitter/01-nozzle/RevitNozzle.cs                       |    0 
 Service/HStation.Service.Revit.Core/02-parter/02-node/02-junction/05-other/RevitFlowmeter.cs                                |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-link/02-pump/HydroPumpListCtrl.cs                                              |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/01-coupling/04-fourlink/HydroFourlinkListCtrl.cs              |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-link/03-valve/HydroValveListCtrl.resx                                          |    0 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-link/00-core/HydroLinkViewModel.cs                                             |   11 
 147 files changed, 840 insertions(+), 247 deletions(-)

diff --git a/Hydro/HStation.Hydro.Core/TransferHelper.cs b/Hydro/HStation.Hydro.Core/TransferHelper.cs
index e956196..7c206a0 100644
--- a/Hydro/HStation.Hydro.Core/TransferHelper.cs
+++ b/Hydro/HStation.Hydro.Core/TransferHelper.cs
@@ -65,7 +65,7 @@
                     tank.InitLevel = revitTank.InitLevel;
                     tank.MinLevel = revitTank.MinLevel;
                     tank.MaxLevel = revitTank.MaxLevel;
-                    tank.Diameter = revitTank.DN;
+                    tank.DN = revitTank.DN;
                     tank.MinVol = revitTank.MinVol;
                     tank.VolCurve = revitTank.VolCurve;
                     tank.Position2d = new Yw.Model.Hydro.Position2d(revitTank.Position.X, revitTank.Position.Y);
@@ -97,7 +97,7 @@
                     waterbox.InitLevel = revitWaterbox.InitLevel;
                     waterbox.MinLevel = revitWaterbox.MinLevel;
                     waterbox.MaxLevel = revitWaterbox.MaxLevel;
-                    waterbox.Diameter = revitWaterbox.DN;
+                    waterbox.DN = revitWaterbox.DN;
                     waterbox.MinVol = revitWaterbox.MinVol;
                     waterbox.VolCurve = revitWaterbox.VolCurve;
                     waterbox.Position2d = new Yw.Model.Hydro.Position2d(revitWaterbox.Position.X, revitWaterbox.Position.Y);
diff --git a/Hydro/Yw.Hydro.Core/ParseHelper.cs b/Hydro/Yw.Hydro.Core/ParseHelper.cs
index 92b59c5..b6c2129 100644
--- a/Hydro/Yw.Hydro.Core/ParseHelper.cs
+++ b/Hydro/Yw.Hydro.Core/ParseHelper.cs
@@ -224,7 +224,7 @@
                     tankModel.MinLevel = tank.MinLevel;
                     tankModel.MinVol = tank.MinVol;
                     tankModel.VolCurve = tank.VolCurve;
-                    tankModel.Diameter = tank.Diameter;
+                    tankModel.Diameter = tank.DN;
                     netWork.Tanks.Add(tankModel);
                 }
             }
@@ -245,7 +245,7 @@
                     waterboxModel.MinLevel = waterbox.MinLevel;
                     waterboxModel.MinVol = waterbox.MinVol;
                     waterboxModel.VolCurve = waterbox.VolCurve;
-                    waterboxModel.Diameter = waterbox.Diameter;
+                    waterboxModel.Diameter = waterbox.DN;
                     waterboxModel.Overflow = waterbox.OverFlow;
                     netWork.Tanks.Add(waterboxModel);
                 }
diff --git a/Hydro/Yw.Hydro.Core/Yw.Hydro.Core.csproj b/Hydro/Yw.Hydro.Core/Yw.Hydro.Core.csproj
index 28ff47b..5eff85d 100644
--- a/Hydro/Yw.Hydro.Core/Yw.Hydro.Core.csproj
+++ b/Hydro/Yw.Hydro.Core/Yw.Hydro.Core.csproj
@@ -7,7 +7,7 @@
   </PropertyGroup>
 
   <ItemGroup>
-    <PackageReference Include="Yw.Service.Hydro.Core" Version="3.5.3" />
+    <PackageReference Include="Yw.Service.Hydro.Core" Version="3.5.8" />
   </ItemGroup>
 
   <ItemGroup>
diff --git a/Service/HStation.Service.Revit.Core/02-parter/02-node/01-junction/01-source/00-core/RevitSource.cs b/Service/HStation.Service.Revit.Core/02-parter/02-node/01-source/00-core/RevitSource.cs
similarity index 100%
rename from Service/HStation.Service.Revit.Core/02-parter/02-node/01-junction/01-source/00-core/RevitSource.cs
rename to Service/HStation.Service.Revit.Core/02-parter/02-node/01-source/00-core/RevitSource.cs
diff --git a/Service/HStation.Service.Revit.Core/02-parter/02-node/01-junction/01-source/01-reservoir/RevitReservoir.cs b/Service/HStation.Service.Revit.Core/02-parter/02-node/01-source/01-reservoir/RevitReservoir.cs
similarity index 100%
rename from Service/HStation.Service.Revit.Core/02-parter/02-node/01-junction/01-source/01-reservoir/RevitReservoir.cs
rename to Service/HStation.Service.Revit.Core/02-parter/02-node/01-source/01-reservoir/RevitReservoir.cs
diff --git a/Service/HStation.Service.Revit.Core/02-parter/02-node/01-junction/01-source/02-tank/RevitTank.cs b/Service/HStation.Service.Revit.Core/02-parter/02-node/01-source/02-tank/RevitTank.cs
similarity index 100%
rename from Service/HStation.Service.Revit.Core/02-parter/02-node/01-junction/01-source/02-tank/RevitTank.cs
rename to Service/HStation.Service.Revit.Core/02-parter/02-node/01-source/02-tank/RevitTank.cs
diff --git a/Service/HStation.Service.Revit.Core/02-parter/02-node/01-junction/01-source/02-tank/RevitWaterbox.cs b/Service/HStation.Service.Revit.Core/02-parter/02-node/01-source/02-tank/RevitWaterbox.cs
similarity index 100%
rename from Service/HStation.Service.Revit.Core/02-parter/02-node/01-junction/01-source/02-tank/RevitWaterbox.cs
rename to Service/HStation.Service.Revit.Core/02-parter/02-node/01-source/02-tank/RevitWaterbox.cs
diff --git a/Service/HStation.Service.Revit.Core/02-parter/02-node/01-junction/00-core/RevitJunction.cs b/Service/HStation.Service.Revit.Core/02-parter/02-node/02-junction/00-core/RevitJunction.cs
similarity index 100%
rename from Service/HStation.Service.Revit.Core/02-parter/02-node/01-junction/00-core/RevitJunction.cs
rename to Service/HStation.Service.Revit.Core/02-parter/02-node/02-junction/00-core/RevitJunction.cs
diff --git a/Service/HStation.Service.Revit.Core/02-parter/02-node/01-junction/02-coupling/00-core/RevitCoupling.cs b/Service/HStation.Service.Revit.Core/02-parter/02-node/02-junction/01-coupling/00-core/RevitCoupling.cs
similarity index 100%
rename from Service/HStation.Service.Revit.Core/02-parter/02-node/01-junction/02-coupling/00-core/RevitCoupling.cs
rename to Service/HStation.Service.Revit.Core/02-parter/02-node/02-junction/01-coupling/00-core/RevitCoupling.cs
diff --git a/Service/HStation.Service.Revit.Core/02-parter/02-node/01-junction/02-coupling/01-blunthead/RevitBlunthead.cs b/Service/HStation.Service.Revit.Core/02-parter/02-node/02-junction/01-coupling/01-blunthead/RevitBlunthead.cs
similarity index 100%
rename from Service/HStation.Service.Revit.Core/02-parter/02-node/01-junction/02-coupling/01-blunthead/RevitBlunthead.cs
rename to Service/HStation.Service.Revit.Core/02-parter/02-node/02-junction/01-coupling/01-blunthead/RevitBlunthead.cs
diff --git a/Service/HStation.Service.Revit.Core/02-parter/02-node/01-junction/02-coupling/02-elbow/RevitElbow.cs b/Service/HStation.Service.Revit.Core/02-parter/02-node/02-junction/01-coupling/02-elbow/RevitElbow.cs
similarity index 100%
rename from Service/HStation.Service.Revit.Core/02-parter/02-node/01-junction/02-coupling/02-elbow/RevitElbow.cs
rename to Service/HStation.Service.Revit.Core/02-parter/02-node/02-junction/01-coupling/02-elbow/RevitElbow.cs
diff --git a/Service/HStation.Service.Revit.Core/02-parter/02-node/01-junction/02-coupling/03-threelink/RevitThreelink.cs b/Service/HStation.Service.Revit.Core/02-parter/02-node/02-junction/01-coupling/03-threelink/RevitThreelink.cs
similarity index 100%
rename from Service/HStation.Service.Revit.Core/02-parter/02-node/01-junction/02-coupling/03-threelink/RevitThreelink.cs
rename to Service/HStation.Service.Revit.Core/02-parter/02-node/02-junction/01-coupling/03-threelink/RevitThreelink.cs
diff --git a/Service/HStation.Service.Revit.Core/02-parter/02-node/01-junction/02-coupling/04-fourlink/RevitFourlink.cs b/Service/HStation.Service.Revit.Core/02-parter/02-node/02-junction/01-coupling/04-fourlink/RevitFourlink.cs
similarity index 100%
rename from Service/HStation.Service.Revit.Core/02-parter/02-node/01-junction/02-coupling/04-fourlink/RevitFourlink.cs
rename to Service/HStation.Service.Revit.Core/02-parter/02-node/02-junction/01-coupling/04-fourlink/RevitFourlink.cs
diff --git a/Service/HStation.Service.Revit.Core/02-parter/02-node/01-junction/03-emitter/00-core/RevitEmitter.cs b/Service/HStation.Service.Revit.Core/02-parter/02-node/02-junction/02-emitter/00-core/RevitEmitter.cs
similarity index 100%
rename from Service/HStation.Service.Revit.Core/02-parter/02-node/01-junction/03-emitter/00-core/RevitEmitter.cs
rename to Service/HStation.Service.Revit.Core/02-parter/02-node/02-junction/02-emitter/00-core/RevitEmitter.cs
diff --git a/Service/HStation.Service.Revit.Core/02-parter/02-node/01-junction/03-emitter/01-nozzle/RevitNozzle.cs b/Service/HStation.Service.Revit.Core/02-parter/02-node/02-junction/02-emitter/01-nozzle/RevitNozzle.cs
similarity index 100%
rename from Service/HStation.Service.Revit.Core/02-parter/02-node/01-junction/03-emitter/01-nozzle/RevitNozzle.cs
rename to Service/HStation.Service.Revit.Core/02-parter/02-node/02-junction/02-emitter/01-nozzle/RevitNozzle.cs
diff --git a/Service/HStation.Service.Revit.Core/02-parter/02-node/01-junction/03-emitter/02-hydrant/RevitHydrant.cs b/Service/HStation.Service.Revit.Core/02-parter/02-node/02-junction/02-emitter/02-hydrant/RevitHydrant.cs
similarity index 100%
rename from Service/HStation.Service.Revit.Core/02-parter/02-node/01-junction/03-emitter/02-hydrant/RevitHydrant.cs
rename to Service/HStation.Service.Revit.Core/02-parter/02-node/02-junction/02-emitter/02-hydrant/RevitHydrant.cs
diff --git a/Service/HStation.Service.Revit.Core/02-parter/02-node/01-junction/04-meter/RevitMeter.cs b/Service/HStation.Service.Revit.Core/02-parter/02-node/02-junction/03-meter/RevitMeter.cs
similarity index 100%
rename from Service/HStation.Service.Revit.Core/02-parter/02-node/01-junction/04-meter/RevitMeter.cs
rename to Service/HStation.Service.Revit.Core/02-parter/02-node/02-junction/03-meter/RevitMeter.cs
diff --git a/Service/HStation.Service.Revit.Core/02-parter/02-node/01-junction/05-other/RevitFlowmeter.cs b/Service/HStation.Service.Revit.Core/02-parter/02-node/02-junction/05-other/RevitFlowmeter.cs
similarity index 100%
rename from Service/HStation.Service.Revit.Core/02-parter/02-node/01-junction/05-other/RevitFlowmeter.cs
rename to Service/HStation.Service.Revit.Core/02-parter/02-node/02-junction/05-other/RevitFlowmeter.cs
diff --git a/Service/HStation.Service.Revit.Core/02-parter/02-node/01-junction/05-other/RevitPressmeter.cs b/Service/HStation.Service.Revit.Core/02-parter/02-node/02-junction/05-other/RevitPressmeter.cs
similarity index 100%
rename from Service/HStation.Service.Revit.Core/02-parter/02-node/01-junction/05-other/RevitPressmeter.cs
rename to Service/HStation.Service.Revit.Core/02-parter/02-node/02-junction/05-other/RevitPressmeter.cs
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/01-property/XhsProjectSimulationPropertyCtrl.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/01-property/XhsProjectSimulationPropertyCtrl.cs
index 09b1f0f..e7ad1cc 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/01-property/XhsProjectSimulationPropertyCtrl.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/01-property/XhsProjectSimulationPropertyCtrl.cs
@@ -109,7 +109,7 @@
                         }
                         var pumpId = string.IsNullOrEmpty(pumpInfo.DbId) ? 0 : Convert.ToInt64(pumpInfo.DbId);
                         var curveId = string.IsNullOrEmpty(curveqh.DbId) ? 0 : Convert.ToInt64(curveqh.DbId);
-                        var speedRatio = pumpInfo.SpeedRatio ?? 1;
+                        var speedRatio = pumpInfo.SpeedRatio;
                         var dlg = new PumpPerform2dViewDlg();
                         dlg.SetBindingData(pumpId, curveId, speedRatio);
                         dlg.ShowDialog();
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/02-bimface/XhsProjectSimulationBimfaceCtrl.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/02-bimface/XhsProjectSimulationBimfaceCtrl.cs
index da447e3..ef5424b 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/02-bimface/XhsProjectSimulationBimfaceCtrl.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/02-bimface/XhsProjectSimulationBimfaceCtrl.cs
@@ -565,14 +565,7 @@
             {
                 if (x is Yw.Model.HydroPumpInfo pump)
                 {
-                    double? speed = pump.RatedN;
-                    if (speed.HasValue)
-                    {
-                        if (pump.SpeedRatio.HasValue)
-                        {
-                            speed = speed.Value * pump.SpeedRatio.Value;
-                        }
-                    }
+                    var hz = pump.RatedHz * pump.SpeedRatio;
                     var calcuPump = calcuResult.LinkList.Find(x => x.Id == pump.Code);
                     var calcuPumpStart = calcuResult.NodeList.Find(x => x.Id == pump.StartCode);
                     var calcuPumpEnd = calcuResult.NodeList.Find(x => x.Id == pump.EndCode);
@@ -581,7 +574,7 @@
                     pumpCustomLabel.Data = new List<CustomLabelItem>()
                     {
                         new CustomLabelItem(){ Name="鐘舵��",Value=HydroLinkStatusHelper.GetStatusName(pump.LinkStatus),Unit=string.Empty},
-                        new CustomLabelItem(){ Name="杞��",Value=speed?.ToString(),Unit="r/min"},
+                        new CustomLabelItem(){ Name="棰戠巼",Value=hz.ToString(),Unit=string.Empty},
                         new CustomLabelItem(){ Name="娴侀噺",Value=Math.Round(calcuPump.Flow,1).ToString(),Unit="m鲁/h"},
                         new CustomLabelItem(){ Name="杩涘彛鍘嬪姏",Value=Math.Round(calcuPumpStart.Head,4).ToString(),Unit="m"},
                         new CustomLabelItem(){ Name="鍑哄彛鍘嬪姏",Value=Math.Round(calcuPumpEnd.Head,4).ToString(),Unit="m"},
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.cs
index b8672da..445bc62 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.cs
@@ -624,7 +624,7 @@
                 }
 
                 var rated_speed = x.RatedN.Value;
-                var speed_ratio = x.SpeedRatio ?? 1;
+                var speed_ratio = x.SpeedRatio;
 
                 var qh_pt_list = qh.Select(x => new Yw.Geometry.Point2d(x.X, x.Y)).ToList();
                 var qe_pt_list = qe?.Select(x => new Yw.Geometry.Point2d(x.X, x.Y)).ToList();
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/00-core/HydroParterInfoUpdateExtensions.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/00-core/HydroParterInfoUpdateExtensions.cs
index fef2b91..abb2c14 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/00-core/HydroParterInfoUpdateExtensions.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/00-core/HydroParterInfoUpdateExtensions.cs
@@ -76,8 +76,8 @@
                     hydroTankInfo.UpdatePropStatus(nameof(hydroTankInfo.MinLevel), hydroTankPropertyViewModel, nameof(hydroTankPropertyViewModel.MinLevel));
                     hydroTankInfo.MaxLevel = hydroTankPropertyViewModel.MaxLevel;
                     hydroTankInfo.UpdatePropStatus(nameof(hydroTankInfo.MaxLevel), hydroTankPropertyViewModel, nameof(hydroTankPropertyViewModel.MaxLevel));
-                    hydroTankInfo.Diameter = hydroTankPropertyViewModel.Diameter;
-                    hydroTankInfo.UpdatePropStatus(nameof(hydroTankInfo.Diameter), hydroTankPropertyViewModel, nameof(hydroTankPropertyViewModel.Diameter));
+                    hydroTankInfo.DN = hydroTankPropertyViewModel.DN;
+                    hydroTankInfo.UpdatePropStatus(nameof(hydroTankInfo.DN), hydroTankPropertyViewModel, nameof(hydroTankPropertyViewModel.DN));
                     hydroTankInfo.MinVol = hydroTankPropertyViewModel.MinVol;
                     hydroTankInfo.UpdatePropStatus(nameof(hydroTankInfo.MinVol), hydroTankPropertyViewModel, nameof(hydroTankPropertyViewModel.MinVol));
                     hydroTankInfo.VolCurve = hydroTankPropertyViewModel.VolCurve;
@@ -133,16 +133,16 @@
                 }
             }
             //杩炴帴浠�
-            if (rhs is Yw.Model.HydroConnectInfo hydroConnectInfo)
+            if (rhs is Yw.Model.HydroCouplingInfo hydroConnectInfo)
             {
-                if (propertyViewModel is HydroConnectPropertyViewModel hydroConnectPropertyViewModel)
+                if (propertyViewModel is HydroCouplingPropertyViewModel hydroCouplingPropertyViewModel)
                 {
-                    hydroConnectInfo.Material = hydroConnectPropertyViewModel.Material;
-                    hydroConnectInfo.UpdatePropStatus(nameof(hydroConnectInfo.Material), hydroConnectPropertyViewModel, nameof(hydroConnectPropertyViewModel.Material));
-                    hydroConnectInfo.Caliber = hydroConnectPropertyViewModel.Caliber;
-                    hydroConnectInfo.UpdatePropStatus(nameof(hydroConnectInfo.Caliber), hydroConnectPropertyViewModel, nameof(hydroConnectPropertyViewModel.Caliber));
-                    hydroConnectInfo.MinorLoss = hydroConnectPropertyViewModel.MinorLoss;
-                    hydroConnectInfo.UpdatePropStatus(nameof(hydroConnectInfo.MinorLoss), hydroConnectPropertyViewModel, nameof(hydroConnectPropertyViewModel.MinorLoss));
+                    hydroConnectInfo.Material = hydroCouplingPropertyViewModel.Material;
+                    hydroConnectInfo.UpdatePropStatus(nameof(hydroConnectInfo.Material), hydroCouplingPropertyViewModel, nameof(hydroCouplingPropertyViewModel.Material));
+                    hydroConnectInfo.Caliber = hydroCouplingPropertyViewModel.Caliber;
+                    hydroConnectInfo.UpdatePropStatus(nameof(hydroConnectInfo.Caliber), hydroCouplingPropertyViewModel, nameof(hydroCouplingPropertyViewModel.Caliber));
+                    hydroConnectInfo.MinorLoss = hydroCouplingPropertyViewModel.MinorLoss;
+                    hydroConnectInfo.UpdatePropStatus(nameof(hydroConnectInfo.MinorLoss), hydroCouplingPropertyViewModel, nameof(hydroCouplingPropertyViewModel.MinorLoss));
                 }
             }
             //闂峰ご
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/01-node/03-junction/HydroConnectPropertyViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/01-node/03-junction/HydroConnectPropertyViewModel.cs
deleted file mode 100644
index 013557f..0000000
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/01-node/03-junction/HydroConnectPropertyViewModel.cs
+++ /dev/null
@@ -1,79 +0,0 @@
-锘縰sing Yw.Model;
-
-namespace Yw.WinFrmUI
-{
-    /// <summary>
-    /// 杩炴帴浠跺睘鎬ц鍥�
-    /// </summary>
-    public class HydroConnectPropertyViewModel : HydroJunctionPropertyViewModel
-    {
-        /// <summary>
-        /// 
-        /// </summary>
-        public HydroConnectPropertyViewModel() { }
-
-        /// <summary>
-        /// 
-        /// </summary>
-        public HydroConnectPropertyViewModel(Yw.Model.HydroConnectInfo rhs) : base(rhs)
-        {
-            this.Material = rhs.Material;
-            this.UpdatePropStatus(nameof(this.Material), rhs, nameof(rhs.Material));
-            this.Caliber = rhs.Caliber;
-            this.UpdatePropStatus(nameof(this.Caliber), rhs, nameof(rhs.Caliber));
-            this.MinorLoss = rhs.MinorLoss;
-            this.UpdatePropStatus(nameof(this.MinorLoss), rhs, nameof(rhs.MinorLoss));
-        }
-
-
-        /// <summary>
-        /// 鏉愭枡
-        /// </summary>
-        [Category("鏁版嵁")]
-        [DisplayName("鏉愭枡")]
-        [PropertyOrder(31)]
-        [Browsable(true)]
-        public string Material { get; set; }
-
-        /// <summary>
-        /// 鍙e緞
-        /// </summary>
-        [Category("鏁版嵁")]
-        [DisplayName("鍙e緞")]
-        [PropertyOrder(32)]
-        [Browsable(true)]
-        [DisplayUnit("mm")]
-        public double? Caliber { get; set; }
-
-        /// <summary>
-        /// 灞�闃荤郴鏁�
-        /// </summary>
-        [Category("鏁版嵁")]
-        [DisplayName("灞�闃荤郴鏁�")]
-        [PropertyOrder(33)]
-        [Browsable(true)]
-        public double? MinorLoss { get; set; }
-
-        /// <summary>
-        /// 鏇存柊灞炴��
-        /// </summary>
-        /// <param name="rhs"></param>
-        /// <param name="allParterList"></param>
-        public override void UpdateProperty(HydroParterInfo rhs, List<HydroParterInfo> allParterList)
-        {
-            base.UpdateProperty(rhs, allParterList);
-            if (rhs is Yw.Model.HydroConnectInfo hydroConnectInfo)
-            {
-                this.Material = hydroConnectInfo.Material;
-                this.UpdatePropStatus(nameof(this.Material), hydroConnectInfo, nameof(hydroConnectInfo.Material));
-                this.Caliber = hydroConnectInfo.Caliber;
-                this.UpdatePropStatus(nameof(this.Caliber), hydroConnectInfo, nameof(hydroConnectInfo.Caliber));
-                this.MinorLoss = hydroConnectInfo.MinorLoss;
-                this.UpdatePropStatus(nameof(this.MinorLoss), hydroConnectInfo, nameof(hydroConnectInfo.MinorLoss));
-            }
-        }
-
-
-
-    }
-}
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/01-node/03-junction/HydroElbowPropertyViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/01-node/03-junction/HydroElbowPropertyViewModel.cs
deleted file mode 100644
index 1396ffb..0000000
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/01-node/03-junction/HydroElbowPropertyViewModel.cs
+++ /dev/null
@@ -1,24 +0,0 @@
-锘縩amespace Yw.WinFrmUI
-{
-    /// <summary>
-    /// 寮ご灞炴�ц鍥�
-    /// </summary>
-    public class HydroElbowPropertyViewModel : HydroConnectPropertyViewModel
-    {
-        /// <summary>
-        /// 
-        /// </summary>
-        public HydroElbowPropertyViewModel() { }
-
-        /// <summary>
-        /// 
-        /// </summary>
-        public HydroElbowPropertyViewModel(Yw.Model.HydroElbowInfo rhs) : base(rhs)
-        {
-
-        }
-
-
-
-    }
-}
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/01-node/03-junction/HydroHydrantPropertyViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/01-node/03-junction/HydroHydrantPropertyViewModel.cs
deleted file mode 100644
index 635cc8f..0000000
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/01-node/03-junction/HydroHydrantPropertyViewModel.cs
+++ /dev/null
@@ -1,33 +0,0 @@
-锘縩amespace Yw.WinFrmUI
-{
-    /// <summary>
-    /// 娑堢伀鏍撳睘鎬ц鍥�
-    /// </summary>
-    public class HydroHydrantPropertyViewModel : HydroEmitterPropertyViewModel
-    {
-        /// <summary>
-        /// 
-        /// </summary>
-        public HydroHydrantPropertyViewModel() { }
-
-        /// <summary>
-        /// 
-        /// </summary>
-        public HydroHydrantPropertyViewModel(Yw.Model.HydroHydrantInfo rhs) : base(rhs)
-        {
-
-        }
-
-        /// <summary>
-        /// 娴侀噺绯绘暟
-        /// </summary>
-        [Category("鏁版嵁")]
-        [DisplayName("娴侀噺绯绘暟")]
-        [PropertyOrder(12)]
-        [Browsable(true)]
-        public override double Coefficient { get; set; }
-
-
-
-    }
-}
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/01-node/03-junction/HydroNozzlePropertyViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/01-node/03-junction/HydroNozzlePropertyViewModel.cs
deleted file mode 100644
index c4ad713..0000000
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/01-node/03-junction/HydroNozzlePropertyViewModel.cs
+++ /dev/null
@@ -1,32 +0,0 @@
-锘縩amespace Yw.WinFrmUI
-{
-    /// <summary>
-    /// 鍠峰槾灞炴�ц鍥�
-    /// </summary>
-    public class HydroNozzlePropertyViewModel : HydroEmitterPropertyViewModel
-    {
-        /// <summary>
-        /// 
-        /// </summary>
-        public HydroNozzlePropertyViewModel() { }
-
-        /// <summary>
-        /// 
-        /// </summary>
-        public HydroNozzlePropertyViewModel(Yw.Model.HydroNozzleInfo rhs) : base(rhs)
-        {
-
-        }
-
-        /// <summary>
-        /// 鍠峰皠绯绘暟
-        /// </summary>
-        [Category("鏁版嵁")]
-        [DisplayName("鍠峰皠绯绘暟")]
-        [PropertyOrder(12)]
-        [Browsable(true)]
-        public override double Coefficient { get; set; }
-
-
-    }
-}
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/01-node/03-junction/HydroThreelinkPropertyViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/01-node/03-junction/HydroThreelinkPropertyViewModel.cs
deleted file mode 100644
index 8d7927d..0000000
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/01-node/03-junction/HydroThreelinkPropertyViewModel.cs
+++ /dev/null
@@ -1,23 +0,0 @@
-锘縩amespace Yw.WinFrmUI
-{
-    /// <summary>
-    /// 涓夐�氬睘鎬ц鍥�
-    /// </summary>
-    public class HydroThreelinkPropertyViewModel : HydroConnectPropertyViewModel
-    {
-        /// <summary>
-        /// 
-        /// </summary>
-        public HydroThreelinkPropertyViewModel() { }
-
-        /// <summary>
-        /// 
-        /// </summary>
-        public HydroThreelinkPropertyViewModel(Yw.Model.HydroThreelinkInfo rhs) : base(rhs)
-        {
-
-        }
-
-
-    }
-}
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/01-visual/HydroVisualPropertyViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/01-visual/HydroVisualPropertyViewModel.cs
new file mode 100644
index 0000000..0aa7d1c
--- /dev/null
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/01-visual/HydroVisualPropertyViewModel.cs
@@ -0,0 +1,23 @@
+锘縩amespace Yw.WinFrmUI
+{
+    /// <summary>
+    /// 姘村姏鍙缁勪欢
+    /// </summary>
+    public class HydroVisualPropertyViewModel : HydroParterPropertyViewModel
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        public HydroVisualPropertyViewModel() : base() { }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public HydroVisualPropertyViewModel(Yw.Model.HydroVisualInfo rhs) : base(rhs)
+        {
+
+        }
+
+
+    }
+}
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/01-node/00-core/HydroNodePropertyViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-node/00-core/HydroNodePropertyViewModel.cs
similarity index 87%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/01-node/00-core/HydroNodePropertyViewModel.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-node/00-core/HydroNodePropertyViewModel.cs
index 57a0f03..883a6e1 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/01-node/00-core/HydroNodePropertyViewModel.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-node/00-core/HydroNodePropertyViewModel.cs
@@ -36,6 +36,7 @@
         [Category("璁$畻缁撴灉")]
         [DisplayName("鑷敱鍘嬪姏")]
         [PropertyOrder(10001)]
+        [DisplayUnit("m")]
         [Browsable(true)]
         public double? CalcuPress { get; set; }
 
@@ -45,6 +46,7 @@
         [Category("璁$畻缁撴灉")]
         [DisplayName("缁濆鍘嬪姏")]
         [PropertyOrder(10002)]
+        [DisplayUnit("m")]
         [Browsable(true)]
         public double? CalcuHead { get; set; }
 
@@ -54,6 +56,7 @@
         [Category("璁$畻缁撴灉")]
         [DisplayName("闇�姘撮噺")]
         [PropertyOrder(10003)]
+        [DisplayUnit("m鲁/h")]
         [Browsable(true)]
         public double? CalcuDemand { get; set; }
 
@@ -81,9 +84,9 @@
             base.UpdateCalcuProperty(rhs);
             if (rhs is IHydroCalcuNodeResult calcuNodeProperty)
             {
-                this.CalcuPress = calcuNodeProperty.CalcuPress;
-                this.CalcuHead = calcuNodeProperty.CalcuHead;
-                this.CalcuDemand = calcuNodeProperty.CalcuDemand;
+                this.CalcuPress = calcuNodeProperty.CalcuPress ?? Math.Round(calcuNodeProperty.CalcuPress.Value, 2);
+                this.CalcuHead = calcuNodeProperty.CalcuHead ?? Math.Round(calcuNodeProperty.CalcuHead.Value, 2);
+                this.CalcuDemand = calcuNodeProperty.CalcuDemand ?? Math.Round(calcuNodeProperty.CalcuDemand.Value, 1);
             }
         }
 
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/01-node/00-core/HydroSourcePropertyViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-node/01-source/00-core/HydroSourcePropertyViewModel.cs
similarity index 87%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/01-node/00-core/HydroSourcePropertyViewModel.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-node/01-source/00-core/HydroSourcePropertyViewModel.cs
index 54ff107..4e6bcf8 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/01-node/00-core/HydroSourcePropertyViewModel.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-node/01-source/00-core/HydroSourcePropertyViewModel.cs
@@ -8,7 +8,7 @@
         /// <summary>
         /// 
         /// </summary>
-        public HydroSourcePropertyViewModel() { }
+        public HydroSourcePropertyViewModel() : base() { }
 
         /// <summary>
         /// 
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/01-node/01-reservoir/HydroReservoirPropertyViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-node/01-source/01-reservoir/HydroReservoirPropertyViewModel.cs
similarity index 95%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/01-node/01-reservoir/HydroReservoirPropertyViewModel.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-node/01-source/01-reservoir/HydroReservoirPropertyViewModel.cs
index 3a58467..47a57c1 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/01-node/01-reservoir/HydroReservoirPropertyViewModel.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-node/01-source/01-reservoir/HydroReservoirPropertyViewModel.cs
@@ -10,7 +10,7 @@
         /// <summary>
         /// 
         /// </summary>
-        public HydroReservoirPropertyViewModel() { }
+        public HydroReservoirPropertyViewModel() : base() { }
 
         /// <summary>
         /// 
@@ -31,6 +31,7 @@
         [Category("鏁版嵁")]
         [DisplayName("姹犲簳鏍囬珮")]
         [PropertyOrder(101)]
+        [DisplayUnit("m")]
         [Browsable(true)]
         public double? PoolElev { get; set; }
 
@@ -40,6 +41,7 @@
         [Category("鏁版嵁")]
         [DisplayName("鎬绘按澶�")]
         [PropertyOrder(102)]
+        [DisplayUnit("m")]
         [Browsable(true)]
         public double Head { get; set; }
 
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/01-node/02-tank/HydroTankPropertyViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-node/01-source/02-tank/HydroTankPropertyViewModel.cs
similarity index 89%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/01-node/02-tank/HydroTankPropertyViewModel.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-node/01-source/02-tank/HydroTankPropertyViewModel.cs
index 22ed0d2..b39bad2 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/01-node/02-tank/HydroTankPropertyViewModel.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-node/01-source/02-tank/HydroTankPropertyViewModel.cs
@@ -1,5 +1,4 @@
-锘縰sing Flurl.Util;
-using Yw.Model;
+锘縰sing Yw.Model;
 
 namespace Yw.WinFrmUI
 {
@@ -11,7 +10,7 @@
         /// <summary>
         /// 
         /// </summary>
-        public HydroTankPropertyViewModel() { }
+        public HydroTankPropertyViewModel() : base() { }
 
         /// <summary>
         /// 
@@ -26,8 +25,8 @@
             this.UpdatePropStatus(nameof(this.MinLevel), rhs, nameof(rhs.MinLevel));
             this.MaxLevel = rhs.MaxLevel;
             this.UpdatePropStatus(nameof(this.MaxLevel), rhs, nameof(rhs.MaxLevel));
-            this.Diameter = rhs.Diameter;
-            this.UpdatePropStatus(nameof(this.Diameter), rhs, nameof(rhs.Diameter));
+            this.DN = rhs.DN;
+            this.UpdatePropStatus(nameof(this.DN), rhs, nameof(rhs.DN));
             this.MinVol = rhs.MinVol;
             this.UpdatePropStatus(nameof(this.MinVol), rhs, nameof(rhs.MinVol));
             this.VolCurve = rhs.VolCurve;
@@ -42,6 +41,7 @@
         [Category("鏁版嵁")]
         [DisplayName("姹犲簳鏍囬珮")]
         [PropertyOrder(101)]
+        [DisplayUnit("m")]
         [Browsable(true)]
         public double PoolElev { get; set; }
 
@@ -51,6 +51,7 @@
         [Category("鏁版嵁")]
         [DisplayName("鍒濆姘翠綅")]
         [PropertyOrder(102)]
+        [DisplayUnit("m")]
         [Browsable(true)]
         public double InitLevel { get; set; }
 
@@ -60,6 +61,7 @@
         [Category("鏁版嵁")]
         [DisplayName("鏈�浣庢按浣�")]
         [PropertyOrder(103)]
+        [DisplayUnit("m")]
         [Browsable(true)]
         public double MinLevel { get; set; }
 
@@ -69,18 +71,19 @@
         [Category("鏁版嵁")]
         [DisplayName("鏈�楂樻按浣�")]
         [PropertyOrder(104)]
+        [DisplayUnit("m")]
         [Browsable(true)]
         public double MaxLevel { get; set; }
 
         /// <summary>
-        /// 鐩村緞
+        /// 鍏О鐩村緞
         /// </summary>
         [Category("鏁版嵁")]
-        [DisplayName("鐩村緞")]
+        [DisplayName("鍏О鐩村緞")]
         [PropertyOrder(105)]
-        [Browsable(true)]
         [DisplayUnit("m")]
-        public double Diameter { get; set; }
+        [Browsable(true)]
+        public double DN { get; set; }
 
         /// <summary>
         /// 鏈�灏忓绉�
@@ -88,6 +91,7 @@
         [Category("鏁版嵁")]
         [DisplayName("鏈�灏忓绉�")]
         [PropertyOrder(106)]
+        [DisplayUnit("m鲁")]
         [Browsable(true)]
         public double MinVol { get; set; }
 
@@ -127,8 +131,8 @@
                 this.UpdatePropStatus(nameof(this.MinLevel), hydroTankInfo, nameof(hydroTankInfo.MinLevel));
                 this.MaxLevel = hydroTankInfo.MaxLevel;
                 this.UpdatePropStatus(nameof(this.MaxLevel), hydroTankInfo, nameof(hydroTankInfo.MaxLevel));
-                this.Diameter = hydroTankInfo.Diameter;
-                this.UpdatePropStatus(nameof(this.Diameter), hydroTankInfo, nameof(hydroTankInfo.Diameter));
+                this.DN = hydroTankInfo.DN;
+                this.UpdatePropStatus(nameof(this.DN), hydroTankInfo, nameof(hydroTankInfo.DN));
                 this.MinVol = hydroTankInfo.MinVol;
                 this.UpdatePropStatus(nameof(this.MinVol), hydroTankInfo, nameof(hydroTankInfo.MinVol));
                 this.VolCurve = hydroTankInfo.VolCurve;
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/01-node/02-tank/HydroWaterboxPropertyViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-node/01-source/02-tank/HydroWaterboxPropertyViewModel.cs
similarity index 86%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/01-node/02-tank/HydroWaterboxPropertyViewModel.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-node/01-source/02-tank/HydroWaterboxPropertyViewModel.cs
index 799648c..a080e83 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/01-node/02-tank/HydroWaterboxPropertyViewModel.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-node/01-source/02-tank/HydroWaterboxPropertyViewModel.cs
@@ -8,7 +8,7 @@
         /// <summary>
         /// 
         /// </summary>
-        public HydroWaterboxPropertyViewModel() { }
+        public HydroWaterboxPropertyViewModel() : base() { }
 
         /// <summary>
         /// 
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/01-node/03-junction/HydroJunctionPropertyViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-node/03-junction/00-core/HydroJunctionPropertyViewModel.cs
similarity index 78%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/01-node/03-junction/HydroJunctionPropertyViewModel.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-node/03-junction/00-core/HydroJunctionPropertyViewModel.cs
index 1314f3e..0f10dec 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/01-node/03-junction/HydroJunctionPropertyViewModel.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-node/03-junction/00-core/HydroJunctionPropertyViewModel.cs
@@ -10,7 +10,7 @@
         /// <summary>
         /// 
         /// </summary>
-        public HydroJunctionPropertyViewModel() { }
+        public HydroJunctionPropertyViewModel() : base() { }
 
         /// <summary>
         /// 
@@ -19,6 +19,8 @@
         {
             this.Elev = rhs.Elev;
             this.UpdatePropStatus(nameof(this.Elev), rhs, nameof(rhs.Elev));
+            this.MinorLoss = rhs.MinorLoss;
+            this.UpdatePropStatus(nameof(this.MinorLoss), rhs, nameof(rhs.MinorLoss));
             this.Demand = rhs.Demand;
             this.UpdatePropStatus(nameof(this.Demand), rhs, nameof(rhs.Demand));
             this.DemandPattern = rhs.DemandPattern;
@@ -32,8 +34,18 @@
         [Category("鏁版嵁")]
         [DisplayName("鏍囬珮")]
         [PropertyOrder(101)]
+        [DisplayUnit("m")]
         [Browsable(true)]
         public double Elev { get; set; }
+
+        /// <summary>
+        /// 鎹熷け绯绘暟
+        /// </summary>
+        [Category("鏁版嵁")]
+        [DisplayName("鎹熷け绯绘暟")]
+        [PropertyOrder(33)]
+        [Browsable(true)]
+        public double? MinorLoss { get; set; }
 
         /// <summary>
         /// 闇�姘撮噺
@@ -41,6 +53,7 @@
         [Category("鏁版嵁")]
         [DisplayName("闇�姘撮噺")]
         [PropertyOrder(102)]
+        [DisplayUnit("m鲁/h")]
         [Browsable(true)]
         public double? Demand { get; set; }
 
@@ -57,8 +70,6 @@
         /// <summary>
         /// 鏇存柊灞炴��
         /// </summary>
-        /// <param name="rhs"></param>
-        /// <param name="allParterList"></param>
         public override void UpdateProperty(HydroParterInfo rhs, List<HydroParterInfo> allParterList)
         {
             base.UpdateProperty(rhs, allParterList);
@@ -66,6 +77,8 @@
             {
                 this.Elev = hydroJunctionInfo.Elev;
                 this.UpdatePropStatus(nameof(this.Elev), hydroJunctionInfo, nameof(hydroJunctionInfo.Elev));
+                this.MinorLoss = hydroJunctionInfo.MinorLoss;
+                this.UpdatePropStatus(nameof(this.MinorLoss), rhs, nameof(hydroJunctionInfo.MinorLoss));
                 this.Demand = hydroJunctionInfo.Demand;
                 this.UpdatePropStatus(nameof(this.Demand), hydroJunctionInfo, nameof(hydroJunctionInfo.Demand));
                 this.DemandPattern = hydroJunctionInfo.DemandPattern;
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-node/03-junction/01-coupling/00-core/HydroCouplingPropertyViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-node/03-junction/01-coupling/00-core/HydroCouplingPropertyViewModel.cs
new file mode 100644
index 0000000..868bb8b
--- /dev/null
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-node/03-junction/01-coupling/00-core/HydroCouplingPropertyViewModel.cs
@@ -0,0 +1,64 @@
+锘縰sing Yw.Model;
+
+namespace Yw.WinFrmUI
+{
+    /// <summary>
+    /// 杩炴帴浠跺睘鎬ц鍥�
+    /// </summary>
+    public class HydroCouplingPropertyViewModel : HydroJunctionPropertyViewModel
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        public HydroCouplingPropertyViewModel() : base() { }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public HydroCouplingPropertyViewModel(Yw.Model.HydroCouplingInfo rhs) : base(rhs)
+        {
+            this.Material = rhs.Material;
+            this.UpdatePropStatus(nameof(this.Material), rhs, nameof(rhs.Material));
+            this.Caliber = rhs.Caliber;
+            this.UpdatePropStatus(nameof(this.Caliber), rhs, nameof(rhs.Caliber));
+        }
+
+
+        /// <summary>
+        /// 鏉愭枡
+        /// </summary>
+        [Category("鏁版嵁")]
+        [DisplayName("鏉愭枡")]
+        [PropertyOrder(31)]
+        [Browsable(true)]
+        public string Material { get; set; }
+
+        /// <summary>
+        /// 鍙e緞
+        /// </summary>
+        [Category("鏁版嵁")]
+        [DisplayName("鍙e緞")]
+        [PropertyOrder(32)]
+        [DisplayUnit("mm")]
+        [Browsable(true)]
+        public double? Caliber { get; set; }
+
+        /// <summary>
+        /// 鏇存柊灞炴��
+        /// </summary>
+        public override void UpdateProperty(HydroParterInfo rhs, List<HydroParterInfo> allParterList)
+        {
+            base.UpdateProperty(rhs, allParterList);
+            if (rhs is Yw.Model.HydroCouplingInfo hydroCouplingInfo)
+            {
+                this.Material = hydroCouplingInfo.Material;
+                this.UpdatePropStatus(nameof(this.Material), hydroCouplingInfo, nameof(hydroCouplingInfo.Material));
+                this.Caliber = hydroCouplingInfo.Caliber;
+                this.UpdatePropStatus(nameof(this.Caliber), hydroCouplingInfo, nameof(hydroCouplingInfo.Caliber));
+            }
+        }
+
+
+
+    }
+}
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/01-node/03-junction/HydroBluntheadPropertyViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-node/03-junction/01-coupling/01-blunthead/HydroBluntheadPropertyViewModel.cs
similarity index 73%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/01-node/03-junction/HydroBluntheadPropertyViewModel.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-node/03-junction/01-coupling/01-blunthead/HydroBluntheadPropertyViewModel.cs
index f21c621..18b1d70 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/01-node/03-junction/HydroBluntheadPropertyViewModel.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-node/03-junction/01-coupling/01-blunthead/HydroBluntheadPropertyViewModel.cs
@@ -3,12 +3,12 @@
     /// <summary>
     /// 闂峰ご灞炴�ц鍥�
     /// </summary>
-    public class HydroBluntheadPropertyViewModel : HydroJunctionPropertyViewModel
+    public class HydroBluntheadPropertyViewModel : HydroCouplingPropertyViewModel
     {
         /// <summary>
         /// 
         /// </summary>
-        public HydroBluntheadPropertyViewModel() { }
+        public HydroBluntheadPropertyViewModel() : base() { }
 
         /// <summary>
         /// 
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-node/03-junction/01-coupling/02-elbow/HydroElbowPropertyViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-node/03-junction/01-coupling/02-elbow/HydroElbowPropertyViewModel.cs
new file mode 100644
index 0000000..1db5580
--- /dev/null
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-node/03-junction/01-coupling/02-elbow/HydroElbowPropertyViewModel.cs
@@ -0,0 +1,63 @@
+锘縰sing Yw.Model;
+
+namespace Yw.WinFrmUI
+{
+    /// <summary>
+    /// 寮ご灞炴�ц鍥�
+    /// </summary>
+    public class HydroElbowPropertyViewModel : HydroCouplingPropertyViewModel
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        public HydroElbowPropertyViewModel() : base() { }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public HydroElbowPropertyViewModel(Yw.Model.HydroElbowInfo rhs) : base(rhs)
+        {
+            this.BendingAngle = rhs.BendingAngle;
+            this.UpdatePropStatus(nameof(this.BendingAngle), rhs, nameof(rhs.BendingAngle));
+            this.ElbowType = rhs.ElbowType;
+            this.UpdatePropStatus(nameof(this.ElbowType), rhs, nameof(rhs.ElbowType));
+        }
+
+        /// <summary>
+        /// 寮洸瑙掑害
+        /// </summary>
+        [Category("鏁版嵁")]
+        [DisplayName("寮洸瑙掑害")]
+        [PropertyOrder(101)]
+        [DisplayUnit("掳")]
+        [Browsable(true)]
+        public double? BendingAngle { get; set; }
+
+        /// <summary>
+        /// 寮ご绫诲瀷
+        /// </summary>
+        [Category("鏁版嵁")]
+        [DisplayName("寮ご绫诲瀷")]
+        [PropertyOrder(102)]
+        [DisplayUnit("mm")]
+        [Browsable(true)]
+        public string ElbowType { get; set; }
+
+        /// <summary>
+        /// 鏇存柊灞炴��
+        /// </summary>
+        public override void UpdateProperty(HydroParterInfo rhs, List<HydroParterInfo> allParterList)
+        {
+            base.UpdateProperty(rhs, allParterList);
+            if (rhs is Yw.Model.HydroElbowInfo hydroElbowInfo)
+            {
+                this.BendingAngle = hydroElbowInfo.BendingAngle;
+                this.UpdatePropStatus(nameof(this.BendingAngle), hydroElbowInfo, nameof(hydroElbowInfo.BendingAngle));
+                this.ElbowType = hydroElbowInfo.ElbowType;
+                this.UpdatePropStatus(nameof(this.ElbowType), hydroElbowInfo, nameof(hydroElbowInfo.ElbowType));
+            }
+        }
+
+
+    }
+}
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-node/03-junction/01-coupling/03-threelink/HydroThreelinkPropertyViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-node/03-junction/01-coupling/03-threelink/HydroThreelinkPropertyViewModel.cs
new file mode 100644
index 0000000..a1e4f53
--- /dev/null
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-node/03-junction/01-coupling/03-threelink/HydroThreelinkPropertyViewModel.cs
@@ -0,0 +1,63 @@
+锘縰sing Yw.Model;
+
+namespace Yw.WinFrmUI
+{
+    /// <summary>
+    /// 涓夐�氬睘鎬ц鍥�
+    /// </summary>
+    public class HydroThreelinkPropertyViewModel : HydroCouplingPropertyViewModel
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        public HydroThreelinkPropertyViewModel() : base() { }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public HydroThreelinkPropertyViewModel(Yw.Model.HydroThreelinkInfo rhs) : base(rhs)
+        {
+            this.RunningThroughLoss = rhs.RunningThroughLoss;
+            this.UpdatePropStatus(nameof(this.RunningThroughLoss), rhs, nameof(rhs.RunningThroughLoss));
+            this.BranchThroughLoss = rhs.BranchThroughLoss;
+            this.UpdatePropStatus(nameof(this.BranchThroughLoss), rhs, nameof(rhs.BranchThroughLoss));
+        }
+
+        /// <summary>
+        /// 杩愯閫氳繃
+        /// </summary>
+        [Category("鏁版嵁")]
+        [DisplayName("杩愯閫氳繃")]
+        [PropertyOrder(101)]
+        [Browsable(true)]
+        public double? RunningThroughLoss { get; set; }
+
+        /// <summary>
+        /// 鏀閫氳繃
+        /// </summary>
+        [Category("鏁版嵁")]
+        [DisplayName("鏀閫氳繃")]
+        [PropertyOrder(102)]
+        [Browsable(true)]
+        public double? BranchThroughLoss { get; set; }
+
+        /// <summary>
+        /// 鏇存柊灞炴��
+        /// </summary>
+        public override void UpdateProperty(HydroParterInfo rhs, List<HydroParterInfo> allParterList)
+        {
+            base.UpdateProperty(rhs, allParterList);
+            if (rhs is Yw.Model.HydroThreelinkInfo hydroThreelinkInfo)
+            {
+                this.RunningThroughLoss = hydroThreelinkInfo.RunningThroughLoss;
+                this.UpdatePropStatus(nameof(this.RunningThroughLoss), hydroThreelinkInfo, nameof(hydroThreelinkInfo.RunningThroughLoss));
+                this.BranchThroughLoss = hydroThreelinkInfo.BranchThroughLoss;
+                this.UpdatePropStatus(nameof(this.BranchThroughLoss), hydroThreelinkInfo, nameof(hydroThreelinkInfo.BranchThroughLoss));
+            }
+        }
+
+
+
+
+    }
+}
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/01-node/03-junction/HydroFourlinkPropertyViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-node/03-junction/01-coupling/04-fourlink/HydroFourlinkPropertyViewModel.cs
similarity index 70%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/01-node/03-junction/HydroFourlinkPropertyViewModel.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-node/03-junction/01-coupling/04-fourlink/HydroFourlinkPropertyViewModel.cs
index 9eb562d..6f4a586 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/01-node/03-junction/HydroFourlinkPropertyViewModel.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-node/03-junction/01-coupling/04-fourlink/HydroFourlinkPropertyViewModel.cs
@@ -3,12 +3,12 @@
     /// <summary>
     /// 鍥涢�氬睘鎬ц鍥�
     /// </summary>
-    public class HydroFourlinkPropertyViewModel : HydroConnectPropertyViewModel
+    public class HydroFourlinkPropertyViewModel : HydroCouplingPropertyViewModel
     {
         /// <summary>
         /// 
         /// </summary>
-        public HydroFourlinkPropertyViewModel() { }
+        public HydroFourlinkPropertyViewModel() : base() { }
 
         /// <summary>
         /// 
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/01-node/03-junction/HydroEmitterPropertyViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-node/03-junction/02-emitter/00-core/HydroEmitterPropertyViewModel.cs
similarity index 85%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/01-node/03-junction/HydroEmitterPropertyViewModel.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-node/03-junction/02-emitter/00-core/HydroEmitterPropertyViewModel.cs
index da38c5f..aac4153 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/01-node/03-junction/HydroEmitterPropertyViewModel.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-node/03-junction/02-emitter/00-core/HydroEmitterPropertyViewModel.cs
@@ -10,7 +10,7 @@
         /// <summary>
         /// 
         /// </summary>
-        public HydroEmitterPropertyViewModel() { }
+        public HydroEmitterPropertyViewModel() : base() { }
 
         /// <summary>
         /// 
@@ -22,10 +22,10 @@
         }
 
         /// <summary>
-        /// 娴侀噺/鍠峰皠绯绘暟
+        /// 鍠峰皠绯绘暟
         /// </summary>
         [Category("鏁版嵁")]
-        [DisplayName("娴侀噺/鍠峰皠绯绘暟")]
+        [DisplayName("鍠峰皠绯绘暟")]
         [PropertyOrder(12)]
         [Browsable(true)]
         public virtual double Coefficient { get; set; }
@@ -33,8 +33,6 @@
         /// <summary>
         /// 鏇存柊灞炴��
         /// </summary>
-        /// <param name="rhs"></param>
-        /// <param name="allParterList"></param>
         public override void UpdateProperty(HydroParterInfo rhs, List<HydroParterInfo> allParterList)
         {
             base.UpdateProperty(rhs, allParterList);
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-node/03-junction/02-emitter/01-hydrant/HydroHydrantPropertyViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-node/03-junction/02-emitter/01-hydrant/HydroHydrantPropertyViewModel.cs
new file mode 100644
index 0000000..73dd8e3
--- /dev/null
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-node/03-junction/02-emitter/01-hydrant/HydroHydrantPropertyViewModel.cs
@@ -0,0 +1,26 @@
+锘縩amespace Yw.WinFrmUI
+{
+    /// <summary>
+    /// 娑堢伀鏍撳睘鎬ц鍥�
+    /// </summary>
+    public class HydroHydrantPropertyViewModel : HydroEmitterPropertyViewModel
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        public HydroHydrantPropertyViewModel() : base() { }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public HydroHydrantPropertyViewModel(Yw.Model.HydroHydrantInfo rhs) : base(rhs)
+        {
+
+        }
+
+
+
+
+
+    }
+}
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-node/03-junction/02-emitter/02-nozzle/HydroNozzlePropertyViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-node/03-junction/02-emitter/02-nozzle/HydroNozzlePropertyViewModel.cs
new file mode 100644
index 0000000..1377f61
--- /dev/null
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-node/03-junction/02-emitter/02-nozzle/HydroNozzlePropertyViewModel.cs
@@ -0,0 +1,25 @@
+锘縩amespace Yw.WinFrmUI
+{
+    /// <summary>
+    /// 鍠峰槾灞炴�ц鍥�
+    /// </summary>
+    public class HydroNozzlePropertyViewModel : HydroEmitterPropertyViewModel
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        public HydroNozzlePropertyViewModel() : base() { }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public HydroNozzlePropertyViewModel(Yw.Model.HydroNozzleInfo rhs) : base(rhs)
+        {
+
+        }
+
+
+
+
+    }
+}
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/01-node/03-junction/HydroMeterPropertyViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-node/03-junction/03-meter/HydroMeterPropertyViewModel.cs
similarity index 87%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/01-node/03-junction/HydroMeterPropertyViewModel.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-node/03-junction/03-meter/HydroMeterPropertyViewModel.cs
index ea9457b..92f4cfe 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/01-node/03-junction/HydroMeterPropertyViewModel.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-node/03-junction/03-meter/HydroMeterPropertyViewModel.cs
@@ -8,7 +8,7 @@
         /// <summary>
         /// 
         /// </summary>
-        public HydroMeterPropertyViewModel() { }
+        public HydroMeterPropertyViewModel() : base() { }
 
         /// <summary>
         /// 
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/01-node/03-junction/HydroFlowmeterPropertyViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-node/03-junction/04-other/HydroFlowmeterPropertyViewModel.cs
similarity index 86%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/01-node/03-junction/HydroFlowmeterPropertyViewModel.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-node/03-junction/04-other/HydroFlowmeterPropertyViewModel.cs
index fb55043..75febcd 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/01-node/03-junction/HydroFlowmeterPropertyViewModel.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-node/03-junction/04-other/HydroFlowmeterPropertyViewModel.cs
@@ -8,7 +8,7 @@
         /// <summary>
         /// 
         /// </summary>
-        public HydroFlowmeterPropertyViewModel() { }
+        public HydroFlowmeterPropertyViewModel() : base() { }
 
         /// <summary>
         /// 
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/01-node/03-junction/HydroPressmeterPropertyViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-node/03-junction/04-other/HydroPressmeterPropertyViewModel.cs
similarity index 86%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/01-node/03-junction/HydroPressmeterPropertyViewModel.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-node/03-junction/04-other/HydroPressmeterPropertyViewModel.cs
index 3c534a2..6b06036 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/01-node/03-junction/HydroPressmeterPropertyViewModel.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-node/03-junction/04-other/HydroPressmeterPropertyViewModel.cs
@@ -8,7 +8,7 @@
         /// <summary>
         /// 
         /// </summary>
-        public HydroPressmeterPropertyViewModel() { }
+        public HydroPressmeterPropertyViewModel() : base() { }
 
         /// <summary>
         /// 
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-link/00-core/HydroLinkPropertyViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/03-link/00-core/HydroLinkPropertyViewModel.cs
similarity index 93%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-link/00-core/HydroLinkPropertyViewModel.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/03-link/00-core/HydroLinkPropertyViewModel.cs
index af89fc4..0e8a258 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-link/00-core/HydroLinkPropertyViewModel.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/03-link/00-core/HydroLinkPropertyViewModel.cs
@@ -10,7 +10,7 @@
         /// <summary>
         /// 
         /// </summary>
-        public HydroLinkPropertyViewModel() { }
+        public HydroLinkPropertyViewModel() : base() { }
 
         /// <summary>
         /// 
@@ -118,9 +118,9 @@
             base.UpdateCalcuProperty(rhs);
             if (rhs is IHydroCalcuLinkResult calcuLinkProperty)
             {
-                this.CalcuFlow = calcuLinkProperty.CalcuFlow;
-                this.CalcuVelocity = calcuLinkProperty.CalcuVelocity;
-                this.CalcuHeadLoss = calcuLinkProperty.CalcuHeadLoss;
+                this.CalcuFlow = calcuLinkProperty.CalcuFlow ?? Math.Round(calcuLinkProperty.CalcuFlow.Value, 1);
+                this.CalcuVelocity = calcuLinkProperty.CalcuVelocity ?? Math.Round(calcuLinkProperty.CalcuVelocity.Value, 2);
+                this.CalcuHeadLoss = calcuLinkProperty.CalcuHeadLoss ?? Math.Round(calcuLinkProperty.CalcuHeadLoss.Value, 2);
             }
         }
 
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-link/01-pipe/HydroPipePropertyViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/03-link/01-pipe/00-core/HydroPipePropertyViewModel.cs
similarity index 82%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-link/01-pipe/HydroPipePropertyViewModel.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/03-link/01-pipe/00-core/HydroPipePropertyViewModel.cs
index 97f0dc2..0e94027 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-link/01-pipe/HydroPipePropertyViewModel.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/03-link/01-pipe/00-core/HydroPipePropertyViewModel.cs
@@ -10,13 +10,15 @@
         /// <summary>
         /// 
         /// </summary>
-        public HydroPipePropertyViewModel() { }
+        public HydroPipePropertyViewModel() : base() { }
 
         /// <summary>
         /// 
         /// </summary>
         public HydroPipePropertyViewModel(Yw.Model.HydroPipeInfo rhs) : base(rhs)
         {
+            this.Material = rhs.Material;
+            this.UpdatePropStatus(nameof(this.Material), rhs, nameof(rhs.Material));
             this.Diameter = rhs.Diameter;
             this.UpdatePropStatus(nameof(this.Diameter), rhs, nameof(rhs.Diameter));
             this.Length = rhs.Length;
@@ -38,13 +40,22 @@
         public override string LinkStatus { get; set; }
 
         /// <summary>
+        /// 鏉愭枡
+        /// </summary>
+        [Category("鏁版嵁")]
+        [DisplayName("鏉愭枡")]
+        [PropertyOrder(100)]
+        [Browsable(true)]
+        public string Material { get; set; }
+
+        /// <summary>
         /// 鐩村緞
         /// </summary>
         [Category("鏁版嵁")]
         [DisplayName("鐩村緞")]
         [PropertyOrder(101)]
-        [Browsable(true)]
         [DisplayUnit("mm")]
+        [Browsable(true)]
         public double Diameter { get; set; }
 
         /// <summary>
@@ -53,8 +64,8 @@
         [Category("鏁版嵁")]
         [DisplayName("闀垮害")]
         [PropertyOrder(102)]
-        [Browsable(true)]
         [DisplayUnit("m")]
+        [Browsable(true)]
         public double Length { get; set; }
 
         /// <summary>
@@ -67,10 +78,10 @@
         public double Roughness { get; set; }
 
         /// <summary>
-        /// 灞�閮ㄩ樆鍔涚郴鏁�
+        /// 灞�闃荤郴鏁�
         /// </summary>
         [Category("鏁版嵁")]
-        [DisplayName("灞�閮ㄩ樆鍔涚郴鏁�")]
+        [DisplayName("灞�闃荤郴鏁�")]
         [PropertyOrder(104)]
         [Browsable(true)]
         public double MinorLoss { get; set; }
@@ -78,13 +89,13 @@
         /// <summary>
         /// 鏇存柊灞炴��
         /// </summary>
-        /// <param name="rhs"></param>
-        /// <param name="allParterList"></param>
         public override void UpdateProperty(HydroParterInfo rhs, List<HydroParterInfo> allParterList)
         {
             base.UpdateProperty(rhs, allParterList);
             if (rhs is Yw.Model.HydroPipeInfo hydroPipeInfo)
             {
+                this.Material = hydroPipeInfo.Material;
+                this.UpdatePropStatus(nameof(this.Material), hydroPipeInfo, nameof(hydroPipeInfo.Material));
                 this.Diameter = hydroPipeInfo.Diameter;
                 this.UpdatePropStatus(nameof(this.Diameter), hydroPipeInfo, nameof(hydroPipeInfo.Diameter));
                 this.Length = hydroPipeInfo.Length;
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-link/01-pipe/HydroTranslationPropertyViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/03-link/01-pipe/01-translation/HydroTranslationPropertyViewModel.cs
similarity index 86%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-link/01-pipe/HydroTranslationPropertyViewModel.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/03-link/01-pipe/01-translation/HydroTranslationPropertyViewModel.cs
index bc7c79c..cfbb9d0 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-link/01-pipe/HydroTranslationPropertyViewModel.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/03-link/01-pipe/01-translation/HydroTranslationPropertyViewModel.cs
@@ -8,7 +8,7 @@
         /// <summary>
         /// 
         /// </summary>
-        public HydroTranslationPropertyViewModel() { }
+        public HydroTranslationPropertyViewModel() : base() { }
 
         /// <summary>
         /// 
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-link/01-pipe/HydroExchangerPropertyViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/03-link/01-pipe/02-exchanger/HydroExchangerPropertyViewModel.cs
similarity index 86%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-link/01-pipe/HydroExchangerPropertyViewModel.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/03-link/01-pipe/02-exchanger/HydroExchangerPropertyViewModel.cs
index 1d5e6ed..7438b0b 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-link/01-pipe/HydroExchangerPropertyViewModel.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/03-link/01-pipe/02-exchanger/HydroExchangerPropertyViewModel.cs
@@ -8,7 +8,7 @@
         /// <summary>
         /// 
         /// </summary>
-        public HydroExchangerPropertyViewModel() { }
+        public HydroExchangerPropertyViewModel() : base() { }
 
         /// <summary>
         /// 
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/03-link/01-pipe/03-compressor/HydroCompressorPropertyViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/03-link/01-pipe/03-compressor/HydroCompressorPropertyViewModel.cs
new file mode 100644
index 0000000..964c892
--- /dev/null
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/03-link/01-pipe/03-compressor/HydroCompressorPropertyViewModel.cs
@@ -0,0 +1,24 @@
+锘縩amespace Yw.WinFrmUI
+{
+    /// <summary>
+    /// 鍘嬬缉鏈哄睘鎬ц鍥�
+    /// </summary>
+    public class HydroCompressorPropertyViewModel : HydroPipePropertyViewModel
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        public HydroCompressorPropertyViewModel() : base() { }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public HydroCompressorPropertyViewModel(Yw.Model.HydroCompressorInfo rhs) : base(rhs)
+        {
+
+        }
+
+
+
+    }
+}
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-link/02-pump/HydroPumpPropertyViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/03-link/02-pump/HydroPumpPropertyViewModel.cs
similarity index 86%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-link/02-pump/HydroPumpPropertyViewModel.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/03-link/02-pump/HydroPumpPropertyViewModel.cs
index 990cc86..fd4946f 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-link/02-pump/HydroPumpPropertyViewModel.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/03-link/02-pump/HydroPumpPropertyViewModel.cs
@@ -10,7 +10,7 @@
         /// <summary>
         /// 
         /// </summary>
-        public HydroPumpPropertyViewModel() { }
+        public HydroPumpPropertyViewModel() : base() { }
 
         /// <summary>
         /// 
@@ -25,21 +25,22 @@
             this.UpdatePropStatus(nameof(this.RatedH), rhs, nameof(rhs.RatedH));
             this.RatedN = rhs.RatedN;
             this.UpdatePropStatus(nameof(this.RatedN), rhs, nameof(rhs.RatedN));
+            this.RatedHz = rhs.RatedHz;
+            this.UpdatePropStatus(nameof(this.RatedHz), rhs, nameof(rhs.RatedHz));
+            this.SpeedRatio = rhs.SpeedRatio;
+            this.UpdatePropStatus(nameof(this.SpeedRatio), rhs, nameof(rhs.SpeedRatio));
+            this.SpeedRatioPattern = rhs.SpeedRatioPattern;
+            this.UpdatePropStatus(nameof(this.SpeedRatioPattern), rhs, nameof(rhs.SpeedRatioPattern));
             this.CurveQH = rhs.CurveQH;
             this.UpdatePropStatus(nameof(this.CurveQH), rhs, nameof(rhs.CurveQH));
             this.CurveQP = rhs.CurveQP;
             this.UpdatePropStatus(nameof(this.CurveQP), rhs, nameof(rhs.CurveQP));
             this.CurveQE = rhs.CurveQE;
             this.UpdatePropStatus(nameof(this.CurveQE), rhs, nameof(rhs.CurveQE));
-            this.SpeedRatio = rhs.SpeedRatio;
-            this.UpdatePropStatus(nameof(this.SpeedRatio), rhs, nameof(rhs.SpeedRatio));
-            this.SpeedRatioPattern = rhs.SpeedRatioPattern;
-            this.UpdatePropStatus(nameof(this.SpeedRatioPattern), rhs, nameof(rhs.SpeedRatioPattern));
             this.Price = rhs.Price;
             this.UpdatePropStatus(nameof(this.Price), rhs, nameof(rhs.Price));
             this.PricePattern = rhs.PricePattern;
             this.UpdatePropStatus(nameof(this.PricePattern), rhs, nameof(rhs.PricePattern));
-
             this.Curve = string.IsNullOrEmpty(rhs.CurveQH) ? "鏈缃�" : "宸茶缃�";
         }
 
@@ -59,8 +60,8 @@
         [Category("鏁版嵁")]
         [DisplayName("棰濆畾鍔熺巼")]
         [PropertyOrder(101)]
-        [Browsable(true)]
         [DisplayUnit("kW")]
+        [Browsable(true)]
         public double RatedP { get; set; }
 
         /// <summary>
@@ -69,8 +70,8 @@
         [Category("鏁版嵁")]
         [DisplayName("棰濆畾娴侀噺")]
         [PropertyOrder(102)]
-        [Browsable(true)]
         [DisplayUnit("m鲁/h")]
+        [Browsable(true)]
         public double? RatedQ { get; set; }
 
         /// <summary>
@@ -79,8 +80,8 @@
         [Category("鏁版嵁")]
         [DisplayName("棰濆畾鎵▼")]
         [PropertyOrder(103)]
-        [Browsable(true)]
         [DisplayUnit("m")]
+        [Browsable(true)]
         public double? RatedH { get; set; }
 
         /// <summary>
@@ -89,16 +90,65 @@
         [Category("鏁版嵁")]
         [DisplayName("棰濆畾杞��")]
         [PropertyOrder(104)]
-        [Browsable(true)]
         [DisplayUnit("r/min")]
+        [Browsable(true)]
         public double? RatedN { get; set; }
+
+        /// <summary>
+        /// 棰濆畾棰戠巼
+        /// </summary>
+        [Category("鏁版嵁")]
+        [DisplayName("棰濆畾棰戠巼")]
+        [PropertyOrder(105)]
+        [DisplayUnit("hz")]
+        [Browsable(true)]
+        public double RatedHz { get; set; }
+
+        /// <summary>
+        /// 棰戠巼
+        /// </summary>
+        [Category("鏁版嵁")]
+        [DisplayName("棰戠巼")]
+        [PropertyOrder(106)]
+        [DisplayUnit("hz")]
+        [Browsable(true)]
+        public double CurrentHz
+        {
+            get { return this.SpeedRatio * this.RatedHz; }
+            set
+            {
+                if (this.RatedHz <= 0)
+                {
+                    return;
+                }
+                this.SpeedRatio = value / this.RatedHz;
+            }
+        }
+
+        /// <summary>
+        /// 杞�熸瘮
+        /// </summary>
+        [Category("鏁版嵁")]
+        [DisplayName("杞�熸瘮")]
+        [PropertyOrder(107)]
+        [Browsable(true)]
+        public double SpeedRatio { get; set; }
+
+        /// <summary>
+        /// 杞�熸瘮妯″紡
+        /// </summary>
+        [Category("鏁版嵁")]
+        [DisplayName("杞�熸瘮妯″紡")]
+        [PropertyOrder(108)]
+        [Browsable(true)]
+        public string SpeedRatioPattern { get; set; }
 
         /// <summary>
         /// 鎬ц兘鏇茬嚎
         /// </summary>
         [Category("鏁版嵁")]
         [DisplayName("鎬ц兘鏇茬嚎")]
-        [PropertyOrder(105)]
+        [PropertyOrder(110)]
         [Browsable(true)]
         [IsHydroCurvePro(HydroCurve.Pump)]
         public string Curve { get; set; }
@@ -108,7 +158,7 @@
         /// </summary>
         [Category("鏁版嵁")]
         [DisplayName("娴侀噺鎵▼鏇茬嚎")]
-        [PropertyOrder(106)]
+        [PropertyOrder(111)]
         [IsHydroCurvePro(HydroCurve.PumpQH)]
         [Browsable(true)]
         public string CurveQH { get; set; }
@@ -118,7 +168,7 @@
         /// </summary>
         [Category("鏁版嵁")]
         [DisplayName("娴侀噺鍔熺巼鏇茬嚎")]
-        [PropertyOrder(107)]
+        [PropertyOrder(112)]
         [IsHydroCurvePro(HydroCurve.PumpQP)]
         [Browsable(true)]
         public string CurveQP { get; set; }
@@ -128,35 +178,17 @@
         /// </summary>
         [Category("鏁版嵁")]
         [DisplayName("娴侀噺鏁堢巼鏇茬嚎")]
-        [PropertyOrder(108)]
+        [PropertyOrder(113)]
         [IsHydroCurvePro(HydroCurve.PumpQE)]
         [Browsable(true)]
         public string CurveQE { get; set; }
-
-        /// <summary>
-        /// 杞�熸瘮
-        /// </summary>
-        [Category("鏁版嵁")]
-        [DisplayName("杞�熸瘮")]
-        [PropertyOrder(109)]
-        [Browsable(true)]
-        public double? SpeedRatio { get; set; }
-
-        /// <summary>
-        /// 杞�熸瘮妯″紡
-        /// </summary>
-        [Category("鏁版嵁")]
-        [DisplayName("杞�熸瘮妯″紡")]
-        [PropertyOrder(110)]
-        [Browsable(true)]
-        public string SpeedRatioPattern { get; set; }
 
         /// <summary>
         /// 鑳借�椾环鏍�
         /// </summary>
         [Category("鏁版嵁")]
         [DisplayName("鑳借�椾环鏍�")]
-        [PropertyOrder(111)]
+        [PropertyOrder(114)]
         [Browsable(true)]
         public double? Price { get; set; }
 
@@ -165,7 +197,7 @@
         /// </summary>
         [Category("鏁版嵁")]
         [DisplayName("浠锋牸妯″紡")]
-        [PropertyOrder(112)]
+        [PropertyOrder(115)]
         [Browsable(true)]
         public string PricePattern { get; set; }
 
@@ -173,8 +205,6 @@
         /// <summary>
         /// 鏇存柊灞炴��
         /// </summary>
-        /// <param name="rhs"></param>
-        /// <param name="allParterList"></param>
         public override void UpdateProperty(HydroParterInfo rhs, List<HydroParterInfo> allParterList)
         {
             base.UpdateProperty(rhs, allParterList);
@@ -188,16 +218,18 @@
                 this.UpdatePropStatus(nameof(this.RatedH), hydroPumpInfo, nameof(hydroPumpInfo.RatedH));
                 this.RatedN = hydroPumpInfo.RatedN;
                 this.UpdatePropStatus(nameof(this.RatedN), hydroPumpInfo, nameof(hydroPumpInfo.RatedN));
+                this.RatedHz = hydroPumpInfo.RatedHz;
+                this.UpdatePropStatus(nameof(this.RatedHz), hydroPumpInfo, nameof(hydroPumpInfo.RatedHz));
+                this.SpeedRatio = hydroPumpInfo.SpeedRatio;
+                this.UpdatePropStatus(nameof(this.SpeedRatio), hydroPumpInfo, nameof(hydroPumpInfo.SpeedRatio));
+                this.SpeedRatioPattern = hydroPumpInfo.SpeedRatioPattern;
+                this.UpdatePropStatus(nameof(this.SpeedRatioPattern), hydroPumpInfo, nameof(hydroPumpInfo.SpeedRatioPattern));
                 this.CurveQH = hydroPumpInfo.CurveQH;
                 this.UpdatePropStatus(nameof(this.CurveQH), hydroPumpInfo, nameof(hydroPumpInfo.CurveQH));
                 this.CurveQP = hydroPumpInfo.CurveQP;
                 this.UpdatePropStatus(nameof(this.CurveQP), hydroPumpInfo, nameof(hydroPumpInfo.CurveQP));
                 this.CurveQE = hydroPumpInfo.CurveQE;
                 this.UpdatePropStatus(nameof(this.CurveQE), hydroPumpInfo, nameof(hydroPumpInfo.CurveQE));
-                this.SpeedRatio = hydroPumpInfo.SpeedRatio;
-                this.UpdatePropStatus(nameof(this.SpeedRatio), hydroPumpInfo, nameof(hydroPumpInfo.SpeedRatio));
-                this.SpeedRatioPattern = hydroPumpInfo.SpeedRatioPattern;
-                this.UpdatePropStatus(nameof(this.SpeedRatioPattern), hydroPumpInfo, nameof(hydroPumpInfo.SpeedRatioPattern));
                 this.Price = hydroPumpInfo.Price;
                 this.UpdatePropStatus(nameof(this.Price), hydroPumpInfo, nameof(hydroPumpInfo.Price));
                 this.PricePattern = hydroPumpInfo.PricePattern;
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-link/03-valve/HydroValvePropertyViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/03-link/03-valve/HydroValvePropertyViewModel.cs
similarity index 74%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-link/03-valve/HydroValvePropertyViewModel.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/03-link/03-valve/HydroValvePropertyViewModel.cs
index 548368c..423e0de 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/02-link/03-valve/HydroValvePropertyViewModel.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/03-link/03-valve/HydroValvePropertyViewModel.cs
@@ -17,12 +17,16 @@
         /// </summary>
         public HydroValvePropertyViewModel(Yw.Model.HydroValveInfo rhs) : base(rhs)
         {
+            this.Material = rhs.Material;
+            this.UpdatePropStatus(nameof(this.Material), rhs, nameof(rhs.Material));
             this.Diameter = rhs.Diameter;
             this.UpdatePropStatus(nameof(this.Diameter), rhs, nameof(rhs.Diameter));
             this.MinorLoss = rhs.MinorLoss;
             this.UpdatePropStatus(nameof(this.MinorLoss), rhs, nameof(rhs.MinorLoss));
             this.ValveType = rhs.ValveType;
             this.UpdatePropStatus(nameof(this.ValveType), rhs, nameof(rhs.ValveType));
+            this.OpeningDegree = rhs.OpeningDegree;
+            this.UpdatePropStatus(nameof(this.OpeningDegree), rhs, nameof(rhs.OpeningDegree));
             this.ValveSetting = rhs.ValveSetting;
             this.UpdatePropStatus(nameof(this.ValveSetting), rhs, nameof(rhs.ValveSetting));
         }
@@ -39,6 +43,15 @@
         public override string LinkStatus { get; set; }
 
         /// <summary>
+        /// 鏉愭枡
+        /// </summary>
+        [Category("鏁版嵁")]
+        [DisplayName("鏉愭枡")]
+        [PropertyOrder(100)]
+        [Browsable(true)]
+        public string Material { get; set; }
+
+        /// <summary>
         /// 鐩村緞
         /// </summary>
         [Category("鏁版嵁")]
@@ -49,10 +62,10 @@
         public double Diameter { get; set; }
 
         /// <summary>
-        /// 灞�閮ㄩ樆鍔涚郴鏁�
+        /// 灞�闃荤郴鏁�
         /// </summary>
         [Category("鏁版嵁")]
-        [DisplayName("灞�閮ㄩ樆鍔涚郴鏁�")]
+        [DisplayName("灞�闃荤郴鏁�")]
         [PropertyOrder(102)]
         [Browsable(true)]
         public double MinorLoss { get; set; }
@@ -68,31 +81,43 @@
         public string ValveType { get; set; }
 
         /// <summary>
+        /// 闃�闂ㄥ紑搴�
+        /// </summary>
+        [Category("鏁版嵁")]
+        [DisplayName("闃�闂ㄥ紑搴�")]
+        [PropertyOrder(104)]
+        [Browsable(true)]
+        public double OpeningDegree { get; set; }
+
+        /// <summary>
         /// 闃�闂ㄨ缃�
         /// </summary>
         [Category("鏁版嵁")]
         [DisplayName("闃�闂ㄨ缃�")]
-        [PropertyOrder(104)]
+        [PropertyOrder(105)]
         [IsHydroCurvePro(HydroCurve.ValveQL)]
         [Browsable(true)]
         public string ValveSetting { get; set; }
 
+
         /// <summary>
         /// 鏇存柊灞炴��
         /// </summary>
-        /// <param name="rhs"></param>
-        /// <param name="allParterList"></param>
         public override void UpdateProperty(HydroParterInfo rhs, List<HydroParterInfo> allParterList)
         {
             base.UpdateProperty(rhs, allParterList);
             if (rhs is Yw.Model.HydroValveInfo hydroValveInfo)
             {
+                this.Material = hydroValveInfo.Material;
+                this.UpdatePropStatus(nameof(this.Material), hydroValveInfo, nameof(hydroValveInfo.Material));
                 this.Diameter = hydroValveInfo.Diameter;
                 this.UpdatePropStatus(nameof(this.Diameter), hydroValveInfo, nameof(hydroValveInfo.Diameter));
                 this.MinorLoss = hydroValveInfo.MinorLoss;
                 this.UpdatePropStatus(nameof(this.MinorLoss), hydroValveInfo, nameof(hydroValveInfo.MinorLoss));
                 this.ValveType = hydroValveInfo.ValveType;
                 this.UpdatePropStatus(nameof(this.ValveType), hydroValveInfo, nameof(hydroValveInfo.ValveType));
+                this.OpeningDegree = hydroValveInfo.OpeningDegree;
+                this.UpdatePropStatus(nameof(this.OpeningDegree), hydroValveInfo, nameof(hydroValveInfo.OpeningDegree));
                 this.ValveSetting = hydroValveInfo.ValveSetting;
                 this.UpdatePropStatus(nameof(this.ValveSetting), hydroValveInfo, nameof(hydroValveInfo.ValveSetting));
             }
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/03-converter/HydroPipeStatusConverter.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/05-converter/HydroPipeStatusConverter.cs
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/03-converter/HydroPipeStatusConverter.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/05-converter/HydroPipeStatusConverter.cs
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/03-converter/HydroPumpStatusConverter.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/05-converter/HydroPumpStatusConverter.cs
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/03-converter/HydroPumpStatusConverter.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/05-converter/HydroPumpStatusConverter.cs
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/03-converter/HydroValveStatusConverter.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/05-converter/HydroValveStatusConverter.cs
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/03-converter/HydroValveStatusConverter.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/05-converter/HydroValveStatusConverter.cs
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/03-converter/HydroValveTypeConverter.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/05-converter/HydroValveTypeConverter.cs
similarity index 82%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/03-converter/HydroValveTypeConverter.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/05-converter/HydroValveTypeConverter.cs
index 9ccc391..bad9435 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/03-converter/HydroValveTypeConverter.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/05-converter/HydroValveTypeConverter.cs
@@ -22,12 +22,12 @@
         {
             var list = new List<string>
             {
-                Valve.PRV,
-                Valve.PSV,
-                Valve.PBV,
-                Valve.FCV,
-                Valve.TCV,
-                Valve.GPV
+                ValveType.PRV,
+                ValveType.PSV,
+                ValveType.PBV,
+                ValveType.FCV,
+                ValveType.TCV,
+                ValveType.GPV
             };
             return new StandardValuesCollection(list);
         }
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/05-curve/HydroCurvePointViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/06-curve/HydroCurvePointViewModel.cs
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/05-curve/HydroCurvePointViewModel.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/06-curve/HydroCurvePointViewModel.cs
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/05-curve/HydroCurveViewCtrl.Designer.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/06-curve/HydroCurveViewCtrl.Designer.cs
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/05-curve/HydroCurveViewCtrl.Designer.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/06-curve/HydroCurveViewCtrl.Designer.cs
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/05-curve/HydroCurveViewCtrl.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/06-curve/HydroCurveViewCtrl.cs
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/05-curve/HydroCurveViewCtrl.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/06-curve/HydroCurveViewCtrl.cs
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/05-curve/HydroCurveViewCtrl.resx b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/06-curve/HydroCurveViewCtrl.resx
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/05-curve/HydroCurveViewCtrl.resx
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/06-curve/HydroCurveViewCtrl.resx
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/05-curve/HydroCurveViewDlg.Designer.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/06-curve/HydroCurveViewDlg.Designer.cs
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/05-curve/HydroCurveViewDlg.Designer.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/06-curve/HydroCurveViewDlg.Designer.cs
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/05-curve/HydroCurveViewDlg.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/06-curve/HydroCurveViewDlg.cs
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/05-curve/HydroCurveViewDlg.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/06-curve/HydroCurveViewDlg.cs
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/05-curve/HydroCurveViewDlg.resx b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/06-curve/HydroCurveViewDlg.resx
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/05-curve/HydroCurveViewDlg.resx
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/06-curve/HydroCurveViewDlg.resx
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/05-curve/SetHydroCurveCtrl.Designer.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/06-curve/SetHydroCurveCtrl.Designer.cs
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/05-curve/SetHydroCurveCtrl.Designer.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/06-curve/SetHydroCurveCtrl.Designer.cs
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/05-curve/SetHydroCurveCtrl.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/06-curve/SetHydroCurveCtrl.cs
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/05-curve/SetHydroCurveCtrl.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/06-curve/SetHydroCurveCtrl.cs
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/05-curve/SetHydroCurveCtrl.resx b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/06-curve/SetHydroCurveCtrl.resx
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/05-curve/SetHydroCurveCtrl.resx
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/06-curve/SetHydroCurveCtrl.resx
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/05-curve/SetHydroCurveDlg.Designer.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/06-curve/SetHydroCurveDlg.Designer.cs
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/05-curve/SetHydroCurveDlg.Designer.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/06-curve/SetHydroCurveDlg.Designer.cs
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/05-curve/SetHydroCurveDlg.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/06-curve/SetHydroCurveDlg.cs
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/05-curve/SetHydroCurveDlg.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/06-curve/SetHydroCurveDlg.cs
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/05-curve/SetHydroCurveDlg.resx b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/06-curve/SetHydroCurveDlg.resx
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/05-curve/SetHydroCurveDlg.resx
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-property/06-curve/SetHydroCurveDlg.resx
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/00-core/HydroParterViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/00-core/HydroParterViewModel.cs
index b3748ca..7268885 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/00-core/HydroParterViewModel.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/00-core/HydroParterViewModel.cs
@@ -20,6 +20,7 @@
             this.Code = rhs.Code;
             this.Name = rhs.Name;
             this.ModelType = rhs.ModelType;
+            this.HasDb = !string.IsNullOrEmpty(rhs.DbId);
             this.DbLocked = rhs.DbLocked;
             this.FlagsString = Yw.Untity.FlagsHelper.ToString(rhs.Flags);
             this.Description = rhs.Description;
@@ -62,6 +63,13 @@
         public string ModelType { get; set; }
 
         /// <summary>
+        /// 鍖归厤
+        /// </summary>
+        [DisplayName("鍖归厤")]
+        [Display(Name = "鍖归厤")]
+        public bool HasDb { get; set; }
+
+        /// <summary>
         /// 閿佸畾
         /// </summary>
         [DisplayName("閿佸畾")]
@@ -81,8 +89,6 @@
         [DisplayName("璇存槑")]
         [Display(Name = "璇存槑")]
         public string Description { get; set; }
-
-
 
 
         /// <summary>
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/01-visual/HydroVisualViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/01-visual/HydroVisualViewModel.cs
new file mode 100644
index 0000000..50babcf
--- /dev/null
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/01-visual/HydroVisualViewModel.cs
@@ -0,0 +1,27 @@
+锘縩amespace Yw.WinFrmUI
+{
+    /// <summary>
+    /// 鍙缁勪欢
+    /// </summary>
+    public class HydroVisualViewModel : HydroParterViewModel
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        public HydroVisualViewModel() : base() { }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public HydroVisualViewModel(Yw.Model.HydroVisualInfo rhs) : base(rhs)
+        {
+            this.Vmo = rhs;
+        }
+
+        /// <summary>
+        /// Vmo
+        /// </summary>
+        [Browsable(false)]
+        public new Yw.Model.HydroVisualInfo Vmo { get; set; }
+    }
+}
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/01-junction/HydroNodeViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/00-core/HydroNodeViewModel.cs
similarity index 77%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/01-junction/HydroNodeViewModel.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/00-core/HydroNodeViewModel.cs
index 03d8f53..be45482 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/01-junction/HydroNodeViewModel.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/00-core/HydroNodeViewModel.cs
@@ -3,12 +3,12 @@
     /// <summary>
     /// 
     /// </summary>
-    public class HydroNodeViewModel : HydroParterViewModel, IHydroCalcuNodeResult
+    public class HydroNodeViewModel : HydroVisualViewModel, IHydroCalcuNodeResult
     {
         /// <summary>
         /// 
         /// </summary>
-        public HydroNodeViewModel() { }
+        public HydroNodeViewModel() : base() { }
 
         /// <summary>
         /// 
@@ -24,9 +24,9 @@
         /// </summary>
         public HydroNodeViewModel(Yw.Model.HydroNodeInfo rhs, Yw.WinFrmUI.HydroCalcuNodeResult calcuResult) : this(rhs)
         {
-            this.CalcuPress = calcuResult?.CalcuPress;
-            this.CalcuHead = calcuResult?.CalcuHead;
-            this.CalcuDemand = calcuResult?.CalcuDemand;
+            this.CalcuPress = calcuResult?.CalcuPress ?? Math.Round(calcuResult.CalcuPress.Value, 2);
+            this.CalcuHead = calcuResult?.CalcuHead ?? Math.Round(calcuResult.CalcuHead.Value, 2);
+            this.CalcuDemand = calcuResult?.CalcuDemand ?? Math.Round(calcuResult.CalcuDemand.Value, 1); ;
         }
 
         /// <summary>
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/13-source/HydroSourceViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/01-source/00-core/HydroSourceViewModel.cs
similarity index 93%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/13-source/HydroSourceViewModel.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/01-source/00-core/HydroSourceViewModel.cs
index b2e5cd0..e914ed3 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/13-source/HydroSourceViewModel.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/01-source/00-core/HydroSourceViewModel.cs
@@ -8,7 +8,7 @@
         /// <summary>
         /// 
         /// </summary>
-        public HydroSourceViewModel() { }
+        public HydroSourceViewModel() : base() { }
 
         /// <summary>
         /// 
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/14-reservoir/HydroReservoirListCtrl.Designer.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/01-source/01-reservoir/HydroReservoirListCtrl.Designer.cs
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/14-reservoir/HydroReservoirListCtrl.Designer.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/01-source/01-reservoir/HydroReservoirListCtrl.Designer.cs
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/14-reservoir/HydroReservoirListCtrl.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/01-source/01-reservoir/HydroReservoirListCtrl.cs
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/14-reservoir/HydroReservoirListCtrl.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/01-source/01-reservoir/HydroReservoirListCtrl.cs
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/14-reservoir/HydroReservoirListCtrl.resx b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/01-source/01-reservoir/HydroReservoirListCtrl.resx
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/14-reservoir/HydroReservoirListCtrl.resx
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/01-source/01-reservoir/HydroReservoirListCtrl.resx
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/14-reservoir/HydroReservoirViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/01-source/01-reservoir/HydroReservoirViewModel.cs
similarity index 91%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/14-reservoir/HydroReservoirViewModel.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/01-source/01-reservoir/HydroReservoirViewModel.cs
index c87e236..6cc3336 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/14-reservoir/HydroReservoirViewModel.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/01-source/01-reservoir/HydroReservoirViewModel.cs
@@ -8,7 +8,7 @@
         /// <summary>
         /// 
         /// </summary>
-        public HydroReservoirViewModel() { }
+        public HydroReservoirViewModel() : base() { }
 
         /// <summary>
         /// 
@@ -37,13 +37,13 @@
         /// <summary>
         /// 姹犲簳鏍囬珮
         /// </summary>
-        [DisplayName("姹犲簳鏍囬珮")]
+        [DisplayName("姹犲簳鏍囬珮(m)")]
         public double? PoolElev { get; set; }
 
         /// <summary>
         /// 鎬绘按澶�
         /// </summary>
-        [DisplayName("鎬绘按澶�")]
+        [DisplayName("鎬绘按澶�(m)")]
         public double? Head { get; set; }
 
         /// <summary>
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/15-tank/HydroTankListCtrl.Designer.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/01-source/02-tank/00-core/HydroTankListCtrl.Designer.cs
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/15-tank/HydroTankListCtrl.Designer.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/01-source/02-tank/00-core/HydroTankListCtrl.Designer.cs
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/15-tank/HydroTankListCtrl.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/01-source/02-tank/00-core/HydroTankListCtrl.cs
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/15-tank/HydroTankListCtrl.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/01-source/02-tank/00-core/HydroTankListCtrl.cs
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/15-tank/HydroTankListCtrl.resx b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/01-source/02-tank/00-core/HydroTankListCtrl.resx
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/15-tank/HydroTankListCtrl.resx
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/01-source/02-tank/00-core/HydroTankListCtrl.resx
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/15-tank/HydroTankViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/01-source/02-tank/00-core/HydroTankViewModel.cs
similarity index 75%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/15-tank/HydroTankViewModel.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/01-source/02-tank/00-core/HydroTankViewModel.cs
index 921cb80..ec6552a 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/15-tank/HydroTankViewModel.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/01-source/02-tank/00-core/HydroTankViewModel.cs
@@ -19,9 +19,10 @@
             this.InitLevel = rhs.InitLevel;
             this.MinLevel = rhs.MinLevel;
             this.MaxLevel = rhs.MaxLevel;
-            this.Diameter = rhs.Diameter;
+            this.DN = rhs.DN;
             this.MinVol = rhs.MinVol;
             this.VolCurve = rhs.VolCurve;
+            this.OverFlow = rhs.OverFlow;
 
             this.Vmo = rhs;
         }
@@ -35,9 +36,10 @@
             this.InitLevel = rhs.InitLevel;
             this.MinLevel = rhs.MinLevel;
             this.MaxLevel = rhs.MaxLevel;
-            this.Diameter = rhs.Diameter;
+            this.DN = rhs.DN;
             this.MinVol = rhs.MinVol;
             this.VolCurve = rhs.VolCurve;
+            this.OverFlow = rhs.OverFlow;
 
             this.Vmo = rhs;
         }
@@ -45,37 +47,37 @@
         /// <summary>
         /// 姹犲簳鏍囬珮
         /// </summary>
-        [DisplayName("姹犲簳鏍囬珮")]
-        public double? PoolElev { get; set; }
+        [DisplayName("姹犲簳鏍囬珮(m)")]
+        public double PoolElev { get; set; }
 
         /// <summary>
         /// 鍒濆姘翠綅
         /// </summary>
-        [DisplayName("鍒濆姘翠綅")]
+        [DisplayName("鍒濆姘翠綅(m)")]
         public double InitLevel { get; set; }
 
         /// <summary>
         /// 鏈�浣庢按浣�
         /// </summary>
-        [DisplayName("鏈�浣庢按浣�")]
+        [DisplayName("鏈�浣庢按浣�(m)")]
         public double MinLevel { get; set; }
 
         /// <summary>
         /// 鏈�楂樻按浣�
         /// </summary>
-        [DisplayName("鏈�楂樻按浣�")]
+        [DisplayName("鏈�楂樻按浣�(m)")]
         public double MaxLevel { get; set; }
 
         /// <summary>
-        /// 鐩村緞
+        /// 鍏О鐩村緞
         /// </summary>
-        [DisplayName("鐩村緞")]
-        public double Diameter { get; set; }
+        [DisplayName("鍏О鐩村緞(m)")]
+        public double DN { get; set; }
 
         /// <summary>
         /// 鏈�灏忓绉�
         /// </summary>
-        [DisplayName("鏈�灏忓绉�")]
+        [DisplayName("鏈�灏忓绉�(m鲁)")]
         public double MinVol { get; set; }
 
         /// <summary>
@@ -85,6 +87,12 @@
         public string VolCurve { get; set; }
 
         /// <summary>
+        /// 鍏佽婧㈡祦
+        /// </summary>
+        [DisplayName("鍏佽婧㈡祦")]
+        public bool OverFlow { get; set; }
+
+        /// <summary>
         /// 
         /// </summary>
         public new Yw.Model.HydroTankInfo Vmo { get; set; }
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/16-waterbox/HydroWaterboxListCtrl.Designer.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/01-source/02-tank/01-waterbox/HydroWaterboxListCtrl.Designer.cs
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/16-waterbox/HydroWaterboxListCtrl.Designer.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/01-source/02-tank/01-waterbox/HydroWaterboxListCtrl.Designer.cs
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/16-waterbox/HydroWaterboxListCtrl.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/01-source/02-tank/01-waterbox/HydroWaterboxListCtrl.cs
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/16-waterbox/HydroWaterboxListCtrl.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/01-source/02-tank/01-waterbox/HydroWaterboxListCtrl.cs
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/16-waterbox/HydroWaterboxListCtrl.resx b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/01-source/02-tank/01-waterbox/HydroWaterboxListCtrl.resx
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/16-waterbox/HydroWaterboxListCtrl.resx
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/01-source/02-tank/01-waterbox/HydroWaterboxListCtrl.resx
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/16-waterbox/HydroWaterboxViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/01-source/02-tank/01-waterbox/HydroWaterboxViewModel.cs
similarity index 93%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/16-waterbox/HydroWaterboxViewModel.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/01-source/02-tank/01-waterbox/HydroWaterboxViewModel.cs
index fdb5398..3e9729d 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/16-waterbox/HydroWaterboxViewModel.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/01-source/02-tank/01-waterbox/HydroWaterboxViewModel.cs
@@ -8,7 +8,7 @@
         /// <summary>
         /// 
         /// </summary>
-        public HydroWaterboxViewModel() { }
+        public HydroWaterboxViewModel() : base() { }
 
         /// <summary>
         /// 
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/01-junction/HydroJunctionListCtrl.Designer.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/00-core/HydroJunctionListCtrl.Designer.cs
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/01-junction/HydroJunctionListCtrl.Designer.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/00-core/HydroJunctionListCtrl.Designer.cs
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/01-junction/HydroJunctionListCtrl.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/00-core/HydroJunctionListCtrl.cs
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/01-junction/HydroJunctionListCtrl.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/00-core/HydroJunctionListCtrl.cs
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/01-junction/HydroJunctionListCtrl.resx b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/00-core/HydroJunctionListCtrl.resx
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/01-junction/HydroJunctionListCtrl.resx
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/00-core/HydroJunctionListCtrl.resx
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/01-junction/HydroJunctionViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/00-core/HydroJunctionViewModel.cs
similarity index 86%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/01-junction/HydroJunctionViewModel.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/00-core/HydroJunctionViewModel.cs
index 650b1e0..563ff80 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/01-junction/HydroJunctionViewModel.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/00-core/HydroJunctionViewModel.cs
@@ -16,6 +16,7 @@
         public HydroJunctionViewModel(Yw.Model.HydroJunctionInfo rhs) : base(rhs)
         {
             this.Elev = rhs.Elev;
+            this.MinorLoss = rhs.MinorLoss;
             this.Demand = rhs.Demand;
             this.DemandPattern = rhs.DemandPattern;
 
@@ -28,6 +29,7 @@
         public HydroJunctionViewModel(Yw.Model.HydroJunctionInfo rhs, Yw.WinFrmUI.HydroCalcuNodeResult calcuResult) : base(rhs, calcuResult)
         {
             this.Elev = rhs.Elev;
+            this.MinorLoss = rhs.MinorLoss;
             this.Demand = rhs.Demand;
             this.DemandPattern = rhs.DemandPattern;
 
@@ -42,6 +44,12 @@
         public double Elev { get; set; }
 
         /// <summary>
+        /// 灞�闃荤郴鏁�
+        /// </summary>
+        [DisplayName("灞�闃荤郴鏁�")]
+        public double? MinorLoss { get; set; }
+
+        /// <summary>
         /// 闇�姘撮噺(m鲁/h)
         /// </summary>
         [DisplayName("闇�姘撮噺(m鲁/h)")]
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/01-coupling/00-core/HydroCouplingViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/01-coupling/00-core/HydroCouplingViewModel.cs
new file mode 100644
index 0000000..781e74c
--- /dev/null
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/01-coupling/00-core/HydroCouplingViewModel.cs
@@ -0,0 +1,54 @@
+锘縩amespace Yw.WinFrmUI
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public class HydroCouplingViewModel : HydroJunctionViewModel
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        public HydroCouplingViewModel() { }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public HydroCouplingViewModel(Yw.Model.HydroCouplingInfo rhs) : base(rhs)
+        {
+            this.Material = rhs.Material;
+            this.Caliber = rhs.Caliber;
+
+            this.Vmo = rhs;
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public HydroCouplingViewModel(Yw.Model.HydroCouplingInfo rhs, Yw.WinFrmUI.HydroCalcuNodeResult calcuResult) : base(rhs, calcuResult)
+        {
+            this.Material = rhs.Material;
+            this.Caliber = rhs.Caliber;
+
+            this.Vmo = rhs;
+        }
+
+        /// <summary>
+        /// 鏉愯川
+        /// </summary>
+        [DisplayName("鏉愯川")]
+        public string Material { get; set; }
+
+        /// <summary>
+        /// 鍙e緞(mm)
+        /// </summary>
+        [DisplayName("鍙e緞(mm)")]
+        public double? Caliber { get; set; }
+
+        /// <summary>
+        /// Vmo
+        /// </summary>
+        [Browsable(false)]
+        public new Yw.Model.HydroCouplingInfo Vmo { get; set; }
+
+    }
+}
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/09-blunthead/HydroBluntheadListCtrl.Designer.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/01-coupling/01-blunthead/HydroBluntheadListCtrl.Designer.cs
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/09-blunthead/HydroBluntheadListCtrl.Designer.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/01-coupling/01-blunthead/HydroBluntheadListCtrl.Designer.cs
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/09-blunthead/HydroBluntheadListCtrl.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/01-coupling/01-blunthead/HydroBluntheadListCtrl.cs
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/09-blunthead/HydroBluntheadListCtrl.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/01-coupling/01-blunthead/HydroBluntheadListCtrl.cs
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/09-blunthead/HydroBluntheadListCtrl.resx b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/01-coupling/01-blunthead/HydroBluntheadListCtrl.resx
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/09-blunthead/HydroBluntheadListCtrl.resx
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/01-coupling/01-blunthead/HydroBluntheadListCtrl.resx
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/09-blunthead/HydroBluntheadViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/01-coupling/01-blunthead/HydroBluntheadViewModel.cs
similarity index 93%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/09-blunthead/HydroBluntheadViewModel.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/01-coupling/01-blunthead/HydroBluntheadViewModel.cs
index dfaa6d5..4ff8749 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/09-blunthead/HydroBluntheadViewModel.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/01-coupling/01-blunthead/HydroBluntheadViewModel.cs
@@ -8,7 +8,7 @@
         /// <summary>
         /// 
         /// </summary>
-        public HydroBluntheadViewModel() { }
+        public HydroBluntheadViewModel() : base() { }
 
         /// <summary>
         /// 
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/06-elbow/HydroElbowListCtrl.Designer.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/01-coupling/02-elbow/HydroElbowListCtrl.Designer.cs
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/06-elbow/HydroElbowListCtrl.Designer.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/01-coupling/02-elbow/HydroElbowListCtrl.Designer.cs
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/06-elbow/HydroElbowListCtrl.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/01-coupling/02-elbow/HydroElbowListCtrl.cs
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/06-elbow/HydroElbowListCtrl.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/01-coupling/02-elbow/HydroElbowListCtrl.cs
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/06-elbow/HydroElbowListCtrl.resx b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/01-coupling/02-elbow/HydroElbowListCtrl.resx
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/06-elbow/HydroElbowListCtrl.resx
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/01-coupling/02-elbow/HydroElbowListCtrl.resx
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/01-coupling/02-elbow/HydroElbowViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/01-coupling/02-elbow/HydroElbowViewModel.cs
new file mode 100644
index 0000000..dc910cc
--- /dev/null
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/01-coupling/02-elbow/HydroElbowViewModel.cs
@@ -0,0 +1,53 @@
+锘縩amespace Yw.WinFrmUI
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public class HydroElbowViewModel : HydroCouplingViewModel
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        public HydroElbowViewModel() : base() { }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public HydroElbowViewModel(Yw.Model.HydroElbowInfo rhs) : base(rhs)
+        {
+            this.BendingAngle = rhs.BendingAngle;
+            this.ElbowType = rhs.ElbowType;
+
+            this.Vmo = rhs;
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public HydroElbowViewModel(Yw.Model.HydroElbowInfo rhs, Yw.WinFrmUI.HydroCalcuNodeResult calcuResult) : base(rhs, calcuResult)
+        {
+            this.BendingAngle = rhs.BendingAngle;
+            this.ElbowType = rhs.ElbowType;
+
+            this.Vmo = rhs;
+        }
+
+        /// <summary>
+        /// 寮洸瑙掑害
+        /// </summary>
+        [DisplayName("寮洸瑙掑害(掳)")]
+        public double? BendingAngle { get; set; }
+
+        /// <summary>
+        /// 寮ご绫诲瀷
+        /// </summary>
+        [DisplayName("寮ご绫诲瀷")]
+        public string ElbowType { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public new Yw.Model.HydroElbowInfo Vmo { get; set; }
+
+    }
+}
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/07-threelink/HydroThreelinkListCtrl.Designer.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/01-coupling/03-threelink/HydroThreelinkListCtrl.Designer.cs
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/07-threelink/HydroThreelinkListCtrl.Designer.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/01-coupling/03-threelink/HydroThreelinkListCtrl.Designer.cs
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/07-threelink/HydroThreelinkListCtrl.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/01-coupling/03-threelink/HydroThreelinkListCtrl.cs
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/07-threelink/HydroThreelinkListCtrl.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/01-coupling/03-threelink/HydroThreelinkListCtrl.cs
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/07-threelink/HydroThreelinkListCtrl.resx b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/01-coupling/03-threelink/HydroThreelinkListCtrl.resx
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/07-threelink/HydroThreelinkListCtrl.resx
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/01-coupling/03-threelink/HydroThreelinkListCtrl.resx
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/01-coupling/03-threelink/HydroThreelinkViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/01-coupling/03-threelink/HydroThreelinkViewModel.cs
new file mode 100644
index 0000000..a6ed836
--- /dev/null
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/01-coupling/03-threelink/HydroThreelinkViewModel.cs
@@ -0,0 +1,53 @@
+锘縩amespace Yw.WinFrmUI
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public class HydroThreelinkViewModel : HydroCouplingViewModel
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        public HydroThreelinkViewModel() : base() { }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public HydroThreelinkViewModel(Yw.Model.HydroThreelinkInfo rhs) : base(rhs)
+        {
+            this.RunningThroughLoss = rhs.RunningThroughLoss;
+            this.BranchThroughLoss = rhs.BranchThroughLoss;
+
+            this.Vmo = rhs;
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public HydroThreelinkViewModel(Yw.Model.HydroThreelinkInfo rhs, Yw.WinFrmUI.HydroCalcuNodeResult calcuResult) : base(rhs, calcuResult)
+        {
+            this.RunningThroughLoss = rhs.RunningThroughLoss;
+            this.BranchThroughLoss = rhs.BranchThroughLoss;
+
+            this.Vmo = rhs;
+        }
+
+        /// <summary>
+        /// 杩愯閫氳繃
+        /// </summary>
+        [DisplayName("杩愯閫氳繃")]
+        public double? RunningThroughLoss { get; set; }
+
+        /// <summary>
+        /// 鏀閫氳繃
+        /// </summary>
+        [DisplayName("鏀閫氳繃")]
+        public double? BranchThroughLoss { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public new Yw.Model.HydroThreelinkInfo Vmo { get; set; }
+
+    }
+}
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/08-fourlink/HydroFourlinkListCtrl.Designer.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/01-coupling/04-fourlink/HydroFourlinkListCtrl.Designer.cs
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/08-fourlink/HydroFourlinkListCtrl.Designer.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/01-coupling/04-fourlink/HydroFourlinkListCtrl.Designer.cs
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/08-fourlink/HydroFourlinkListCtrl.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/01-coupling/04-fourlink/HydroFourlinkListCtrl.cs
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/08-fourlink/HydroFourlinkListCtrl.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/01-coupling/04-fourlink/HydroFourlinkListCtrl.cs
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/08-fourlink/HydroFourlinkListCtrl.resx b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/01-coupling/04-fourlink/HydroFourlinkListCtrl.resx
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/08-fourlink/HydroFourlinkListCtrl.resx
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/01-coupling/04-fourlink/HydroFourlinkListCtrl.resx
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/08-fourlink/HydroFourlinkViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/01-coupling/04-fourlink/HydroFourlinkViewModel.cs
similarity index 85%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/08-fourlink/HydroFourlinkViewModel.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/01-coupling/04-fourlink/HydroFourlinkViewModel.cs
index 1035afd..caeb419 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/08-fourlink/HydroFourlinkViewModel.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/01-coupling/04-fourlink/HydroFourlinkViewModel.cs
@@ -3,12 +3,12 @@
     /// <summary>
     /// 
     /// </summary>
-    public class HydroFourlinkViewModel : HydroConnectViewModel
+    public class HydroFourlinkViewModel : HydroCouplingViewModel
     {
         /// <summary>
         /// 
         /// </summary>
-        public HydroFourlinkViewModel() { }
+        public HydroFourlinkViewModel() : base() { }
 
         /// <summary>
         /// 
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-emitter/HydroEmitterViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/02-emitter/00-core/HydroEmitterViewModel.cs
similarity index 89%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-emitter/HydroEmitterViewModel.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/02-emitter/00-core/HydroEmitterViewModel.cs
index 628c14a..312c444 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-emitter/HydroEmitterViewModel.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/02-emitter/00-core/HydroEmitterViewModel.cs
@@ -8,7 +8,7 @@
         /// <summary>
         /// 
         /// </summary>
-        public HydroEmitterViewModel() { }
+        public HydroEmitterViewModel() : base() { }
 
         /// <summary>
         /// 
@@ -29,9 +29,9 @@
         }
 
         /// <summary>
-        /// 娴侀噺绯绘暟
+        /// 鍠峰皠绯绘暟
         /// </summary>
-        [DisplayName("娴侀噺绯绘暟")]
+        [DisplayName("鍠峰皠绯绘暟")]
         public double Coefficient { get; set; }
 
         /// <summary>
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/04-hydrant/HydroHydrantListCtrl.Designer.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/02-emitter/01-hydrant/HydroHydrantListCtrl.Designer.cs
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/04-hydrant/HydroHydrantListCtrl.Designer.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/02-emitter/01-hydrant/HydroHydrantListCtrl.Designer.cs
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/04-hydrant/HydroHydrantListCtrl.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/02-emitter/01-hydrant/HydroHydrantListCtrl.cs
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/04-hydrant/HydroHydrantListCtrl.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/02-emitter/01-hydrant/HydroHydrantListCtrl.cs
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/04-hydrant/HydroHydrantListCtrl.resx b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/02-emitter/01-hydrant/HydroHydrantListCtrl.resx
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/04-hydrant/HydroHydrantListCtrl.resx
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/02-emitter/01-hydrant/HydroHydrantListCtrl.resx
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/04-hydrant/HydroHydrantViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/02-emitter/01-hydrant/HydroHydrantViewModel.cs
similarity index 93%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/04-hydrant/HydroHydrantViewModel.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/02-emitter/01-hydrant/HydroHydrantViewModel.cs
index f6e8359..206f3e0 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/04-hydrant/HydroHydrantViewModel.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/02-emitter/01-hydrant/HydroHydrantViewModel.cs
@@ -8,7 +8,7 @@
         /// <summary>
         /// 
         /// </summary>
-        public HydroHydrantViewModel() { }
+        public HydroHydrantViewModel() : base() { }
 
         /// <summary>
         /// 
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-nozzle/HydroNozzleListCtrl.Designer.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/02-emitter/02-nozzle/HydroNozzleListCtrl.Designer.cs
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-nozzle/HydroNozzleListCtrl.Designer.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/02-emitter/02-nozzle/HydroNozzleListCtrl.Designer.cs
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-nozzle/HydroNozzleListCtrl.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/02-emitter/02-nozzle/HydroNozzleListCtrl.cs
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-nozzle/HydroNozzleListCtrl.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/02-emitter/02-nozzle/HydroNozzleListCtrl.cs
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-nozzle/HydroNozzleListCtrl.resx b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/02-emitter/02-nozzle/HydroNozzleListCtrl.resx
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-nozzle/HydroNozzleListCtrl.resx
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/02-emitter/02-nozzle/HydroNozzleListCtrl.resx
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-nozzle/HydroNozzleViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/02-emitter/02-nozzle/HydroNozzleViewModel.cs
similarity index 93%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-nozzle/HydroNozzleViewModel.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/02-emitter/02-nozzle/HydroNozzleViewModel.cs
index e44fbb3..f1cac2e 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-nozzle/HydroNozzleViewModel.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/02-emitter/02-nozzle/HydroNozzleViewModel.cs
@@ -8,7 +8,7 @@
         /// <summary>
         /// 
         /// </summary>
-        public HydroNozzleViewModel() { }
+        public HydroNozzleViewModel() : base() { }
 
         /// <summary>
         /// 
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/10-meter/HydroMeterListCtrl.Designer.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/03-meter/HydroMeterListCtrl.Designer.cs
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/10-meter/HydroMeterListCtrl.Designer.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/03-meter/HydroMeterListCtrl.Designer.cs
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/10-meter/HydroMeterListCtrl.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/03-meter/HydroMeterListCtrl.cs
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/10-meter/HydroMeterListCtrl.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/03-meter/HydroMeterListCtrl.cs
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/10-meter/HydroMeterListCtrl.resx b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/03-meter/HydroMeterListCtrl.resx
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/10-meter/HydroMeterListCtrl.resx
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/03-meter/HydroMeterListCtrl.resx
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/10-meter/HydroMeterViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/03-meter/HydroMeterViewModel.cs
similarity index 93%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/10-meter/HydroMeterViewModel.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/03-meter/HydroMeterViewModel.cs
index 3704bb3..f69d494 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/10-meter/HydroMeterViewModel.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/03-meter/HydroMeterViewModel.cs
@@ -8,7 +8,7 @@
         /// <summary>
         /// 
         /// </summary>
-        public HydroMeterViewModel() { }
+        public HydroMeterViewModel() : base() { }
 
         /// <summary>
         /// 
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/11-flowmeter/HydroFlowmeterListCtrl.Designer.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/04-other/01-flowmeter/HydroFlowmeterListCtrl.Designer.cs
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/11-flowmeter/HydroFlowmeterListCtrl.Designer.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/04-other/01-flowmeter/HydroFlowmeterListCtrl.Designer.cs
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/11-flowmeter/HydroFlowmeterListCtrl.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/04-other/01-flowmeter/HydroFlowmeterListCtrl.cs
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/11-flowmeter/HydroFlowmeterListCtrl.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/04-other/01-flowmeter/HydroFlowmeterListCtrl.cs
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/11-flowmeter/HydroFlowmeterListCtrl.resx b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/04-other/01-flowmeter/HydroFlowmeterListCtrl.resx
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/11-flowmeter/HydroFlowmeterListCtrl.resx
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/04-other/01-flowmeter/HydroFlowmeterListCtrl.resx
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/11-flowmeter/HydroFlowmeterViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/04-other/01-flowmeter/HydroFlowmeterViewModel.cs
similarity index 93%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/11-flowmeter/HydroFlowmeterViewModel.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/04-other/01-flowmeter/HydroFlowmeterViewModel.cs
index 41b15d3..024c9c9 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/11-flowmeter/HydroFlowmeterViewModel.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/04-other/01-flowmeter/HydroFlowmeterViewModel.cs
@@ -8,7 +8,7 @@
         /// <summary>
         /// 
         /// </summary>
-        public HydroFlowmeterViewModel() { }
+        public HydroFlowmeterViewModel() : base() { }
 
         /// <summary>
         /// 
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/12-pressmeter/HydroPressmeterListCtrl.Designer.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/04-other/02-pressmeter/HydroPressmeterListCtrl.Designer.cs
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/12-pressmeter/HydroPressmeterListCtrl.Designer.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/04-other/02-pressmeter/HydroPressmeterListCtrl.Designer.cs
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/12-pressmeter/HydroPressmeterListCtrl.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/04-other/02-pressmeter/HydroPressmeterListCtrl.cs
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/12-pressmeter/HydroPressmeterListCtrl.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/04-other/02-pressmeter/HydroPressmeterListCtrl.cs
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/12-pressmeter/HydroPressmeterListCtrl.resx b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/04-other/02-pressmeter/HydroPressmeterListCtrl.resx
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/12-pressmeter/HydroPressmeterListCtrl.resx
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/04-other/02-pressmeter/HydroPressmeterListCtrl.resx
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/12-pressmeter/HydroPressmeterViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/04-other/02-pressmeter/HydroPressmeterViewModel.cs
similarity index 93%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/12-pressmeter/HydroPressmeterViewModel.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/04-other/02-pressmeter/HydroPressmeterViewModel.cs
index 24cad94..5812713 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/12-pressmeter/HydroPressmeterViewModel.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/02-node/02-junction/04-other/02-pressmeter/HydroPressmeterViewModel.cs
@@ -8,7 +8,7 @@
         /// <summary>
         /// 
         /// </summary>
-        public HydroPressmeterViewModel() { }
+        public HydroPressmeterViewModel() : base() { }
 
         /// <summary>
         /// 
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/17-pipe/HydroLinkViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-link/00-core/HydroLinkViewModel.cs
similarity index 80%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/17-pipe/HydroLinkViewModel.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-link/00-core/HydroLinkViewModel.cs
index 55f55e6..6056178 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/17-pipe/HydroLinkViewModel.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-link/00-core/HydroLinkViewModel.cs
@@ -3,13 +3,13 @@
     /// <summary>
     /// 
     /// </summary>
-    public class HydroLinkViewModel : HydroParterViewModel
+    public class HydroLinkViewModel : HydroVisualViewModel
     {
 
         /// <summary>
         /// 
         /// </summary>
-        public HydroLinkViewModel() { }
+        public HydroLinkViewModel() : base() { }
 
         /// <summary>
         /// 
@@ -19,6 +19,7 @@
             this.StartCode = rhs.StartCode;
             this.EndCode = rhs.EndCode;
             this.LinkStatus = rhs.LinkStatus;
+
             this.Vmo = rhs;
         }
 
@@ -27,9 +28,9 @@
         /// </summary>
         public HydroLinkViewModel(Yw.Model.HydroLinkInfo rhs, Yw.WinFrmUI.HydroCalcuLinkResult calcuResult) : this(rhs)
         {
-            this.CalcuFlow = calcuResult?.CalcuFlow;
-            this.CalcuVelocity = calcuResult?.CalcuVelocity;
-            this.CalcuHeadLoss = calcuResult?.CalcuHeadLoss;
+            this.CalcuFlow = calcuResult?.CalcuFlow ?? Math.Round(calcuResult.CalcuFlow.Value, 1);
+            this.CalcuVelocity = calcuResult?.CalcuVelocity ?? Math.Round(calcuResult.CalcuVelocity.Value, 2);
+            this.CalcuHeadLoss = calcuResult?.CalcuHeadLoss ?? Math.Round(calcuResult.CalcuHeadLoss.Value, 2);
         }
 
         /// <summary>
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/17-pipe/HydroPipeListCtrl.Designer.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-link/01-pipe/00-core/HydroPipeListCtrl.Designer.cs
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/17-pipe/HydroPipeListCtrl.Designer.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-link/01-pipe/00-core/HydroPipeListCtrl.Designer.cs
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/17-pipe/HydroPipeListCtrl.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-link/01-pipe/00-core/HydroPipeListCtrl.cs
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/17-pipe/HydroPipeListCtrl.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-link/01-pipe/00-core/HydroPipeListCtrl.cs
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/17-pipe/HydroPipeListCtrl.resx b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-link/01-pipe/00-core/HydroPipeListCtrl.resx
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/17-pipe/HydroPipeListCtrl.resx
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-link/01-pipe/00-core/HydroPipeListCtrl.resx
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/17-pipe/HydroPipeViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-link/01-pipe/00-core/HydroPipeViewModel.cs
similarity index 97%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/17-pipe/HydroPipeViewModel.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-link/01-pipe/00-core/HydroPipeViewModel.cs
index d25c054..5e6bc79 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/17-pipe/HydroPipeViewModel.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-link/01-pipe/00-core/HydroPipeViewModel.cs
@@ -8,16 +8,16 @@
         /// <summary>
         /// 
         /// </summary>
-        public HydroPipeViewModel() { }
+        public HydroPipeViewModel() : base() { }
 
         /// <summary>
         /// 
         /// </summary>
         public HydroPipeViewModel(Yw.Model.HydroPipeInfo rhs) : base(rhs)
         {
+            this.Material = rhs.Material;
             this.Diameter = rhs.Diameter;
             this.Length = rhs.Length;
-            this.Material = rhs.Material;
             this.Roughness = rhs.Roughness;
             this.MinorLoss = rhs.MinorLoss;
 
@@ -29,9 +29,9 @@
         /// </summary>
         public HydroPipeViewModel(Yw.Model.HydroPipeInfo rhs, Yw.WinFrmUI.HydroCalcuLinkResult calcuResult) : base(rhs, calcuResult)
         {
+            this.Material = rhs.Material;
             this.Diameter = rhs.Diameter;
             this.Length = rhs.Length;
-            this.Material = rhs.Material;
             this.Roughness = rhs.Roughness;
             this.MinorLoss = rhs.MinorLoss;
 
@@ -45,6 +45,12 @@
         public override string LinkStatus { get; set; }
 
         /// <summary>
+        /// 鏉愯川
+        /// </summary>
+        [DisplayName("鏉愯川")]
+        public string Material { get; set; }
+
+        /// <summary>
         /// 鐩村緞锛坢m锛�
         /// </summary>
         [DisplayName("鐩村緞(mm)")]
@@ -55,12 +61,6 @@
         /// </summary>
         [DisplayName("闀垮害(m)")]
         public double Length { get; set; }
-
-        /// <summary>
-        /// 鏉愯川
-        /// </summary>
-        [DisplayName("鏉愯川")]
-        public string Material { get; set; }
 
         /// <summary>
         /// 绮楃硻绯绘暟
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/19-translation/HydroTranslationListCtrl.Designer.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-link/01-pipe/01-translation/HydroTranslationListCtrl.Designer.cs
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/19-translation/HydroTranslationListCtrl.Designer.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-link/01-pipe/01-translation/HydroTranslationListCtrl.Designer.cs
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/19-translation/HydroTranslationListCtrl.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-link/01-pipe/01-translation/HydroTranslationListCtrl.cs
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/19-translation/HydroTranslationListCtrl.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-link/01-pipe/01-translation/HydroTranslationListCtrl.cs
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/19-translation/HydroTranslationListCtrl.resx b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-link/01-pipe/01-translation/HydroTranslationListCtrl.resx
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/19-translation/HydroTranslationListCtrl.resx
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-link/01-pipe/01-translation/HydroTranslationListCtrl.resx
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/19-translation/HydroTranslationViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-link/01-pipe/01-translation/HydroTranslationViewModel.cs
similarity index 93%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/19-translation/HydroTranslationViewModel.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-link/01-pipe/01-translation/HydroTranslationViewModel.cs
index b06d58d..f64bfb7 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/19-translation/HydroTranslationViewModel.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-link/01-pipe/01-translation/HydroTranslationViewModel.cs
@@ -8,7 +8,7 @@
         /// <summary>
         /// 
         /// </summary>
-        public HydroTranslationViewModel() { }
+        public HydroTranslationViewModel() : base() { }
 
         /// <summary>
         /// 
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/18-exchanger/HydroExchangerListCtrl.Designer.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-link/01-pipe/02-exchanger/HydroExchangerListCtrl.Designer.cs
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/18-exchanger/HydroExchangerListCtrl.Designer.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-link/01-pipe/02-exchanger/HydroExchangerListCtrl.Designer.cs
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/18-exchanger/HydroExchangerListCtrl.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-link/01-pipe/02-exchanger/HydroExchangerListCtrl.cs
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/18-exchanger/HydroExchangerListCtrl.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-link/01-pipe/02-exchanger/HydroExchangerListCtrl.cs
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/18-exchanger/HydroExchangerListCtrl.resx b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-link/01-pipe/02-exchanger/HydroExchangerListCtrl.resx
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/18-exchanger/HydroExchangerListCtrl.resx
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-link/01-pipe/02-exchanger/HydroExchangerListCtrl.resx
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/18-exchanger/HydroExchangerViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-link/01-pipe/02-exchanger/HydroExchangerViewModel.cs
similarity index 93%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/18-exchanger/HydroExchangerViewModel.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-link/01-pipe/02-exchanger/HydroExchangerViewModel.cs
index 3b1bbb0..fd43abf 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/18-exchanger/HydroExchangerViewModel.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-link/01-pipe/02-exchanger/HydroExchangerViewModel.cs
@@ -8,7 +8,7 @@
         /// <summary>
         /// 
         /// </summary>
-        public HydroExchangerViewModel() { }
+        public HydroExchangerViewModel() : base() { }
 
         /// <summary>
         /// 
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/20-pump/HydroPumpListCtrl.Designer.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-link/02-pump/HydroPumpListCtrl.Designer.cs
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/20-pump/HydroPumpListCtrl.Designer.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-link/02-pump/HydroPumpListCtrl.Designer.cs
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/20-pump/HydroPumpListCtrl.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-link/02-pump/HydroPumpListCtrl.cs
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/20-pump/HydroPumpListCtrl.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-link/02-pump/HydroPumpListCtrl.cs
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/20-pump/HydroPumpListCtrl.resx b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-link/02-pump/HydroPumpListCtrl.resx
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/20-pump/HydroPumpListCtrl.resx
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-link/02-pump/HydroPumpListCtrl.resx
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/20-pump/HydroPumpViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-link/02-pump/HydroPumpViewModel.cs
similarity index 76%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/20-pump/HydroPumpViewModel.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-link/02-pump/HydroPumpViewModel.cs
index 35db70a..c534278 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/20-pump/HydroPumpViewModel.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-link/02-pump/HydroPumpViewModel.cs
@@ -19,14 +19,16 @@
             this.RatedQ = rhs.RatedQ;
             this.RatedH = rhs.RatedH;
             this.RatedN = rhs.RatedN;
+            this.RatedHz = rhs.RatedHz;
+            this.SpeedRatio = rhs.SpeedRatio;
+            this.SpeedRatioPattern = rhs.SpeedRatioPattern;
             this.CurveQH = rhs.CurveQH;
             this.CurveQP = rhs.CurveQP;
             this.CurveQE = rhs.CurveQE;
-            this.SpeedRatio = rhs.SpeedRatio;
-            this.SpeedRatioPattern = rhs.SpeedRatioPattern;
             this.Price = rhs.Price;
             this.PricePattern = rhs.PricePattern;
 
+            this.Curve = string.IsNullOrEmpty(rhs.CurveQH) ? "鏈缃�" : "宸茶缃�";
             this.Vmo = rhs;
         }
 
@@ -39,14 +41,16 @@
             this.RatedQ = rhs.RatedQ;
             this.RatedH = rhs.RatedH;
             this.RatedN = rhs.RatedN;
+            this.RatedHz = rhs.RatedHz;
+            this.SpeedRatio = rhs.SpeedRatio;
+            this.SpeedRatioPattern = rhs.SpeedRatioPattern;
             this.CurveQH = rhs.CurveQH;
             this.CurveQP = rhs.CurveQP;
             this.CurveQE = rhs.CurveQE;
-            this.SpeedRatio = rhs.SpeedRatio;
-            this.SpeedRatioPattern = rhs.SpeedRatioPattern;
             this.Price = rhs.Price;
             this.PricePattern = rhs.PricePattern;
 
+            this.Curve = string.IsNullOrEmpty(rhs.CurveQH) ? "鏈缃�" : "宸茶缃�";
             this.Vmo = rhs;
         }
 
@@ -75,6 +79,47 @@
         public double? RatedN { get; set; }
 
         /// <summary>
+        /// 棰濆畾棰戠巼(hz)
+        /// </summary>
+        [DisplayName("棰濆畾棰戠巼(hz)")]
+        public double RatedHz { get; set; }
+
+        /// <summary>
+        /// 棰戠巼(hz)
+        /// </summary>
+        [DisplayName("棰戠巼(hz)")]
+        public double CurrentHz
+        {
+            get { return this.SpeedRatio * this.RatedHz; }
+            set
+            {
+                if (this.RatedHz <= 0)
+                {
+                    return;
+                }
+                this.SpeedRatio = value / this.RatedHz;
+            }
+        }
+
+        /// <summary>
+        /// 杞�熸瘮
+        /// </summary>
+        [DisplayName("杞�熸瘮")]
+        public double SpeedRatio { get; set; }
+
+        /// <summary>
+        /// 杞�熸瘮妯″紡
+        /// </summary>
+        [DisplayName("杞�熸瘮妯″紡")]
+        public string SpeedRatioPattern { get; set; }
+
+        /// <summary>
+        /// 鎬ц兘鏇茬嚎
+        /// </summary>
+        [DisplayName("鎬ц兘鏇茬嚎")]
+        public string Curve { get; set; }
+
+        /// <summary>
         /// 娴侀噺鎵▼鏇茬嚎
         /// </summary>
         [DisplayName("娴侀噺鎵▼鏇茬嚎")]
@@ -91,18 +136,6 @@
         /// </summary>
         [DisplayName("娴侀噺鏁堢巼鏇茬嚎")]
         public string CurveQE { get; set; }
-
-        /// <summary>
-        /// 杞�熸瘮
-        /// </summary>
-        [DisplayName("杞�熸瘮")]
-        public double? SpeedRatio { get; set; }
-
-        /// <summary>
-        /// 杞�熸瘮妯″紡
-        /// </summary>
-        [DisplayName("杞�熸瘮妯″紡")]
-        public string SpeedRatioPattern { get; set; }
 
         /// <summary>
         /// 鑳借�椾环鏍�
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/21-valve/HydroValveListCtrl.Designer.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-link/03-valve/HydroValveListCtrl.Designer.cs
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/21-valve/HydroValveListCtrl.Designer.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-link/03-valve/HydroValveListCtrl.Designer.cs
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/21-valve/HydroValveListCtrl.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-link/03-valve/HydroValveListCtrl.cs
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/21-valve/HydroValveListCtrl.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-link/03-valve/HydroValveListCtrl.cs
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/21-valve/HydroValveListCtrl.resx b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-link/03-valve/HydroValveListCtrl.resx
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/21-valve/HydroValveListCtrl.resx
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-link/03-valve/HydroValveListCtrl.resx
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/21-valve/HydroValveViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-link/03-valve/HydroValveViewModel.cs
similarity index 77%
rename from WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/21-valve/HydroValveViewModel.cs
rename to WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-link/03-valve/HydroValveViewModel.cs
index c67beb4..b1e515a 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/21-valve/HydroValveViewModel.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-link/03-valve/HydroValveViewModel.cs
@@ -8,16 +8,18 @@
         /// <summary>
         /// 
         /// </summary>
-        public HydroValveViewModel() { }
+        public HydroValveViewModel() : base() { }
 
         /// <summary>
         /// 
         /// </summary>
         public HydroValveViewModel(Yw.Model.HydroValveInfo rhs) : base(rhs)
         {
+            this.Material = rhs.Material;
             this.Diameter = rhs.Diameter;
             this.MinorLoss = rhs.MinorLoss;
             this.ValveType = rhs.ValveType;
+            this.OpeningDegree = rhs.OpeningDegree;
             this.ValveSetting = rhs.ValveSetting;
 
             this.Vmo = rhs;
@@ -28,9 +30,11 @@
         /// </summary>
         public HydroValveViewModel(Yw.Model.HydroValveInfo rhs, Yw.WinFrmUI.HydroCalcuLinkResult calcuResult) : base(rhs, calcuResult)
         {
+            this.Material = rhs.Material;
             this.Diameter = rhs.Diameter;
             this.MinorLoss = rhs.MinorLoss;
             this.ValveType = rhs.ValveType;
+            this.OpeningDegree = rhs.OpeningDegree;
             this.ValveSetting = rhs.ValveSetting;
 
             this.Vmo = rhs;
@@ -42,6 +46,12 @@
         /// </summary>
         [DisplayName("闃�闂ㄧ姸鎬�")]
         public override string LinkStatus { get; set; }
+
+        /// <summary>
+        /// 鏉愯川
+        /// </summary>
+        [DisplayName("鏉愯川")]
+        public string Material { get; set; }
 
         /// <summary>
         /// 鐩村緞(mm)
@@ -62,6 +72,12 @@
         public string ValveType { get; set; }
 
         /// <summary>
+        /// 闃�闂ㄥ紑搴�
+        /// </summary>
+        [DisplayName("闃�闂ㄥ紑搴�")]
+        public double OpeningDegree { get; set; }
+
+        /// <summary>
         /// 闃�闂ㄨ缃�
         /// </summary>
         [DisplayName("闃�闂ㄨ缃�")]
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/05-connect/HydroConnectViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/05-connect/HydroConnectViewModel.cs
deleted file mode 100644
index ba72a47..0000000
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/05-connect/HydroConnectViewModel.cs
+++ /dev/null
@@ -1,60 +0,0 @@
-锘縩amespace Yw.WinFrmUI
-{
-    /// <summary>
-    /// 
-    /// </summary>
-    public class HydroConnectViewModel : HydroJunctionViewModel
-    {
-        /// <summary>
-        /// 
-        /// </summary>
-        public HydroConnectViewModel() { }
-
-        /// <summary>
-        /// 
-        /// </summary>
-        public HydroConnectViewModel(Yw.Model.HydroConnectInfo rhs) : base(rhs)
-        {
-            this.Material = rhs.Material;
-            this.Caliber = rhs.Caliber;
-            this.MinorLoss = rhs.MinorLoss;
-            this.Vmo = rhs;
-        }
-
-        /// <summary>
-        /// 
-        /// </summary>
-        public HydroConnectViewModel(Yw.Model.HydroConnectInfo rhs, Yw.WinFrmUI.HydroCalcuNodeResult calcuResult) : base(rhs, calcuResult)
-        {
-            this.Material = rhs.Material;
-            this.Caliber = rhs.Caliber;
-            this.MinorLoss = rhs.MinorLoss;
-            this.Vmo = rhs;
-        }
-
-        /// <summary>
-        /// 鏉愯川
-        /// </summary>
-        [DisplayName("鏉愯川")]
-        public string Material { get; set; }
-
-        /// <summary>
-        /// 鍙e緞(mm)
-        /// </summary>
-        [DisplayName("鍙e緞(mm)")]
-        public double? Caliber { get; set; }
-
-        /// <summary>
-        /// 灞�闃荤郴鏁�
-        /// </summary>
-        [DisplayName("灞�闃荤郴鏁�")]
-        public double? MinorLoss { get; set; }
-
-        /// <summary>
-        /// Vmo
-        /// </summary>
-        [Browsable(false)]
-        public new Yw.Model.HydroConnectInfo Vmo { get; set; }
-
-    }
-}
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/06-elbow/HydroElbowViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/06-elbow/HydroElbowViewModel.cs
deleted file mode 100644
index 2c21a6d..0000000
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/06-elbow/HydroElbowViewModel.cs
+++ /dev/null
@@ -1,35 +0,0 @@
-锘縩amespace Yw.WinFrmUI
-{
-    /// <summary>
-    /// 
-    /// </summary>
-    public class HydroElbowViewModel : HydroConnectViewModel
-    {
-        /// <summary>
-        /// 
-        /// </summary>
-        public HydroElbowViewModel() { }
-
-        /// <summary>
-        /// 
-        /// </summary>
-        public HydroElbowViewModel(Yw.Model.HydroElbowInfo rhs) : base(rhs)
-        {
-            this.Vmo = rhs;
-        }
-
-        /// <summary>
-        /// 
-        /// </summary>
-        public HydroElbowViewModel(Yw.Model.HydroElbowInfo rhs, Yw.WinFrmUI.HydroCalcuNodeResult calcuResult) : base(rhs, calcuResult)
-        {
-            this.Vmo = rhs;
-        }
-
-        /// <summary>
-        /// 
-        /// </summary>
-        public new Yw.Model.HydroElbowInfo Vmo { get; set; }
-
-    }
-}
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/07-threelink/HydroThreelinkViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/07-threelink/HydroThreelinkViewModel.cs
deleted file mode 100644
index e4653a8..0000000
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/07-threelink/HydroThreelinkViewModel.cs
+++ /dev/null
@@ -1,35 +0,0 @@
-锘縩amespace Yw.WinFrmUI
-{
-    /// <summary>
-    /// 
-    /// </summary>
-    public class HydroThreelinkViewModel : HydroConnectViewModel
-    {
-        /// <summary>
-        /// 
-        /// </summary>
-        public HydroThreelinkViewModel() { }
-
-        /// <summary>
-        /// 
-        /// </summary>
-        public HydroThreelinkViewModel(Yw.Model.HydroThreelinkInfo rhs) : base(rhs)
-        {
-            this.Vmo = rhs;
-        }
-
-        /// <summary>
-        /// 
-        /// </summary>
-        public HydroThreelinkViewModel(Yw.Model.HydroThreelinkInfo rhs, Yw.WinFrmUI.HydroCalcuNodeResult calcuResult) : base(rhs, calcuResult)
-        {
-            this.Vmo = rhs;
-        }
-
-        /// <summary>
-        /// 
-        /// </summary>
-        public new Yw.Model.HydroThreelinkInfo Vmo { get; set; }
-
-    }
-}
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/Yw.WinFrmUI.Hydro.Core.csproj b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/Yw.WinFrmUI.Hydro.Core.csproj
index dde0f80..89cecc5 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/Yw.WinFrmUI.Hydro.Core.csproj
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/Yw.WinFrmUI.Hydro.Core.csproj
@@ -10,7 +10,7 @@
   <ItemGroup>
     <PackageReference Include="DevExpress.Win.Design" Version="23.2.4" />
     <PackageReference Include="Yw.BLL.Basic.Core" Version="3.2.8" />
-    <PackageReference Include="Yw.BLL.Hydro.Core" Version="3.2.9" />
+    <PackageReference Include="Yw.BLL.Hydro.Core" Version="3.3.1" />
   </ItemGroup>
 
   <ItemGroup>
@@ -31,52 +31,52 @@
     <Compile Update="03-property\HydroParterPropertyCtrl.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Update="04-parter\09-blunthead\HydroBluntheadListCtrl.cs">
+    <Compile Update="04-parter\02-node\02-junction\01-coupling\01-blunthead\HydroBluntheadListCtrl.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Update="04-parter\12-pressmeter\HydroPressmeterListCtrl.cs">
+    <Compile Update="04-parter\02-node\02-junction\04-other\02-pressmeter\HydroPressmeterListCtrl.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Update="04-parter\11-flowmeter\HydroFlowmeterListCtrl.cs">
+    <Compile Update="04-parter\02-node\02-junction\04-other\01-flowmeter\HydroFlowmeterListCtrl.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Update="04-parter\10-meter\HydroMeterListCtrl.cs">
+    <Compile Update="04-parter\02-node\02-junction\03-meter\HydroMeterListCtrl.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Update="04-parter\08-fourlink\HydroFourlinkListCtrl.cs">
+    <Compile Update="04-parter\02-node\02-junction\01-coupling\04-fourlink\HydroFourlinkListCtrl.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Update="04-parter\07-threelink\HydroThreelinkListCtrl.cs">
+    <Compile Update="04-parter\02-node\02-junction\01-coupling\03-threelink\HydroThreelinkListCtrl.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Update="04-parter\06-elbow\HydroElbowListCtrl.cs">
+    <Compile Update="04-parter\02-node\02-junction\01-coupling\02-elbow\HydroElbowListCtrl.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Update="04-parter\04-hydrant\HydroHydrantListCtrl.cs">
+    <Compile Update="04-parter\02-node\02-junction\02-emitter\01-hydrant\HydroHydrantListCtrl.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Update="04-parter\16-waterbox\HydroWaterboxListCtrl.cs">
+    <Compile Update="04-parter\02-node\01-source\02-tank\01-waterbox\HydroWaterboxListCtrl.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Update="04-parter\15-tank\HydroTankListCtrl.cs">
+    <Compile Update="04-parter\02-node\01-source\02-tank\00-core\HydroTankListCtrl.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Update="04-parter\14-reservoir\HydroReservoirListCtrl.cs">
+    <Compile Update="04-parter\02-node\01-source\01-reservoir\HydroReservoirListCtrl.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Update="04-parter\18-exchanger\HydroExchangerListCtrl.cs">
+    <Compile Update="04-parter\03-link\01-pipe\02-exchanger\HydroExchangerListCtrl.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Update="04-parter\21-valve\HydroValveListCtrl.cs">
+    <Compile Update="04-parter\03-link\03-valve\HydroValveListCtrl.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Update="04-parter\20-pump\HydroPumpListCtrl.cs">
+    <Compile Update="04-parter\03-link\02-pump\HydroPumpListCtrl.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Update="04-parter\19-translation\HydroTranslationListCtrl.cs">
+    <Compile Update="04-parter\03-link\01-pipe\01-translation\HydroTranslationListCtrl.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Update="04-parter\17-pipe\HydroPipeListCtrl.cs">
+    <Compile Update="04-parter\03-link\01-pipe\00-core\HydroPipeListCtrl.cs">
       <SubType>UserControl</SubType>
     </Compile>
     <Compile Update="07-l2d\HydroL2dViewPage.cs">
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/Yw.WinFrmUI.Hydro.Core.csproj.user b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/Yw.WinFrmUI.Hydro.Core.csproj.user
index a97c654..eb038e0 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/Yw.WinFrmUI.Hydro.Core.csproj.user
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/Yw.WinFrmUI.Hydro.Core.csproj.user
@@ -4,16 +4,16 @@
     <Compile Update="01-scene\AddHydroSceneDlg.cs">
       <SubType>Form</SubType>
     </Compile>
-    <Compile Update="03-property\05-curve\HydroCurveViewCtrl.cs">
+    <Compile Update="03-property\06-curve\HydroCurveViewCtrl.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Update="03-property\05-curve\HydroCurveViewDlg.cs">
+    <Compile Update="03-property\06-curve\HydroCurveViewDlg.cs">
       <SubType>Form</SubType>
     </Compile>
-    <Compile Update="03-property\05-curve\SetHydroCurveCtrl.cs">
+    <Compile Update="03-property\06-curve\SetHydroCurveCtrl.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Update="03-property\05-curve\SetHydroCurveDlg.cs">
+    <Compile Update="03-property\06-curve\SetHydroCurveDlg.cs">
       <SubType>Form</SubType>
     </Compile>
     <Compile Update="04-parter\00-core\HydroParterListCtrl.cs">
@@ -22,10 +22,10 @@
     <Compile Update="04-parter\00-core\HydroParterListDlg.cs">
       <SubType>Form</SubType>
     </Compile>
-    <Compile Update="04-parter\01-junction\HydroJunctionListCtrl.cs">
+    <Compile Update="04-parter\02-node\02-junction\00-core\HydroJunctionListCtrl.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Update="04-parter\03-nozzle\HydroNozzleListCtrl.cs">
+    <Compile Update="04-parter\02-node\02-junction\02-emitter\02-nozzle\HydroNozzleListCtrl.cs">
       <SubType>UserControl</SubType>
     </Compile>
     <Compile Update="05-check\01-control\HydroCheckResultCtrl.cs">

--
Gitblit v1.9.3