lixiaojun
2024-11-07 31cca463443f7bc8b6b1bd02889844b864d93e11
Revit解析修改
已删除3个文件
已重命名3个文件
已修改33个文件
已添加2个文件
9214 ■■■■ 文件已修改
Hydro/HStation.Hydro.Core/TransferHelper.cs 332 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Hydro/Yw.Hydro.Core/ParseHelper.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Service/HStation.Service.Revit.Core/00-core/LinkStatus.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Service/HStation.Service.Revit.Core/00-core/PipeStatus.cs 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Service/HStation.Service.Revit.Core/00-core/ValveType.cs 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Service/HStation.Service.Revit.Core/01-model/RevitModel.cs 56 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Service/HStation.Service.Revit.Core/01-model/RevitModel_Method.cs 120 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Service/HStation.Service.Revit.Core/02-parter/00-core/RevitParter.cs 43 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Service/HStation.Service.Revit.Core/02-parter/01-visual/RevitVisual.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Service/HStation.Service.Revit.Core/02-parter/02-node/00-core/RevitNode.cs 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Service/HStation.Service.Revit.Core/02-parter/02-node/01-source/00-core/RevitSource.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Service/HStation.Service.Revit.Core/02-parter/02-node/01-source/01-reservoir/RevitReservoir.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Service/HStation.Service.Revit.Core/02-parter/02-node/01-source/02-tank/RevitTank.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Service/HStation.Service.Revit.Core/02-parter/02-node/01-source/02-tank/RevitWaterbox.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Service/HStation.Service.Revit.Core/02-parter/02-node/02-junction/00-core/RevitJunction.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Service/HStation.Service.Revit.Core/02-parter/02-node/02-junction/01-coupling/00-core/RevitCoupling.cs 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Service/HStation.Service.Revit.Core/02-parter/02-node/02-junction/01-coupling/02-elbow/RevitElbow.cs 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Service/HStation.Service.Revit.Core/02-parter/02-node/02-junction/01-coupling/03-threelink/RevitThreelink.cs 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Service/HStation.Service.Revit.Core/02-parter/02-node/02-junction/01-coupling/04-fourlink/RevitFourlink.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Service/HStation.Service.Revit.Core/02-parter/02-node/02-junction/02-emitter/00-core/RevitEmitter.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Service/HStation.Service.Revit.Core/02-parter/02-node/02-junction/02-emitter/01-nozzle/RevitNozzle.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Service/HStation.Service.Revit.Core/02-parter/02-node/02-junction/02-emitter/02-hydrant/RevitHydrant.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Service/HStation.Service.Revit.Core/02-parter/02-node/02-junction/03-meter/RevitFlowmeter.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Service/HStation.Service.Revit.Core/02-parter/02-node/02-junction/03-meter/RevitMeter.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Service/HStation.Service.Revit.Core/02-parter/02-node/02-junction/03-meter/RevitPressmeter.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Service/HStation.Service.Revit.Core/02-parter/03-link/00-core/RevitLink.cs 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Service/HStation.Service.Revit.Core/02-parter/03-link/01-pipe/RevitCompressor.cs 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Service/HStation.Service.Revit.Core/02-parter/03-link/01-pipe/RevitExchanger.cs 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Service/HStation.Service.Revit.Core/02-parter/03-link/01-pipe/RevitPipe.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Service/HStation.Service.Revit.Core/02-parter/03-link/01-pipe/RevitTranslation.cs 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Service/HStation.Service.Revit.Core/02-parter/03-link/02-pump/RevitPump.cs 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Service/HStation.Service.Revit.Core/02-parter/03-link/03-valve/RevitValve.cs 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Service/HStation.Service.Revit.Core/02-parter/03-link/04-exchanger/RevitExchanger.cs 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Service/HStation.Service.Revit.Core/02-parter/03-link/05-compressor/RevitCompressor.cs 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Service/HStation.Service.Revit.Core/03-decorator/RevitDecorator.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Service/HStation.Service.Revit.Core/04-service/01-json/00-core/RevitJsonProp.cs 161 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Service/HStation.Service.Revit.Core/04-service/01-json/02-helper/RevitParterExtensions.cs 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Service/HStation.Service.Revit.Core/04-service/01-json/RevitJsonHelper.cs 7768 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Service/HStation.Service.Revit.Core/04-service/02-correct/RevitCorrectHelper.cs 291 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/00-core/ImportXhsProjectHelper.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/05-completed/XhsProjectSimulationAnalysisCtrl.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Hydro/HStation.Hydro.Core/TransferHelper.cs
@@ -320,7 +320,7 @@
                    var decorator = new Yw.Model.HydroDecoratorInfo();
                    decorator.Scene = HStation.Revit.ConstParas.Scene;
                    decorator.Name = revitDecorator.Name;
                    decorator.Code = revitDecorator.Code;
                    decorator.Code = revitDecorator.Id;
                    decorator.Category = revitDecorator.Category;
                    decorator.Decoration = revitDecorator.Decoration;
                    decorator.Description = revitDecorator.Description;
@@ -342,8 +342,8 @@
            reservoir.Catalog = Yw.Hydro.ParterCatalog.Reservoir;
            reservoir.Name = revitReservoir.Name;
            reservoir.UpdatePropStatus(nameof(reservoir.Name), revitReservoir, nameof(revitReservoir.Name));
            reservoir.Code = revitReservoir.Code;
            reservoir.UpdatePropStatus(nameof(reservoir.Code), revitReservoir, nameof(revitReservoir.Code));
            reservoir.Code = revitReservoir.Id;
            reservoir.UpdatePropStatus(nameof(reservoir.Code), revitReservoir, nameof(revitReservoir.Id));
            reservoir.ModelType = revitReservoir.ModelType;
            reservoir.UpdatePropStatus(nameof(reservoir.ModelType), revitReservoir, nameof(revitReservoir.ModelType));
            reservoir.Flags = revitReservoir.Flags;
@@ -380,8 +380,8 @@
            tank.Catalog = Yw.Hydro.ParterCatalog.Tank;
            tank.Name = revitTank.Name;
            tank.UpdatePropStatus(nameof(tank.Name), revitTank, nameof(revitTank.Name));
            tank.Code = revitTank.Code;
            tank.UpdatePropStatus(nameof(tank.Code), revitTank, nameof(revitTank.Code));
            tank.Code = revitTank.Id;
            tank.UpdatePropStatus(nameof(tank.Code), revitTank, nameof(revitTank.Id));
            tank.ModelType = revitTank.ModelType;
            tank.UpdatePropStatus(nameof(tank.ModelType), revitTank, nameof(revitTank.ModelType));
            tank.Flags = revitTank.Flags;
@@ -402,6 +402,8 @@
            tank.UpdatePropStatus(nameof(tank.MinVol), revitTank, nameof(revitTank.MinVol));
            tank.VolCurve = revitTank.VolCurve;
            tank.UpdatePropStatus(nameof(tank.VolCurve), revitTank, nameof(revitTank.VolCurve));
            tank.OverFlow = revitTank.OverFlow;
            tank.UpdatePropStatus(nameof(tank.OverFlow), revitTank, nameof(revitTank.OverFlow));
            tank.Position2d = new Yw.Model.Hydro.Position2d(revitTank.Position.X, revitTank.Position.Y);
            tank.UpdatePropStatus(nameof(tank.Position2d), revitTank, nameof(revitTank.Position));
            tank.Position3d = new Yw.Model.Hydro.Position3d(revitTank.Position.X, revitTank.Position.Y, revitTank.Position.Z);
@@ -426,8 +428,8 @@
            waterbox.Catalog = Yw.Hydro.ParterCatalog.Waterbox;
            waterbox.Name = revitWaterbox.Name;
            waterbox.UpdatePropStatus(nameof(waterbox.Name), revitWaterbox, nameof(revitWaterbox.Name));
            waterbox.Code = revitWaterbox.Code;
            waterbox.UpdatePropStatus(nameof(waterbox.Code), revitWaterbox, nameof(revitWaterbox.Code));
            waterbox.Code = revitWaterbox.Id;
            waterbox.UpdatePropStatus(nameof(waterbox.Code), revitWaterbox, nameof(revitWaterbox.Id));
            waterbox.ModelType = revitWaterbox.ModelType;
            waterbox.UpdatePropStatus(nameof(waterbox.ModelType), revitWaterbox, nameof(revitWaterbox.ModelType));
            waterbox.Flags = revitWaterbox.Flags;
@@ -448,6 +450,8 @@
            waterbox.UpdatePropStatus(nameof(waterbox.MinVol), revitWaterbox, nameof(revitWaterbox.MinVol));
            waterbox.VolCurve = revitWaterbox.VolCurve;
            waterbox.UpdatePropStatus(nameof(waterbox.VolCurve), revitWaterbox, nameof(revitWaterbox.VolCurve));
            waterbox.OverFlow = revitWaterbox.OverFlow;
            waterbox.UpdatePropStatus(nameof(waterbox.OverFlow), revitWaterbox, nameof(revitWaterbox.OverFlow));
            waterbox.Position2d = new Yw.Model.Hydro.Position2d(revitWaterbox.Position.X, revitWaterbox.Position.Y);
            waterbox.UpdatePropStatus(nameof(waterbox.Position2d), revitWaterbox, nameof(revitWaterbox.Position));
            waterbox.Position3d = new Yw.Model.Hydro.Position3d(revitWaterbox.Position.X, revitWaterbox.Position.Y, revitWaterbox.Position.Z);
@@ -472,8 +476,8 @@
            junction.Catalog = Yw.Hydro.ParterCatalog.Junction;
            junction.Name = revitJunction.Name;
            junction.UpdatePropStatus(nameof(junction.Name), revitJunction, nameof(revitJunction.Name));
            junction.Code = revitJunction.Code;
            junction.UpdatePropStatus(nameof(junction.Code), revitJunction, nameof(revitJunction.Code));
            junction.Code = revitJunction.Id;
            junction.UpdatePropStatus(nameof(junction.Code), revitJunction, nameof(revitJunction.Id));
            junction.ModelType = revitJunction.ModelType;
            junction.UpdatePropStatus(nameof(junction.ModelType), revitJunction, nameof(revitJunction.ModelType));
            junction.Flags = revitJunction.Flags;
@@ -512,8 +516,8 @@
            blunthead.Catalog = Yw.Hydro.ParterCatalog.Blunthead;
            blunthead.Name = revitBlunthead.Name;
            blunthead.UpdatePropStatus(nameof(blunthead.Name), revitBlunthead, nameof(revitBlunthead.Name));
            blunthead.Code = revitBlunthead.Code;
            blunthead.UpdatePropStatus(nameof(blunthead.Code), revitBlunthead, nameof(revitBlunthead.Code));
            blunthead.Code = revitBlunthead.Id;
            blunthead.UpdatePropStatus(nameof(blunthead.Code), revitBlunthead, nameof(revitBlunthead.Id));
            blunthead.ModelType = revitBlunthead.ModelType;
            blunthead.UpdatePropStatus(nameof(blunthead.ModelType), revitBlunthead, nameof(revitBlunthead.ModelType));
            blunthead.Flags = revitBlunthead.Flags;
@@ -556,8 +560,8 @@
            elbow.Catalog = Yw.Hydro.ParterCatalog.Elbow;
            elbow.Name = revitElbow.Name;
            elbow.UpdatePropStatus(nameof(elbow.Name), revitElbow, nameof(revitElbow.Name));
            elbow.Code = revitElbow.Code;
            elbow.UpdatePropStatus(nameof(elbow.Code), revitElbow, nameof(revitElbow.Code));
            elbow.Code = revitElbow.Id;
            elbow.UpdatePropStatus(nameof(elbow.Code), revitElbow, nameof(revitElbow.Id));
            elbow.ModelType = revitElbow.ModelType;
            elbow.UpdatePropStatus(nameof(elbow.ModelType), revitElbow, nameof(revitElbow.ModelType));
            elbow.Flags = revitElbow.Flags;
@@ -580,6 +584,10 @@
            elbow.UpdatePropStatus(nameof(elbow.Material), revitElbow, nameof(revitElbow.Material));
            elbow.Caliber = revitElbow.Caliber;
            elbow.UpdatePropStatus(nameof(elbow.Caliber), revitElbow, nameof(revitElbow.Caliber));
            elbow.BendingAngle = revitElbow.BendingAngle;
            elbow.UpdatePropStatus(nameof(elbow.BendingAngle), revitElbow, nameof(revitElbow.BendingAngle));
            elbow.ElbowType = revitElbow.ElbowType;
            elbow.UpdatePropStatus(nameof(elbow.ElbowType), revitElbow, nameof(revitElbow.ElbowType));
            elbow.ScenePropValueList = revitElbow.PropValueList?.Select(x => new Yw.Model.HydroParterScenePropValueInfo()
            {
                Scene = HStation.Revit.ConstParas.Scene,
@@ -600,8 +608,8 @@
            threelink.Catalog = Yw.Hydro.ParterCatalog.Threelink;
            threelink.Name = revitThreelink.Name;
            threelink.UpdatePropStatus(nameof(threelink.Name), revitThreelink, nameof(revitThreelink.Name));
            threelink.Code = revitThreelink.Code;
            threelink.UpdatePropStatus(nameof(threelink.Code), revitThreelink, nameof(revitThreelink.Code));
            threelink.Code = revitThreelink.Id;
            threelink.UpdatePropStatus(nameof(threelink.Code), revitThreelink, nameof(revitThreelink.Id));
            threelink.ModelType = revitThreelink.ModelType;
            threelink.UpdatePropStatus(nameof(threelink.ModelType), revitThreelink, nameof(revitThreelink.ModelType));
            threelink.Flags = revitThreelink.Flags;
@@ -624,6 +632,10 @@
            threelink.UpdatePropStatus(nameof(threelink.Material), revitThreelink, nameof(revitThreelink.Material));
            threelink.Caliber = revitThreelink.Caliber;
            threelink.UpdatePropStatus(nameof(threelink.Caliber), revitThreelink, nameof(revitThreelink.Caliber));
            threelink.RunningThroughLoss = revitThreelink.RunningThroughLoss;
            threelink.UpdatePropStatus(nameof(threelink.RunningThroughLoss), revitThreelink, nameof(revitThreelink.RunningThroughLoss));
            threelink.BranchThroughLoss = revitThreelink.BranchThroughLoss;
            threelink.UpdatePropStatus(nameof(threelink.BranchThroughLoss), revitThreelink, nameof(revitThreelink.BranchThroughLoss));
            threelink.ScenePropValueList = revitThreelink.PropValueList?.Select(x => new Yw.Model.HydroParterScenePropValueInfo()
            {
                Scene = HStation.Revit.ConstParas.Scene,
@@ -644,8 +656,8 @@
            fourlink.Catalog = Yw.Hydro.ParterCatalog.Fourlink;
            fourlink.Name = revitFourlink.Name;
            fourlink.UpdatePropStatus(nameof(fourlink.Name), revitFourlink, nameof(revitFourlink.Name));
            fourlink.Code = revitFourlink.Code;
            fourlink.UpdatePropStatus(nameof(fourlink.Code), revitFourlink, nameof(revitFourlink.Code));
            fourlink.Code = revitFourlink.Id;
            fourlink.UpdatePropStatus(nameof(fourlink.Code), revitFourlink, nameof(revitFourlink.Id));
            fourlink.ModelType = revitFourlink.ModelType;
            fourlink.UpdatePropStatus(nameof(fourlink.ModelType), revitFourlink, nameof(revitFourlink.ModelType));
            fourlink.Flags = revitFourlink.Flags;
@@ -677,48 +689,6 @@
            return fourlink;
        }
        //消火栓
        private static Yw.Model.HydroHydrantInfo FromRevit(HStation.Model.RevitHydrant revitHydrant)
        {
            if (revitHydrant == null)
            {
                return default;
            }
            var hydrant = new Yw.Model.HydroHydrantInfo();
            hydrant.Catalog = Yw.Hydro.ParterCatalog.Hydrant;
            hydrant.Name = revitHydrant.Name;
            hydrant.UpdatePropStatus(nameof(hydrant.Name), revitHydrant, nameof(revitHydrant.Name));
            hydrant.Code = revitHydrant.Code;
            hydrant.UpdatePropStatus(nameof(hydrant.Code), revitHydrant, nameof(revitHydrant.Code));
            hydrant.ModelType = revitHydrant.ModelType;
            hydrant.UpdatePropStatus(nameof(hydrant.ModelType), revitHydrant, nameof(revitHydrant.ModelType));
            hydrant.Flags = revitHydrant.Flags;
            hydrant.UpdatePropStatus(nameof(hydrant.Flags), revitHydrant, nameof(revitHydrant.Flags));
            hydrant.Description = revitHydrant.Description;
            hydrant.UpdatePropStatus(nameof(hydrant.Description), revitHydrant, nameof(revitHydrant.Description));
            hydrant.Elev = revitHydrant.Elev;
            hydrant.UpdatePropStatus(nameof(hydrant.Elev), revitHydrant, nameof(revitHydrant.Elev));
            hydrant.MinorLoss = revitHydrant.MinorLoss;
            hydrant.UpdatePropStatus(nameof(hydrant.MinorLoss), revitHydrant, nameof(revitHydrant.MinorLoss));
            hydrant.Demand = revitHydrant.Demand;
            hydrant.UpdatePropStatus(nameof(hydrant.Demand), revitHydrant, nameof(revitHydrant.Demand));
            hydrant.DemandPattern = revitHydrant.DemandPattern;
            hydrant.UpdatePropStatus(nameof(hydrant.DemandPattern), revitHydrant, nameof(revitHydrant.DemandPattern));
            hydrant.Position2d = new Yw.Model.Hydro.Position2d(revitHydrant.Position.X, revitHydrant.Position.Y);
            hydrant.UpdatePropStatus(nameof(hydrant.Position2d), revitHydrant, nameof(revitHydrant.Position));
            hydrant.Position3d = new Yw.Model.Hydro.Position3d(revitHydrant.Position.X, revitHydrant.Position.Y, revitHydrant.Position.Z);
            hydrant.UpdatePropStatus(nameof(hydrant.Position3d), revitHydrant, nameof(revitHydrant.Position));
            hydrant.Coefficient = revitHydrant.Coefficient;
            hydrant.UpdatePropStatus(nameof(hydrant.Coefficient), revitHydrant, nameof(revitHydrant.Coefficient));
            hydrant.ScenePropValueList = revitHydrant.PropValueList?.Select(x => new Yw.Model.HydroParterScenePropValueInfo()
            {
                Scene = HStation.Revit.ConstParas.Scene,
                PropName = x.PropName,
                PropValue = x.PropValue
            }).ToList();
            return hydrant;
        }
        //喷嘴
        private static Yw.Model.HydroNozzleInfo FromRevit(HStation.Model.RevitNozzle revitNozzle)
        {
@@ -730,8 +700,8 @@
            nozzle.Catalog = Yw.Hydro.ParterCatalog.Nozzle;
            nozzle.Name = revitNozzle.Name;
            nozzle.UpdatePropStatus(nameof(nozzle.Name), revitNozzle, nameof(revitNozzle.Name));
            nozzle.Code = revitNozzle.Code;
            nozzle.UpdatePropStatus(nameof(nozzle.Code), revitNozzle, nameof(revitNozzle.Code));
            nozzle.Code = revitNozzle.Id;
            nozzle.UpdatePropStatus(nameof(nozzle.Code), revitNozzle, nameof(revitNozzle.Id));
            nozzle.ModelType = revitNozzle.ModelType;
            nozzle.UpdatePropStatus(nameof(nozzle.ModelType), revitNozzle, nameof(revitNozzle.ModelType));
            nozzle.Flags = revitNozzle.Flags;
@@ -761,6 +731,48 @@
            return nozzle;
        }
        //消火栓
        private static Yw.Model.HydroHydrantInfo FromRevit(HStation.Model.RevitHydrant revitHydrant)
        {
            if (revitHydrant == null)
            {
                return default;
            }
            var hydrant = new Yw.Model.HydroHydrantInfo();
            hydrant.Catalog = Yw.Hydro.ParterCatalog.Hydrant;
            hydrant.Name = revitHydrant.Name;
            hydrant.UpdatePropStatus(nameof(hydrant.Name), revitHydrant, nameof(revitHydrant.Name));
            hydrant.Code = revitHydrant.Id;
            hydrant.UpdatePropStatus(nameof(hydrant.Code), revitHydrant, nameof(revitHydrant.Id));
            hydrant.ModelType = revitHydrant.ModelType;
            hydrant.UpdatePropStatus(nameof(hydrant.ModelType), revitHydrant, nameof(revitHydrant.ModelType));
            hydrant.Flags = revitHydrant.Flags;
            hydrant.UpdatePropStatus(nameof(hydrant.Flags), revitHydrant, nameof(revitHydrant.Flags));
            hydrant.Description = revitHydrant.Description;
            hydrant.UpdatePropStatus(nameof(hydrant.Description), revitHydrant, nameof(revitHydrant.Description));
            hydrant.Elev = revitHydrant.Elev;
            hydrant.UpdatePropStatus(nameof(hydrant.Elev), revitHydrant, nameof(revitHydrant.Elev));
            hydrant.MinorLoss = revitHydrant.MinorLoss;
            hydrant.UpdatePropStatus(nameof(hydrant.MinorLoss), revitHydrant, nameof(revitHydrant.MinorLoss));
            hydrant.Demand = revitHydrant.Demand;
            hydrant.UpdatePropStatus(nameof(hydrant.Demand), revitHydrant, nameof(revitHydrant.Demand));
            hydrant.DemandPattern = revitHydrant.DemandPattern;
            hydrant.UpdatePropStatus(nameof(hydrant.DemandPattern), revitHydrant, nameof(revitHydrant.DemandPattern));
            hydrant.Position2d = new Yw.Model.Hydro.Position2d(revitHydrant.Position.X, revitHydrant.Position.Y);
            hydrant.UpdatePropStatus(nameof(hydrant.Position2d), revitHydrant, nameof(revitHydrant.Position));
            hydrant.Position3d = new Yw.Model.Hydro.Position3d(revitHydrant.Position.X, revitHydrant.Position.Y, revitHydrant.Position.Z);
            hydrant.UpdatePropStatus(nameof(hydrant.Position3d), revitHydrant, nameof(revitHydrant.Position));
            hydrant.Coefficient = revitHydrant.Coefficient;
            hydrant.UpdatePropStatus(nameof(hydrant.Coefficient), revitHydrant, nameof(revitHydrant.Coefficient));
            hydrant.ScenePropValueList = revitHydrant.PropValueList?.Select(x => new Yw.Model.HydroParterScenePropValueInfo()
            {
                Scene = HStation.Revit.ConstParas.Scene,
                PropName = x.PropName,
                PropValue = x.PropValue
            }).ToList();
            return hydrant;
        }
        //水表
        private static Yw.Model.HydroMeterInfo FromRevit(HStation.Model.RevitMeter revitMeter)
        {
@@ -772,8 +784,8 @@
            meter.Catalog = Yw.Hydro.ParterCatalog.Meter;
            meter.Name = revitMeter.Name;
            meter.UpdatePropStatus(nameof(meter.Name), revitMeter, nameof(revitMeter.Name));
            meter.Code = revitMeter.Code;
            meter.UpdatePropStatus(nameof(meter.Code), revitMeter, nameof(revitMeter.Code));
            meter.Code = revitMeter.Id;
            meter.UpdatePropStatus(nameof(meter.Code), revitMeter, nameof(revitMeter.Id));
            meter.ModelType = revitMeter.ModelType;
            meter.UpdatePropStatus(nameof(meter.ModelType), revitMeter, nameof(revitMeter.ModelType));
            meter.Flags = revitMeter.Flags;
@@ -812,8 +824,8 @@
            flowmeter.Catalog = Yw.Hydro.ParterCatalog.Flowmeter;
            flowmeter.Name = revitFlowmeter.Name;
            flowmeter.UpdatePropStatus(nameof(flowmeter.Name), revitFlowmeter, nameof(revitFlowmeter.Name));
            flowmeter.Code = revitFlowmeter.Code;
            flowmeter.UpdatePropStatus(nameof(flowmeter.Code), revitFlowmeter, nameof(revitFlowmeter.Code));
            flowmeter.Code = revitFlowmeter.Id;
            flowmeter.UpdatePropStatus(nameof(flowmeter.Code), revitFlowmeter, nameof(revitFlowmeter.Id));
            flowmeter.ModelType = revitFlowmeter.ModelType;
            flowmeter.UpdatePropStatus(nameof(flowmeter.ModelType), revitFlowmeter, nameof(revitFlowmeter.ModelType));
            flowmeter.Flags = revitFlowmeter.Flags;
@@ -854,8 +866,8 @@
            pressmeter.Catalog = Yw.Hydro.ParterCatalog.Pressmeter;
            pressmeter.Name = revitPressmeter.Name;
            pressmeter.UpdatePropStatus(nameof(pressmeter.Name), revitPressmeter, nameof(revitPressmeter.Name));
            pressmeter.Code = revitPressmeter.Code;
            pressmeter.UpdatePropStatus(nameof(pressmeter.Code), revitPressmeter, nameof(revitPressmeter.Code));
            pressmeter.Code = revitPressmeter.Id;
            pressmeter.UpdatePropStatus(nameof(pressmeter.Code), revitPressmeter, nameof(revitPressmeter.Id));
            pressmeter.ModelType = revitPressmeter.ModelType;
            pressmeter.UpdatePropStatus(nameof(pressmeter.ModelType), revitPressmeter, nameof(revitPressmeter.ModelType));
            pressmeter.Flags = revitPressmeter.Flags;
@@ -896,8 +908,8 @@
            pipe.Catalog = Yw.Hydro.ParterCatalog.Pipe;
            pipe.Name = revitPipe.Name;
            pipe.UpdatePropStatus(nameof(pipe.Name), revitPipe, nameof(revitPipe.Name));
            pipe.Code = revitPipe.Code;
            pipe.UpdatePropStatus(nameof(pipe.Code), revitPipe, nameof(revitPipe.Code));
            pipe.Code = revitPipe.Id;
            pipe.UpdatePropStatus(nameof(pipe.Code), revitPipe, nameof(revitPipe.Id));
            pipe.ModelType = revitPipe.ModelType;
            pipe.UpdatePropStatus(nameof(pipe.ModelType), revitPipe, nameof(revitPipe.ModelType));
            pipe.Flags = revitPipe.Flags;
@@ -940,8 +952,8 @@
            translation.Catalog = Yw.Hydro.ParterCatalog.Translation;
            translation.Name = revitTranslation.Name;
            translation.UpdatePropStatus(nameof(translation.Name), revitTranslation, nameof(revitTranslation.Name));
            translation.Code = revitTranslation.Code;
            translation.UpdatePropStatus(nameof(translation.Code), revitTranslation, nameof(revitTranslation.Code));
            translation.Code = revitTranslation.Id;
            translation.UpdatePropStatus(nameof(translation.Code), revitTranslation, nameof(revitTranslation.Id));
            translation.ModelType = revitTranslation.ModelType;
            translation.UpdatePropStatus(nameof(translation.ModelType), revitTranslation, nameof(revitTranslation.ModelType));
            translation.Flags = revitTranslation.Flags;
@@ -973,86 +985,6 @@
            return translation;
        }
        //换热器
        private static Yw.Model.HydroExchangerInfo FromRevit(HStation.Model.RevitExchanger revitExchanger)
        {
            if (revitExchanger == null)
            {
                return default;
            }
            var exchanger = new Yw.Model.HydroExchangerInfo();
            exchanger.Catalog = Yw.Hydro.ParterCatalog.Exchanger;
            exchanger.Name = revitExchanger.Name;
            exchanger.UpdatePropStatus(nameof(exchanger.Name), revitExchanger, nameof(revitExchanger.Name));
            exchanger.Code = revitExchanger.Code;
            exchanger.UpdatePropStatus(nameof(exchanger.Code), revitExchanger, nameof(revitExchanger.Code));
            exchanger.ModelType = revitExchanger.ModelType;
            exchanger.UpdatePropStatus(nameof(exchanger.ModelType), revitExchanger, nameof(revitExchanger.ModelType));
            exchanger.Flags = revitExchanger.Flags;
            exchanger.UpdatePropStatus(nameof(exchanger.Flags), revitExchanger, nameof(revitExchanger.Flags));
            exchanger.Description = revitExchanger.Description;
            exchanger.UpdatePropStatus(nameof(exchanger.Description), revitExchanger, nameof(revitExchanger.Description));
            exchanger.StartCode = revitExchanger.StartCode;
            exchanger.UpdatePropStatus(nameof(exchanger.StartCode), revitExchanger, nameof(revitExchanger.StartCode));
            exchanger.EndCode = revitExchanger.EndCode;
            exchanger.UpdatePropStatus(nameof(exchanger.EndCode), revitExchanger, nameof(revitExchanger.EndCode));
            exchanger.LinkStatus = revitExchanger.LinkStatus;
            exchanger.UpdatePropStatus(nameof(exchanger.LinkStatus), revitExchanger, nameof(revitExchanger.LinkStatus));
            exchanger.Material = revitExchanger.Material;
            exchanger.UpdatePropStatus(nameof(exchanger.Material), revitExchanger, nameof(revitExchanger.Material));
            exchanger.Diameter = revitExchanger.Diameter;
            exchanger.UpdatePropStatus(nameof(exchanger.Diameter), revitExchanger, nameof(revitExchanger.Diameter));
            exchanger.MinorLoss = revitExchanger.MinorLoss;
            exchanger.UpdatePropStatus(nameof(exchanger.MinorLoss), revitExchanger, nameof(revitExchanger.MinorLoss));
            exchanger.ScenePropValueList = revitExchanger.PropValueList?.Select(x => new Yw.Model.HydroParterScenePropValueInfo()
            {
                Scene = HStation.Revit.ConstParas.Scene,
                PropName = x.PropName,
                PropValue = x.PropValue
            }).ToList();
            return exchanger;
        }
        //空压机
        private static Yw.Model.HydroCompressorInfo FromRevit(HStation.Model.RevitCompressor revitCompressor)
        {
            if (revitCompressor == null)
            {
                return default;
            }
            var compressor = new Yw.Model.HydroCompressorInfo();
            compressor.Catalog = Yw.Hydro.ParterCatalog.Compressor;
            compressor.Name = revitCompressor.Name;
            compressor.UpdatePropStatus(nameof(compressor.Name), revitCompressor, nameof(revitCompressor.Name));
            compressor.Code = revitCompressor.Code;
            compressor.UpdatePropStatus(nameof(compressor.Code), revitCompressor, nameof(revitCompressor.Code));
            compressor.ModelType = revitCompressor.ModelType;
            compressor.UpdatePropStatus(nameof(compressor.ModelType), revitCompressor, nameof(revitCompressor.ModelType));
            compressor.Flags = revitCompressor.Flags;
            compressor.UpdatePropStatus(nameof(compressor.Flags), revitCompressor, nameof(revitCompressor.Flags));
            compressor.Description = revitCompressor.Description;
            compressor.UpdatePropStatus(nameof(compressor.Description), revitCompressor, nameof(revitCompressor.Description));
            compressor.StartCode = revitCompressor.StartCode;
            compressor.UpdatePropStatus(nameof(compressor.StartCode), revitCompressor, nameof(revitCompressor.StartCode));
            compressor.EndCode = revitCompressor.EndCode;
            compressor.UpdatePropStatus(nameof(compressor.EndCode), revitCompressor, nameof(revitCompressor.EndCode));
            compressor.LinkStatus = revitCompressor.LinkStatus;
            compressor.UpdatePropStatus(nameof(compressor.LinkStatus), revitCompressor, nameof(revitCompressor.LinkStatus));
            compressor.Material = revitCompressor.Material;
            compressor.UpdatePropStatus(nameof(compressor.Material), revitCompressor, nameof(revitCompressor.Material));
            compressor.Diameter = revitCompressor.Diameter;
            compressor.UpdatePropStatus(nameof(compressor.Diameter), revitCompressor, nameof(revitCompressor.Diameter));
            compressor.MinorLoss = revitCompressor.MinorLoss;
            compressor.UpdatePropStatus(nameof(compressor.MinorLoss), revitCompressor, nameof(revitCompressor.MinorLoss));
            compressor.ScenePropValueList = revitCompressor.PropValueList?.Select(x => new Yw.Model.HydroParterScenePropValueInfo()
            {
                Scene = HStation.Revit.ConstParas.Scene,
                PropName = x.PropName,
                PropValue = x.PropValue
            }).ToList();
            return compressor;
        }
        //æ°´æ³µ
        private static Yw.Model.HydroPumpInfo FromRevit(HStation.Model.RevitPump revitPump)
        {
@@ -1064,8 +996,8 @@
            pump.Catalog = Yw.Hydro.ParterCatalog.Pump;
            pump.Name = revitPump.Name;
            pump.UpdatePropStatus(nameof(pump.Name), revitPump, nameof(revitPump.Name));
            pump.Code = revitPump.Code;
            pump.UpdatePropStatus(nameof(pump.Code), revitPump, nameof(revitPump.Code));
            pump.Code = revitPump.Id;
            pump.UpdatePropStatus(nameof(pump.Code), revitPump, nameof(revitPump.Id));
            pump.ModelType = revitPump.ModelType;
            pump.UpdatePropStatus(nameof(pump.ModelType), revitPump, nameof(revitPump.ModelType));
            pump.Flags = revitPump.Flags;
@@ -1078,12 +1010,12 @@
            pump.UpdatePropStatus(nameof(pump.EndCode), revitPump, nameof(revitPump.EndCode));
            pump.LinkStatus = revitPump.LinkStatus;
            pump.UpdatePropStatus(nameof(pump.LinkStatus), revitPump, nameof(revitPump.LinkStatus));
            pump.RatedP = revitPump.RatedP;
            pump.UpdatePropStatus(nameof(pump.RatedP), revitPump, nameof(revitPump.RatedP));
            pump.RatedQ = revitPump.RatedQ;
            pump.UpdatePropStatus(nameof(pump.RatedQ), revitPump, nameof(revitPump.RatedQ));
            pump.RatedH = revitPump.RatedH;
            pump.UpdatePropStatus(nameof(pump.RatedH), revitPump, nameof(revitPump.RatedH));
            pump.RatedP = revitPump.RatedP;
            pump.UpdatePropStatus(nameof(pump.RatedP), revitPump, nameof(revitPump.RatedP));
            pump.RatedN = revitPump.RatedN;
            pump.UpdatePropStatus(nameof(pump.RatedN), revitPump, nameof(revitPump.RatedN));
            pump.RatedHz = revitPump.RatedHz;
@@ -1118,8 +1050,8 @@
            valve.Catalog = Yw.Hydro.ParterCatalog.Valve;
            valve.Name = revitValve.Name;
            valve.UpdatePropStatus(nameof(valve.Name), revitValve, nameof(revitValve.Name));
            valve.Code = revitValve.Code;
            valve.UpdatePropStatus(nameof(valve.Code), revitValve, nameof(revitValve.Code));
            valve.Code = revitValve.Id;
            valve.UpdatePropStatus(nameof(valve.Code), revitValve, nameof(revitValve.Id));
            valve.ModelType = revitValve.ModelType;
            valve.UpdatePropStatus(nameof(valve.ModelType), revitValve, nameof(revitValve.ModelType));
            valve.Flags = revitValve.Flags;
@@ -1153,5 +1085,91 @@
            return valve;
        }
        //换热器
        private static Yw.Model.HydroExchangerInfo FromRevit(HStation.Model.RevitExchanger revitExchanger)
        {
            if (revitExchanger == null)
            {
                return default;
            }
            var exchanger = new Yw.Model.HydroExchangerInfo();
            exchanger.Catalog = Yw.Hydro.ParterCatalog.Exchanger;
            exchanger.Name = revitExchanger.Name;
            exchanger.UpdatePropStatus(nameof(exchanger.Name), revitExchanger, nameof(revitExchanger.Name));
            exchanger.Code = revitExchanger.Id;
            exchanger.UpdatePropStatus(nameof(exchanger.Code), revitExchanger, nameof(revitExchanger.Id));
            exchanger.ModelType = revitExchanger.ModelType;
            exchanger.UpdatePropStatus(nameof(exchanger.ModelType), revitExchanger, nameof(revitExchanger.ModelType));
            exchanger.Flags = revitExchanger.Flags;
            exchanger.UpdatePropStatus(nameof(exchanger.Flags), revitExchanger, nameof(revitExchanger.Flags));
            exchanger.Description = revitExchanger.Description;
            exchanger.UpdatePropStatus(nameof(exchanger.Description), revitExchanger, nameof(revitExchanger.Description));
            exchanger.StartCode = revitExchanger.StartCode;
            exchanger.UpdatePropStatus(nameof(exchanger.StartCode), revitExchanger, nameof(revitExchanger.StartCode));
            exchanger.EndCode = revitExchanger.EndCode;
            exchanger.UpdatePropStatus(nameof(exchanger.EndCode), revitExchanger, nameof(revitExchanger.EndCode));
            exchanger.LinkStatus = revitExchanger.LinkStatus;
            exchanger.UpdatePropStatus(nameof(exchanger.LinkStatus), revitExchanger, nameof(revitExchanger.LinkStatus));
            exchanger.Material = revitExchanger.Material;
            exchanger.UpdatePropStatus(nameof(exchanger.Material), revitExchanger, nameof(revitExchanger.Material));
            exchanger.Diameter = revitExchanger.Diameter;
            exchanger.UpdatePropStatus(nameof(exchanger.Diameter), revitExchanger, nameof(revitExchanger.Diameter));
            exchanger.MinorLoss = revitExchanger.MinorLoss;
            exchanger.UpdatePropStatus(nameof(exchanger.MinorLoss), revitExchanger, nameof(revitExchanger.MinorLoss));
            exchanger.CurveQL = revitExchanger.CurveQL;
            exchanger.UpdatePropStatus(nameof(exchanger.CurveQL), revitExchanger, nameof(revitExchanger.CurveQL));
            exchanger.ScenePropValueList = revitExchanger.PropValueList?.Select(x => new Yw.Model.HydroParterScenePropValueInfo()
            {
                Scene = HStation.Revit.ConstParas.Scene,
                PropName = x.PropName,
                PropValue = x.PropValue
            }).ToList();
            return exchanger;
        }
        //空压机
        private static Yw.Model.HydroCompressorInfo FromRevit(HStation.Model.RevitCompressor revitCompressor)
        {
            if (revitCompressor == null)
            {
                return default;
            }
            var compressor = new Yw.Model.HydroCompressorInfo();
            compressor.Catalog = Yw.Hydro.ParterCatalog.Compressor;
            compressor.Name = revitCompressor.Name;
            compressor.UpdatePropStatus(nameof(compressor.Name), revitCompressor, nameof(revitCompressor.Name));
            compressor.Code = revitCompressor.Id;
            compressor.UpdatePropStatus(nameof(compressor.Code), revitCompressor, nameof(revitCompressor.Id));
            compressor.ModelType = revitCompressor.ModelType;
            compressor.UpdatePropStatus(nameof(compressor.ModelType), revitCompressor, nameof(revitCompressor.ModelType));
            compressor.Flags = revitCompressor.Flags;
            compressor.UpdatePropStatus(nameof(compressor.Flags), revitCompressor, nameof(revitCompressor.Flags));
            compressor.Description = revitCompressor.Description;
            compressor.UpdatePropStatus(nameof(compressor.Description), revitCompressor, nameof(revitCompressor.Description));
            compressor.StartCode = revitCompressor.StartCode;
            compressor.UpdatePropStatus(nameof(compressor.StartCode), revitCompressor, nameof(revitCompressor.StartCode));
            compressor.EndCode = revitCompressor.EndCode;
            compressor.UpdatePropStatus(nameof(compressor.EndCode), revitCompressor, nameof(revitCompressor.EndCode));
            compressor.LinkStatus = revitCompressor.LinkStatus;
            compressor.UpdatePropStatus(nameof(compressor.LinkStatus), revitCompressor, nameof(revitCompressor.LinkStatus));
            compressor.Material = revitCompressor.Material;
            compressor.UpdatePropStatus(nameof(compressor.Material), revitCompressor, nameof(revitCompressor.Material));
            compressor.Diameter = revitCompressor.Diameter;
            compressor.UpdatePropStatus(nameof(compressor.Diameter), revitCompressor, nameof(revitCompressor.Diameter));
            compressor.MinorLoss = revitCompressor.MinorLoss;
            compressor.UpdatePropStatus(nameof(compressor.MinorLoss), revitCompressor, nameof(revitCompressor.MinorLoss));
            compressor.CurveQL = revitCompressor.CurveQL;
            compressor.UpdatePropStatus(nameof(compressor.CurveQL), revitCompressor, nameof(revitCompressor.CurveQL));
            compressor.ScenePropValueList = revitCompressor.PropValueList?.Select(x => new Yw.Model.HydroParterScenePropValueInfo()
            {
                Scene = HStation.Revit.ConstParas.Scene,
                PropName = x.PropName,
                PropValue = x.PropValue
            }).ToList();
            return compressor;
        }
    }
}
Hydro/Yw.Hydro.Core/ParseHelper.cs
@@ -52,7 +52,7 @@
                    tankModel.Diameter = tank.DN;
                    tankModel.MinVol = tank.MinVol;
                    tankModel.VolCurve = tank.VolCurve;
                    tankModel.Overflow = tank.OverFlow;
                    //tankModel.Overflow = tank.OverFlow;
                    netWork.Tanks.Add(tankModel);
                }
            }
@@ -74,7 +74,7 @@
                    waterboxModel.Diameter = waterbox.DN;
                    waterboxModel.MinVol = waterbox.MinVol;
                    waterboxModel.VolCurve = waterbox.VolCurve;
                    waterboxModel.Overflow = waterbox.OverFlow;
                    //waterboxModel.Overflow = waterbox.OverFlow;
                    netWork.Tanks.Add(waterboxModel);
                }
            }
Service/HStation.Service.Revit.Core/00-core/LinkStatus.cs
@@ -20,9 +20,5 @@
        /// </summary>
        public const string Closed = "Closed";
        /// <summary>
        /// CV æ„å‘³ç€ç®¡é“包含了限制流向的止回阀
        /// </summary>
        public const string CV = "CV";
    }
}
Service/HStation.Service.Revit.Core/00-core/PipeStatus.cs
@@ -16,11 +16,6 @@
        public const string Closed = "Closed";
        /// <summary>
        /// CV æ„å‘³ç€ç®¡é“包含了限制流向的止回阀
        /// </summary>
        public const string CV = "CV";
        /// <summary>
        /// åŒ…含
        /// </summary>
        public static bool Contains(string status)
@@ -37,12 +32,10 @@
            {
                return true;
            }
            if (status == CV)
            {
                return true;
            }
            return false;
        }
    }
}
Service/HStation.Service.Revit.Core/00-core/ValveType.cs
@@ -6,34 +6,39 @@
    public class ValveType
    {
        /// <summary>
        /// å‡åŽ‹é˜€ åŽ‹å¼ºï¼Œm(psi)
        /// å‡åŽ‹é˜€ åŽ‹å¼ºï¼Œm
        /// </summary>
        public const string PRV = "PRV";
        /// <summary>
        /// ç¨³åŽ‹é˜€ åŽ‹å¼ºï¼Œm(psi)
        /// ç¨³åŽ‹é˜€ åŽ‹å¼ºï¼Œm
        /// </summary>
        public const string PSV = "PSV";
        /// <summary>
        /// åŽ‹åŠ›åˆ¶åŠ¨é˜€ åŽ‹å¼ºï¼Œm(psi)
        /// åŽ‹åŠ›åˆ¶åŠ¨é˜€ åŽ‹å¼ºï¼Œm
        /// </summary>
        public const string PBV = "PBV";
        /// <summary>
        /// æµé‡æŽ§åˆ¶é˜€ æµé‡(流量单位)
        /// æµé‡æŽ§åˆ¶é˜€ æµé‡(m³/h)
        /// </summary>
        public const string FCV = "FCV";
        /// <summary>
        /// èŠ‚æµæŽ§åˆ¶é˜€ æŸå¤±ç³»æ•°
        /// èŠ‚æµæŽ§åˆ¶é˜€ é˜€é—¨å¼€åº¦æŸå¤±ç³»æ•°æ›²çº¿
        /// </summary>
        public const string TCV = "TCV";
        /// <summary>
        /// å¸¸è§„阀门 æ°´å¤´æŸå¤±æ›²çº¿ID
        /// å¸¸è§„阀门 æ°´å¤´æŸå¤±æ›²çº¿
        /// </summary>
        public const string GPV = "GPV";
        /// <summary>
        /// æ­¢å›žé˜€
        /// </summary>
        public const string CV = "CV";
        /// <summary>
        /// åŒ…含
@@ -68,6 +73,10 @@
            {
                return true;
            }
            if (type == CV)
            {
                return true;
            }
            return false;
        }
Service/HStation.Service.Revit.Core/01-model/RevitModel.cs
@@ -14,22 +14,22 @@
            this.Tanks = new List<RevitTank>();
            this.Waterboxs = new List<RevitWaterbox>();
            this.Junctions = new List<RevitJunction>();
            this.Nozzles = new List<RevitNozzle>();
            this.Hydrants = new List<RevitHydrant>();
            this.Bluntheads = new List<RevitBlunthead>();
            this.Elbows = new List<RevitElbow>();
            this.Threelinks = new List<RevitThreelink>();
            this.Fourlinks = new List<RevitFourlink>();
            this.Nozzles = new List<RevitNozzle>();
            this.Hydrants = new List<RevitHydrant>();
            this.Meters = new List<RevitMeter>();
            this.Flowmeters = new List<RevitFlowmeter>();
            this.Pressmeters = new List<RevitPressmeter>();
            this.Pipes = new List<RevitPipe>();
            this.Translations = new List<RevitTranslation>();
            this.Exchangers = new List<RevitExchanger>();
            this.Compressors = new List<RevitCompressor>();
            this.Pumps = new List<RevitPump>();
            this.Valves = new List<RevitValve>();
            this.Exchangers = new List<RevitExchanger>();
            this.Compressors = new List<RevitCompressor>();
            this.Decorators = new List<RevitDecorator>();
        }
@@ -45,21 +45,21 @@
            this.Tanks = rhs.Tanks;
            this.Waterboxs = rhs.Waterboxs;
            this.Junctions = rhs.Junctions;
            this.Nozzles = rhs.Nozzles;
            this.Hydrants = rhs.Hydrants;
            this.Bluntheads = rhs.Bluntheads;
            this.Elbows = rhs.Elbows;
            this.Threelinks = rhs.Threelinks;
            this.Fourlinks = rhs.Fourlinks;
            this.Nozzles = rhs.Nozzles;
            this.Hydrants = rhs.Hydrants;
            this.Meters = rhs.Meters;
            this.Flowmeters = rhs.Flowmeters;
            this.Pressmeters = rhs.Pressmeters;
            this.Pipes = rhs.Pipes;
            this.Translations = rhs.Translations;
            this.Exchangers = rhs.Exchangers;
            this.Compressors = rhs.Compressors;
            this.Pumps = rhs.Pumps;
            this.Valves = rhs.Valves;
            this.Exchangers = rhs.Exchangers;
            this.Compressors = rhs.Compressors;
            this.Decorators = rhs.Decorators;
        }
@@ -100,16 +100,6 @@
        public List<RevitJunction> Junctions { get; set; }
        /// <summary>
        /// å–·å˜´åˆ—表
        /// </summary>
        public List<RevitNozzle> Nozzles { get; set; }
        /// <summary>
        /// æ¶ˆç«æ “列表
        /// </summary>
        public List<RevitHydrant> Hydrants { get; set; }
        /// <summary>
        /// é—·å¤´åˆ—表
        /// </summary>
        public List<RevitBlunthead> Bluntheads { get; set; }
@@ -128,6 +118,16 @@
        /// å››é€šåˆ—表
        /// </summary>
        public List<RevitFourlink> Fourlinks { get; set; }
        /// <summary>
        /// å–·å˜´åˆ—表
        /// </summary>
        public List<RevitNozzle> Nozzles { get; set; }
        /// <summary>
        /// æ¶ˆç«æ “列表
        /// </summary>
        public List<RevitHydrant> Hydrants { get; set; }
        /// <summary>
        /// æ°´è¡¨
@@ -160,16 +160,6 @@
        public List<RevitTranslation> Translations { get; set; }
        /// <summary>
        /// æ¢çƒ­å™¨åˆ—表
        /// </summary>
        public List<RevitExchanger> Exchangers { get; set; }
        /// <summary>
        /// ç©ºåŽ‹æœºåˆ—è¡¨
        /// </summary>
        public List<RevitCompressor> Compressors { get; set; }
        /// <summary>
        /// æ°´æ³µåˆ—表
        /// </summary>
        public List<RevitPump> Pumps { get; set; }
@@ -179,6 +169,16 @@
        /// </summary>
        public List<RevitValve> Valves { get; set; }
        /// <summary>
        /// æ¢çƒ­å™¨åˆ—表
        /// </summary>
        public List<RevitExchanger> Exchangers { get; set; }
        /// <summary>
        /// ç©ºåŽ‹æœºåˆ—è¡¨
        /// </summary>
        public List<RevitCompressor> Compressors { get; set; }
        #endregion
        #region è£…饰件
Service/HStation.Service.Revit.Core/01-model/RevitModel_Method.cs
@@ -27,14 +27,6 @@
            {//连接节点
                list.AddRange(this.Junctions);
            }
            if (this.Nozzles != null && this.Nozzles.Count > 0)
            {//喷嘴
                list.AddRange(this.Nozzles);
            }
            if (this.Hydrants != null && this.Hydrants.Count > 0)
            {//消火栓
                list.AddRange(this.Hydrants);
            }
            if (this.Bluntheads != null && this.Bluntheads.Count > 0)
            {//闷头
                list.AddRange(this.Bluntheads);
@@ -50,6 +42,14 @@
            if (this.Fourlinks != null && this.Fourlinks.Count > 0)
            {//四通
                list.AddRange(this.Fourlinks);
            }
            if (this.Nozzles != null && this.Nozzles.Count > 0)
            {//喷嘴
                list.AddRange(this.Nozzles);
            }
            if (this.Hydrants != null && this.Hydrants.Count > 0)
            {//消火栓
                list.AddRange(this.Hydrants);
            }
            if (this.Meters != null && this.Meters.Count > 0)
            {//水表
@@ -72,14 +72,6 @@
            {//过渡件
                list.AddRange(this.Translations);
            }
            if (this.Exchangers != null && this.Exchangers.Count > 0)
            {//换热器
                list.AddRange(this.Exchangers);
            }
            if (this.Compressors != null && this.Compressors.Count > 0)
            {//空压机
                list.AddRange(this.Compressors);
            }
            if (this.Pumps != null && this.Pumps.Count > 0)
            {//æ°´æ³µ
                list.AddRange(this.Pumps);
@@ -87,6 +79,14 @@
            if (this.Valves != null && this.Valves.Count > 0)
            {//阀门
                list.AddRange(this.Valves);
            }
            if (this.Exchangers != null && this.Exchangers.Count > 0)
            {//换热器
                list.AddRange(this.Exchangers);
            }
            if (this.Compressors != null && this.Compressors.Count > 0)
            {//空压机
                list.AddRange(this.Compressors);
            }
            return list;
@@ -114,14 +114,6 @@
            {//连接节点
                list.AddRange(this.Junctions);
            }
            if (this.Nozzles != null && this.Nozzles.Count > 0)
            {//喷嘴
                list.AddRange(this.Nozzles);
            }
            if (this.Hydrants != null && this.Hydrants.Count > 0)
            {//消火栓
                list.AddRange(this.Hydrants);
            }
            if (this.Bluntheads != null && this.Bluntheads.Count > 0)
            {//闷头
                list.AddRange(this.Bluntheads);
@@ -137,6 +129,14 @@
            if (this.Fourlinks != null && this.Fourlinks.Count > 0)
            {//四通
                list.AddRange(this.Fourlinks);
            }
            if (this.Nozzles != null && this.Nozzles.Count > 0)
            {//喷嘴
                list.AddRange(this.Nozzles);
            }
            if (this.Hydrants != null && this.Hydrants.Count > 0)
            {//消火栓
                list.AddRange(this.Hydrants);
            }
            if (this.Meters != null && this.Meters.Count > 0)
            {//水表
@@ -159,14 +159,6 @@
            {//过渡件
                list.AddRange(this.Translations);
            }
            if (this.Exchangers != null && this.Exchangers.Count > 0)
            {//换热器
                list.AddRange(this.Exchangers);
            }
            if (this.Compressors != null && this.Compressors.Count > 0)
            {//空压机
                list.AddRange(this.Compressors);
            }
            if (this.Pumps != null && this.Pumps.Count > 0)
            {//æ°´æ³µ
                list.AddRange(this.Pumps);
@@ -174,6 +166,14 @@
            if (this.Valves != null && this.Valves.Count > 0)
            {//阀门
                list.AddRange(this.Valves);
            }
            if (this.Exchangers != null && this.Exchangers.Count > 0)
            {//换热器
                list.AddRange(this.Exchangers);
            }
            if (this.Compressors != null && this.Compressors.Count > 0)
            {//空压机
                list.AddRange(this.Compressors);
            }
            return list;
@@ -201,14 +201,6 @@
            {//连接节点
                list.AddRange(this.Junctions);
            }
            if (this.Nozzles != null && this.Nozzles.Count > 0)
            {//喷嘴
                list.AddRange(this.Nozzles);
            }
            if (this.Hydrants != null && this.Hydrants.Count > 0)
            {//消火栓
                list.AddRange(this.Hydrants);
            }
            if (this.Bluntheads != null && this.Bluntheads.Count > 0)
            {//闷头
                list.AddRange(this.Bluntheads);
@@ -224,6 +216,14 @@
            if (this.Fourlinks != null && this.Fourlinks.Count > 0)
            {//四通
                list.AddRange(this.Fourlinks);
            }
            if (this.Nozzles != null && this.Nozzles.Count > 0)
            {//喷嘴
                list.AddRange(this.Nozzles);
            }
            if (this.Hydrants != null && this.Hydrants.Count > 0)
            {//消火栓
                list.AddRange(this.Hydrants);
            }
            if (this.Meters != null && this.Meters.Count > 0)
            {//水表
@@ -271,14 +271,6 @@
            {//连接节点
                list.AddRange(this.Junctions);
            }
            if (this.Nozzles != null && this.Nozzles.Count > 0)
            {//喷嘴
                list.AddRange(this.Nozzles);
            }
            if (this.Hydrants != null && this.Hydrants.Count > 0)
            {//消火栓
                list.AddRange(this.Hydrants);
            }
            if (this.Bluntheads != null && this.Bluntheads.Count > 0)
            {//闷头
                list.AddRange(this.Bluntheads);
@@ -294,6 +286,14 @@
            if (this.Fourlinks != null && this.Fourlinks.Count > 0)
            {//四通
                list.AddRange(this.Fourlinks);
            }
            if (this.Nozzles != null && this.Nozzles.Count > 0)
            {//喷嘴
                list.AddRange(this.Nozzles);
            }
            if (this.Hydrants != null && this.Hydrants.Count > 0)
            {//消火栓
                list.AddRange(this.Hydrants);
            }
            if (this.Meters != null && this.Meters.Count > 0)
            {//水表
@@ -369,14 +369,6 @@
            {//过渡件
                list.AddRange(this.Translations);
            }
            if (this.Exchangers != null && this.Exchangers.Count > 0)
            {//换热器
                list.AddRange(this.Exchangers);
            }
            if (this.Compressors != null && this.Compressors.Count > 0)
            {//空压机
                list.AddRange(this.Compressors);
            }
            if (this.Pumps != null && this.Pumps.Count > 0)
            {//æ°´æ³µ
                list.AddRange(this.Pumps);
@@ -384,6 +376,14 @@
            if (this.Valves != null && this.Valves.Count > 0)
            {//阀门
                list.AddRange(this.Valves);
            }
            if (this.Exchangers != null && this.Exchangers.Count > 0)
            {//换热器
                list.AddRange(this.Exchangers);
            }
            if (this.Compressors != null && this.Compressors.Count > 0)
            {//空压机
                list.AddRange(this.Compressors);
            }
            return list;
@@ -404,14 +404,6 @@
            if (this.Translations != null && this.Translations.Count > 0)
            {//过渡件
                list.AddRange(this.Translations);
            }
            if (this.Compressors != null && this.Compressors.Count > 0)
            {//空压机
                list.AddRange(this.Compressors);
            }
            if (this.Exchangers != null && this.Exchangers.Count > 0)
            {//换热器
                list.AddRange(this.Exchangers);
            }
            return list;
Service/HStation.Service.Revit.Core/02-parter/00-core/RevitParter.cs
@@ -18,7 +18,6 @@
            this.Id = rhs.Id;
            this.Catalog = rhs.Catalog;
            this.Name = rhs.Name;
            this.Code = rhs.Code;
            this.ModelType = rhs.ModelType;
            this.Flags = rhs.Flags;
            this.Description = rhs.Description;
@@ -41,11 +40,6 @@
        /// åç§°
        /// </summary>    
        public string Name { get; set; }
        /// <summary>
        /// ç¼–码
        /// </summary>
        public string Code { get; set; }
        /// <summary>
        /// åž‹å·
@@ -72,6 +66,43 @@
        /// </summary>
        public List<RevitPropStatus> PropStatusList { get; set; }
        /// <summary>
        /// èŽ·å–å±žæ€§åç§°
        /// </summary>
        public RevitPropStatus GetPropStatus(string propName)
        {
            if (string.IsNullOrEmpty(propName))
            {
                return default;
            }
            var propStatus = this.PropStatusList?.Find(x => x.PropName == propName);
            return propStatus;
        }
        /// <summary>
        /// æ›´æ–°å±žæ€§çŠ¶æ€
        /// </summary>
        public bool UpdatePropStatus(string propName, ePropStatus propStatus, string statusInfo)
        {
            if (string.IsNullOrEmpty(propName))
            {
                return false;
            }
            if (this.PropStatusList == null)
            {
                this.PropStatusList = new List<Model.RevitPropStatus>();
            }
            var propStatusModel = this.GetPropStatus(propName);
            if (propStatusModel == null)
            {
                propStatusModel = new Model.RevitPropStatus() { PropName = propName };
                this.PropStatusList.Add(propStatusModel);
            }
            propStatusModel.PropStatus = propStatus;
            propStatusModel.StatusInfo = statusInfo;
            return true;
        }
    }
}
Service/HStation.Service.Revit.Core/02-parter/01-visual/RevitVisual.cs
@@ -8,7 +8,7 @@
        /// <summary>
        /// 
        /// </summary>
        public RevitVisual() : base() { }
        public RevitVisual() { }
        /// <summary>
        /// 
Service/HStation.Service.Revit.Core/02-parter/02-node/00-core/RevitNode.cs
@@ -8,21 +8,15 @@
        /// <summary>
        /// 
        /// </summary>
        public RevitNode() : base() { }
        public RevitNode() { }
        /// <summary>
        /// 
        /// </summary>
        public RevitNode(RevitNode rhs) : base(rhs)
        {
            this.Quality = rhs.Quality;
            this.Position = new RevitPosition(rhs.Position);
        }
        /// <summary>
        /// åˆå§‹æ°´è´¨
        /// </summary>
        public double Quality { get; set; }
        /// <summary>
        /// ä½ç½®
Service/HStation.Service.Revit.Core/02-parter/02-node/01-source/00-core/RevitSource.cs
@@ -8,7 +8,7 @@
        /// <summary>
        /// 
        /// </summary>
        public RevitSource() : base() { }
        public RevitSource() { }
        /// <summary>
        /// 
Service/HStation.Service.Revit.Core/02-parter/02-node/01-source/01-reservoir/RevitReservoir.cs
@@ -8,7 +8,7 @@
        /// <summary>
        /// 
        /// </summary>
        public RevitReservoir() : base() { }
        public RevitReservoir() { }
        /// <summary>
        /// 
Service/HStation.Service.Revit.Core/02-parter/02-node/01-source/02-tank/RevitTank.cs
@@ -8,7 +8,7 @@
        /// <summary>
        /// 
        /// </summary>
        public RevitTank() : base() { }
        public RevitTank() { }
        /// <summary>
        /// 
Service/HStation.Service.Revit.Core/02-parter/02-node/01-source/02-tank/RevitWaterbox.cs
@@ -8,7 +8,7 @@
        /// <summary>
        /// 
        /// </summary>
        public RevitWaterbox() : base() { }
        public RevitWaterbox() { }
        /// <summary>
        /// 
Service/HStation.Service.Revit.Core/02-parter/02-node/02-junction/00-core/RevitJunction.cs
@@ -8,7 +8,7 @@
        /// <summary>
        /// 
        /// </summary>
        public RevitJunction() : base() { }
        public RevitJunction() { }
        /// <summary>
        /// 
Service/HStation.Service.Revit.Core/02-parter/02-node/02-junction/01-coupling/00-core/RevitCoupling.cs
@@ -15,7 +15,8 @@
        /// </summary>
        public RevitCoupling(RevitCoupling rhs) : base(rhs)
        {
            this.Material = rhs.Material;
            this.Caliber = rhs.Caliber;
        }
        /// <summary>
@@ -28,10 +29,6 @@
        /// </summary>
        public double? Caliber { get; set; }
        /// <summary>
        /// å±€éƒ¨é˜»åŠ›ç³»æ•°
        /// </summary>
        public double? MinorLoss { get; set; }
    }
Service/HStation.Service.Revit.Core/02-parter/02-node/02-junction/01-coupling/02-elbow/RevitElbow.cs
@@ -8,7 +8,7 @@
        /// <summary>
        /// 
        /// </summary>
        public RevitElbow() : base() { }
        public RevitElbow() { }
        /// <summary>
        /// 
@@ -18,7 +18,15 @@
        }
        /// <summary>
        /// å¼¯æ›²è§’度
        /// </summary>
        public double? BendingAngle { get; set; }
        /// <summary>
        /// å¼¯å¤´ç±»åž‹
        /// </summary>
        public string ElbowType { get; set; }
    }
Service/HStation.Service.Revit.Core/02-parter/02-node/02-junction/01-coupling/03-threelink/RevitThreelink.cs
@@ -8,17 +8,26 @@
        /// <summary>
        /// 
        /// </summary>
        public RevitThreelink() : base() { }
        public RevitThreelink() { }
        /// <summary>
        /// 
        /// </summary>
        public RevitThreelink(RevitThreelink rhs) : base(rhs)
        {
            this.RunningThroughLoss = rhs.RunningThroughLoss;
            this.BranchThroughLoss = rhs.BranchThroughLoss;
        }
        /// <summary>
        /// è¿è¡ŒæŸå¤±ç³»æ•°
        /// </summary>
        public double? RunningThroughLoss { get; set; }
        /// <summary>
        /// æ”¯ç®¡æŸå¤±ç³»æ•°
        /// </summary>
        public double? BranchThroughLoss { get; set; }
    }
Service/HStation.Service.Revit.Core/02-parter/02-node/02-junction/01-coupling/04-fourlink/RevitFourlink.cs
@@ -8,7 +8,7 @@
        /// <summary>
        /// 
        /// </summary>
        public RevitFourlink() : base() { }
        public RevitFourlink() { }
        /// <summary>
        /// 
Service/HStation.Service.Revit.Core/02-parter/02-node/02-junction/02-emitter/00-core/RevitEmitter.cs
@@ -8,17 +8,29 @@
        /// <summary>
        /// 
        /// </summary>
        public RevitEmitter() : base() { }
        public RevitEmitter() { }
        /// <summary>
        /// 
        /// </summary>
        public RevitEmitter(RevitEmitter rhs) : base(rhs)
        {
            this.Material = rhs.Material;
            this.Caliber = rhs.Caliber;
            this.Coefficient = rhs.Coefficient;
        }
        /// <summary>
        /// æè´¨
        /// </summary>
        public string Material { get; set; }
        /// <summary>
        /// å£å¾„(mm)
        /// </summary>
        public double? Caliber { get; set; }
        /// <summary>
        /// æµé‡ç³»æ•°
        /// </summary>
        public double Coefficient { get; set; }
Service/HStation.Service.Revit.Core/02-parter/02-node/02-junction/02-emitter/01-nozzle/RevitNozzle.cs
@@ -8,7 +8,7 @@
        /// <summary>
        /// 
        /// </summary>
        public RevitNozzle() : base() { }
        public RevitNozzle() { }
        /// <summary>
        /// 
Service/HStation.Service.Revit.Core/02-parter/02-node/02-junction/02-emitter/02-hydrant/RevitHydrant.cs
@@ -8,7 +8,7 @@
        /// <summary>
        /// 
        /// </summary>
        public RevitHydrant() : base() { }
        public RevitHydrant() { }
        /// <summary>
        /// 
Service/HStation.Service.Revit.Core/02-parter/02-node/02-junction/03-meter/RevitFlowmeter.cs
ÎļþÃû´Ó Service/HStation.Service.Revit.Core/02-parter/02-node/02-junction/03-other/RevitFlowmeter.cs ÐÞ¸Ä
@@ -8,7 +8,7 @@
        /// <summary>
        /// 
        /// </summary>
        public RevitFlowmeter() : base() { }
        public RevitFlowmeter() { }
        /// <summary>
        /// 
@@ -19,7 +19,7 @@
        }
        /// <summary>
        /// å½“前流量
        /// å½“前流量(m³/h)
        /// </summary>
        public double? CurrentFlow { get; set; }
Service/HStation.Service.Revit.Core/02-parter/02-node/02-junction/03-meter/RevitMeter.cs
ÎļþÃû´Ó Service/HStation.Service.Revit.Core/02-parter/02-node/02-junction/03-other/RevitMeter.cs ÐÞ¸Ä
@@ -8,7 +8,7 @@
        /// <summary>
        /// 
        /// </summary>
        public RevitMeter() : base() { }
        public RevitMeter() { }
        /// <summary>
        /// 
Service/HStation.Service.Revit.Core/02-parter/02-node/02-junction/03-meter/RevitPressmeter.cs
ÎļþÃû´Ó Service/HStation.Service.Revit.Core/02-parter/02-node/02-junction/03-other/RevitPressmeter.cs ÐÞ¸Ä
@@ -8,14 +8,14 @@
        /// <summary>
        /// 
        /// </summary>
        public RevitPressmeter() : base() { }
        public RevitPressmeter() { }
        /// <summary>
        /// 
        /// </summary>
        public RevitPressmeter(RevitPressmeter rhs) : base(rhs)
        {
            this.CurrentPress = rhs.CurrentPress;
        }
Service/HStation.Service.Revit.Core/02-parter/03-link/00-core/RevitLink.cs
@@ -8,7 +8,7 @@
        /// <summary>
        /// 
        /// </summary>
        public RevitLink() : base() { }
        public RevitLink() { }
        /// <summary>
        /// 
@@ -18,10 +18,6 @@
            this.StartCode = rhs.StartCode;
            this.EndCode = rhs.EndCode;
            this.LinkStatus = rhs.LinkStatus;
            this.StartElev = rhs.StartElev;
            this.EndElev = rhs.EndElev;
            this.StartQuality = rhs.StartQuality;
            this.EndQuality = rhs.EndQuality;
            this.StartPosition = new RevitPosition(rhs.StartPosition);
            this.EndPosition = new RevitPosition(rhs.EndPosition);
        }
@@ -40,26 +36,6 @@
        /// ç®¡æ®µçŠ¶æ€
        /// </summary>
        public string LinkStatus { get; set; }
        /// <summary>
        /// ä¸Šæ¸¸æ ‡é«˜ (m)
        /// </summary>
        public double StartElev { get; set; }
        /// <summary>
        /// ä¸‹æ¸¸æ ‡é«˜ (m)
        /// </summary>
        public double EndElev { get; set; }
        /// <summary>
        /// ä¸Šæ¸¸åˆå§‹æ°´è´¨
        /// </summary>
        public double StartQuality { get; set; }
        /// <summary>
        /// ä¸‹æ¸¸åˆå§‹æ°´è´¨
        /// </summary>
        public double EndQuality { get; set; }
        /// <summary>
        /// å¼€å§‹ä½ç½®
Service/HStation.Service.Revit.Core/02-parter/03-link/01-pipe/RevitCompressor.cs
ÎļþÒÑɾ³ý
Service/HStation.Service.Revit.Core/02-parter/03-link/01-pipe/RevitExchanger.cs
ÎļþÒÑɾ³ý
Service/HStation.Service.Revit.Core/02-parter/03-link/01-pipe/RevitPipe.cs
@@ -8,7 +8,7 @@
        /// <summary>
        /// 
        /// </summary>
        public RevitPipe() : base() { }
        public RevitPipe() { }
        /// <summary>
        /// 
Service/HStation.Service.Revit.Core/02-parter/03-link/01-pipe/RevitTranslation.cs
@@ -8,18 +8,21 @@
        /// <summary>
        /// 
        /// </summary>
        public RevitTranslation() : base() { }
        public RevitTranslation() { }
        /// <summary>
        /// 
        /// </summary>
        public RevitTranslation(RevitTranslation rhs) : base(rhs)
        {
            this.Elev = rhs.Elev;
        }
        /// <summary>
        /// æ ‡é«˜
        /// </summary>
        public double Elev { get; set; }
    }
}
Service/HStation.Service.Revit.Core/02-parter/03-link/02-pump/RevitPump.cs
@@ -8,16 +8,17 @@
        /// <summary>
        /// 
        /// </summary>
        public RevitPump() : base() { }
        public RevitPump() { }
        /// <summary>
        /// 
        /// </summary>
        public RevitPump(RevitPump rhs) : base(rhs)
        {
            this.RatedP = rhs.RatedP;
            this.Elev = rhs.Elev;
            this.RatedQ = rhs.RatedQ;
            this.RatedH = rhs.RatedH;
            this.RatedP = rhs.RatedP;
            this.RatedN = rhs.RatedN;
            this.RatedHz = rhs.RatedHz;
            this.CurveQH = rhs.CurveQH;
@@ -25,14 +26,12 @@
            this.CurveQE = rhs.CurveQE;
            this.SpeedRatio = rhs.SpeedRatio;
            this.SpeedRatioPattern = rhs.SpeedRatioPattern;
            this.Price = rhs.Price;
            this.PricePattern = rhs.PricePattern;
        }
        /// <summary>
        ///  é¢å®šåŠŸçŽ‡ (kW)
        /// æ ‡é«˜
        /// </summary>
        public double RatedP { get; set; }
        public double Elev { get; set; }
        /// <summary>
        /// é¢å®šæµé‡ï¼ˆm³/h)
@@ -43,6 +42,11 @@
        /// é¢å®šæ‰¬ç¨‹ï¼ˆm)
        /// </summary>
        public double? RatedH { get; set; }
        /// <summary>
        ///  é¢å®šåŠŸçŽ‡ (kW)
        /// </summary>
        public double RatedP { get; set; }
        /// <summary>
        /// é¢å®šè½¬é€Ÿï¼ˆr/min)
@@ -79,15 +83,6 @@
        /// </summary>
        public string SpeedRatioPattern { get; set; }
        /// <summary>
        ///  èƒ½è€—ä»·æ ¼
        /// </summary>
        public double? Price { get; set; }
        /// <summary>
        ///  ä»·æ ¼æ¨¡å¼
        /// </summary>
        public string PricePattern { get; set; }
Service/HStation.Service.Revit.Core/02-parter/03-link/03-valve/RevitValve.cs
@@ -8,20 +8,27 @@
        /// <summary>
        /// 
        /// </summary>
        public RevitValve() : base() { }
        public RevitValve() { }
        /// <summary>
        /// 
        /// </summary>
        public RevitValve(RevitValve rhs) : base(rhs)
        {
            this.Elev = rhs.Elev;
            this.Material = rhs.Material;
            this.Diameter = rhs.Diameter;
            this.MinorLoss = rhs.MinorLoss;
            this.ValveType = rhs.ValveType;
            this.ValveSetting = rhs.ValveSetting;
            this.OpeningDegree = rhs.OpeningDegree;
            this.Roughness = rhs.Roughness;
        }
        /// <summary>
        /// æ ‡é«˜
        /// </summary>
        public double Elev { get; set; }
        /// <summary>
        /// æè´¨
@@ -34,7 +41,7 @@
        public double Diameter { get; set; }
        /// <summary>
        /// å±€éƒ¨é˜»åŠ›ç³»æ•°
        /// å±€é˜»ç³»æ•°
        /// </summary>
        public double MinorLoss { get; set; }
@@ -53,6 +60,11 @@
        /// </summary>
        public double OpeningDegree { get; set; }
        /// <summary>
        /// ç²—糙系数
        /// </summary>
        public double Roughness { get; set; }
    }
}
Service/HStation.Service.Revit.Core/02-parter/03-link/04-exchanger/RevitExchanger.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,52 @@
namespace HStation.Model
{
    /// <summary>
    /// æ¢çƒ­å™¨
    /// </summary>
    public class RevitExchanger : RevitLink
    {
        /// <summary>
        ///
        /// </summary>
        public RevitExchanger() { }
        /// <summary>
        ///
        /// </summary>
        public RevitExchanger(RevitExchanger rhs) : base(rhs)
        {
            this.Elev = rhs.Elev;
            this.Material = rhs.Material;
            this.Diameter = rhs.Diameter;
            this.MinorLoss = rhs.MinorLoss;
            this.CurveQL = rhs.CurveQL;
        }
        /// <summary>
        /// æ ‡é«˜
        /// </summary>
        public double Elev { get; set; }
        /// <summary>
        /// æè´¨
        /// </summary>
        public string Material { get; set; }
        /// <summary>
        /// é˜€é—¨ç›´å¾„ (mm)
        /// </summary>
        public double Diameter { get; set; }
        /// <summary>
        /// å±€é˜»ç³»æ•°
        /// </summary>
        public double MinorLoss { get; set; }
        /// <summary>
        /// æ°´å¤´æŸå¤±æ›²çº¿
        /// </summary>
        public string CurveQL { get; set; }
    }
}
Service/HStation.Service.Revit.Core/02-parter/03-link/05-compressor/RevitCompressor.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,53 @@
namespace HStation.Model
{
    /// <summary>
    /// ç©ºåŽ‹æœº
    /// </summary>
    public class RevitCompressor : RevitLink
    {
        /// <summary>
        ///
        /// </summary>
        public RevitCompressor() { }
        /// <summary>
        ///
        /// </summary>
        public RevitCompressor(RevitCompressor rhs) : base(rhs)
        {
            this.Elev = rhs.Elev;
            this.Material = rhs.Material;
            this.Diameter = rhs.Diameter;
            this.MinorLoss = rhs.MinorLoss;
            this.CurveQL = rhs.CurveQL;
        }
        /// <summary>
        /// æ ‡é«˜
        /// </summary>
        public double Elev { get; set; }
        /// <summary>
        /// æè´¨
        /// </summary>
        public string Material { get; set; }
        /// <summary>
        /// é˜€é—¨ç›´å¾„ (mm)
        /// </summary>
        public double Diameter { get; set; }
        /// <summary>
        /// å±€é˜»ç³»æ•°
        /// </summary>
        public double MinorLoss { get; set; }
        /// <summary>
        /// æ°´å¤´æŸå¤±æ›²çº¿
        /// </summary>
        public string CurveQL { get; set; }
    }
}
Service/HStation.Service.Revit.Core/03-decorator/RevitDecorator.cs
@@ -17,7 +17,6 @@
        {
            this.Id = rhs.Id;
            this.Name = rhs.Name;
            this.Code = rhs.Code;
            this.Category = rhs.Category;
            this.Decoration = rhs.Decoration;
            this.Description = rhs.Description;
@@ -32,11 +31,6 @@
        /// åç§°
        /// </summary>
        public string Name { get; set; }
        /// <summary>
        /// ç¼–码
        /// </summary>
        public string Code { get; set; }
        /// <summary>
        /// ç±»åˆ«
Service/HStation.Service.Revit.Core/04-service/01-json/00-core/RevitJsonProp.cs
@@ -7,37 +7,32 @@
    {
        /// <summary>
        /// ç±»åˆ«
        /// æž„件类型
        /// </summary>
        public const string Catalog = "构件类型";
        /// <summary>
        /// Id
        /// æž„件编码
        /// </summary>
        public const string Id = "构件编码";
        /// <summary>
        /// ç¼–码
        /// æž„件名称
        /// </summary>
        public const string Code = "编码";
        public const string Name = "构件名称";
        /// <summary>
        /// åç§°
        /// </summary>
        public const string Name = "名称";
        /// <summary>
        /// åž‹å·
        /// åž‹å·ä¿¡æ¯
        /// </summary>
        public const string ModelType = "型号信息";
        /// <summary>
        /// æ ‡ç­¾
        /// æ ‡ç­¾ä¿¡æ¯
        /// </summary>
        public const string Flags = "标签";
        public const string Flags = "标签信息";
        /// <summary>
        /// è¯´æ˜Ž
        /// è¯´æ˜Žä¿¡æ¯
        /// </summary>
        public const string Description = "说明信息";
@@ -47,9 +42,29 @@
        public const string Connects = "连接列表";
        /// <summary>
        /// åˆå§‹æ°´è´¨
        /// ä¸Šæ¸¸æž„ä»¶
        /// </summary>
        public const string Quality = "初始水质";
        public const string StartCode = "上游构件";
        /// <summary>
        /// ä¸Šæ¸¸æž„件位置
        /// </summary>
        public const string StartPosition = "上游构件位置";
        /// <summary>
        /// ä¸‹æ¸¸æž„ä»¶
        /// </summary>
        public const string EndCode = "下游构件";
        /// <summary>
        /// ä¸‹æ¸¸æž„件位置
        /// </summary>
        public const string EndPosition = "下游构件位置";
        /// <summary>
        /// ä½ç½®ä¿¡æ¯
        /// </summary>
        public const string Position = "位置信息";
        /// <summary>
        /// æ ‡é«˜ä¿¡æ¯
@@ -60,16 +75,6 @@
        /// æ ‡é«˜ä¸­çš„高程
        /// </summary>
        public const string ElevOfElevation = "标高中的高程";
        /// <summary>
        /// ä¸Šæ¸¸æ ‡é«˜
        /// </summary>
        public const string StartElev = "上游标高";
        /// <summary>
        /// ä¸‹æ¸¸æ ‡é«˜
        /// </summary>
        public const string EndElev = "下游标高";
        /// <summary>
        /// æ± åº•标高
@@ -87,7 +92,7 @@
        public const string DemandPattern = "需水模式";
        /// <summary>
        /// æµé‡/喷射系数
        /// å–·å°„系数
        /// </summary>
        public const string CoefficientP = "喷射系数";
@@ -97,49 +102,54 @@
        public const string CoefficientF = "流量系数";
        /// <summary>
        /// æè´¨
        /// æè´¨ä¿¡æ¯
        /// </summary>
        public const string Material = "材质信息";
        /// <summary>
        /// æ€»æ°´å¤´ï¼ˆæ°´åº“)
        /// æ€»æ°´å¤´
        /// </summary>
        public const string Head = "总水头";
        /// <summary>
        /// æ°´å¤´æ¨¡å¼ï¼ˆæ°´åº“)
        /// æ°´å¤´æ¨¡å¼
        /// </summary>
        public const string HeadPattern = "水头模式";
        /// <summary>
        /// åˆå§‹æ°´ä½ï¼ˆæ°´æ± ï¼‰
        /// åˆå§‹æ°´ä½
        /// </summary>
        public const string InitLevel = "初始水位";
        /// <summary>
        /// æœ€ä½Žæ°´ä½ï¼ˆæ°´æ± ï¼‰
        /// æœ€ä½Žæ°´ä½
        /// </summary>
        public const string MinLevel = "最低水位";
        /// <summary>
        /// æœ€é«˜æ°´ä½ï¼ˆæ°´æ± ï¼‰
        /// æœ€é«˜æ°´ä½
        /// </summary>
        public const string MaxLevel = "最高水位";
        /// <summary>
        /// æœ€å°å®¹ç§¯ï¼ˆæ°´æ± ï¼‰
        /// æœ€å°å®¹ç§¯
        /// </summary>
        public const string MinVol = "最小容积";
        /// <summary>
        /// å®¹ç§¯æ›²çº¿ï¼ˆæ°´æ± ï¼‰
        /// å®¹ç§¯æ›²çº¿
        /// </summary>
        public const string VolCurve = "容积曲线";
        /// <summary>
        /// ç›´å¾„
        /// å…è®¸æº¢æµ
        /// </summary>
        public const string Diameter = "直径";
        public const string OverFlow = "允许溢流";
        /// <summary>
        /// ç›´å¾„信息
        /// </summary>
        public const string Diameter = "直径信息";
        /// <summary>
        /// å…¬ç§°ç›´å¾„
@@ -147,9 +157,9 @@
        public const string DN = "公称直径";
        /// <summary>
        /// å£å¾„
        /// å£å¾„信息
        /// </summary>
        public const string Caliber = "口径";
        public const string Caliber = "口径信息";
        /// <summary>
        /// å†…径
@@ -157,24 +167,45 @@
        public const string InternalDiameter = "内径";
        /// <summary>
        /// ç®¡æ®µçŠ¶æ€/管道状态
        /// å¼¯æ›²è§’度
        /// </summary>
        public const string BendingAngle = "弯曲角度";
        /// <summary>
        /// å¼¯å¤´ç±»åž‹
        /// </summary>
        public const string ElbowType = "弯头类型";
        /// <summary>
        /// ç®¡æ®µçŠ¶æ€
        /// </summary>
        public const string LinkStatus = "管段状态";
        /// <summary>
        /// ç®¡é“状态
        /// </summary>
        public const string LinkStatusPipe = "管道状态";
        /// <summary>
        /// ä¸Šæ¸¸åˆå§‹æ°´è´¨
        /// æ°´æ³µçŠ¶æ€
        /// </summary>
        public const string StartQuality = "上游初始水质";
        public const string LinkStatusPump = "水泵状态";
        /// <summary>
        /// ä¸‹æ¸¸åˆå§‹æ°´è´¨
        /// é˜€é—¨çŠ¶æ€
        /// </summary>
        public const string EndQuality = "下游初始水质";
        public const string LinkStatusValve = "阀门状态";
        /// <summary>
        /// é•¿åº¦ï¼ˆç®¡æ®µï¼‰
        /// å¼€å…³çŠ¶æ€
        /// </summary>
        public const string Length = "长度";
        public const string LinkStatusSwitch = "开关状态";
        /// <summary>
        /// é•¿åº¦ä¿¡æ¯
        /// </summary>
        public const string Length = "长度信息";
        /// <summary>
        /// ç²—糙系数(管段)
@@ -182,19 +213,19 @@
        public const string Roughness = "粗糙系数";
        /// <summary>
        /// å±€éƒ¨é˜»åŠ›ç³»æ•°ï¼ˆç®¡æ®µã€é˜€é—¨ï¼‰
        /// å±€é˜»ç³»æ•°
        /// </summary>
        public const string MinorLoss = "局部阻力系数";
        public const string MinorLoss = "局阻系数";
        /// <summary>
        /// æŸå¤±K系数
        /// è¿è¡ŒæŸå¤±ç³»æ•°
        /// </summary>
        public const string MinorLossK = "损失K系数";
        public const string RunningThroughLoss = "运行损失系数";
        /// <summary>
        /// æ°´æ³µçŠ¶æ€
        /// æ”¯ç®¡æŸå¤±ç³»æ•°
        /// </summary>
        public const string LinkStatusPump = "水泵状态";
        public const string BranchThroughLoss = "支管损失系数";
        /// <summary>
        /// é¢å®šåŠŸçŽ‡
@@ -237,6 +268,11 @@
        public const string CurveQE = "流量效率曲线";
        /// <summary>
        /// æ°´å¤´æŸå¤±æ›²çº¿
        /// </summary>
        public const string CurveQL = "水头损失曲线";
        /// <summary>
        /// è½¬é€Ÿæ¯”(水泵)
        /// </summary>
        public const string SpeedRatio = "转速比";
@@ -245,21 +281,6 @@
        /// è½¬é€Ÿæ¯”模式(水泵)
        /// </summary>
        public const string SpeedRatioPattern = "转速比模式";
        /// <summary>
        /// èƒ½è€—价格(水泵)
        /// </summary>
        public const string Price = "能耗价格";
        /// <summary>
        /// ä»·æ ¼æ¨¡å¼ï¼ˆæ°´æ³µï¼‰
        /// </summary>
        public const string PricePattern = "价格模式";
        /// <summary>
        /// é˜€é—¨çŠ¶æ€
        /// </summary>
        public const string LinkStatusValve = "阀门状态";
        /// <summary>
        /// é˜€é—¨ç±»åž‹
@@ -287,14 +308,14 @@
        public const string ClanName = "族名称";
        /// <summary>
        /// æµé‡
        /// æµé‡ä¿¡æ¯
        /// </summary>
        public const string Flow = "流量";
        public const string CurrentFlow = "流量信息";
        /// <summary>
        /// åŽ‹åŠ›
        /// åŽ‹åŠ›ä¿¡æ¯
        /// </summary>
        public const string Press = "压力";
        public const string CurrentPress = "压力信息";
Service/HStation.Service.Revit.Core/04-service/01-json/02-helper/RevitParterExtensions.cs
ÎļþÒÑɾ³ý
Service/HStation.Service.Revit.Core/04-service/01-json/RevitJsonHelper.cs
ÎļþÌ«´ó
Service/HStation.Service.Revit.Core/04-service/02-correct/RevitCorrectHelper.cs
@@ -33,6 +33,10 @@
            {//修正换热器
                result = false;
            }
            if (!CorrectCompressor(rhs, ref msgList))
            {//修正空压机
                result = false;
            }
            if (!CorrectCode(rhs, ref msgList))
            {//修正编码
                result = false;
@@ -88,6 +92,14 @@
            {//四通
                rhs.Fourlinks = new List<Model.RevitFourlink>();
            }
            if (rhs.Nozzles == null)
            {//喷头
                rhs.Nozzles = new List<Model.RevitNozzle>();
            }
            if (rhs.Hydrants == null)
            {//消火栓
                rhs.Hydrants = new List<Model.RevitHydrant>();
            }
            if (rhs.Meters == null)
            {//水表
                rhs.Meters = new List<RevitMeter>();
@@ -100,14 +112,6 @@
            {//压力表
                rhs.Pressmeters = new List<Model.RevitPressmeter>();
            }
            if (rhs.Nozzles == null)
            {//喷头
                rhs.Nozzles = new List<Model.RevitNozzle>();
            }
            if (rhs.Hydrants == null)
            {//消火栓
                rhs.Hydrants = new List<Model.RevitHydrant>();
            }
            if (rhs.Pipes == null)
            {//管道
@@ -117,10 +121,6 @@
            {//过渡件
                rhs.Translations = new List<Model.RevitTranslation>();
            }
            if (rhs.Exchangers == null)
            {//换热器
                rhs.Exchangers = new List<RevitExchanger>();
            }
            if (rhs.Pumps == null)
            {//æ°´æ³µ
                rhs.Pumps = new List<Model.RevitPump>();
@@ -128,6 +128,14 @@
            if (rhs.Valves == null)
            {//阀门
                rhs.Valves = new List<Model.RevitValve>();
            }
            if (rhs.Exchangers == null)
            {//换热器
                rhs.Exchangers = new List<RevitExchanger>();
            }
            if (rhs.Compressors == null)
            {//空压机
                rhs.Compressors = new List<RevitCompressor>();
            }
            return true;
        }
@@ -338,19 +346,6 @@
                    }
                }
            }
            if (rhs.Exchangers != null && rhs.Exchangers.Count > 0)
            {//换热器
                var exchangerNameList = rhs.Exchangers.Where(x => !string.IsNullOrEmpty(x.Name)).Select(x => x.Name).Distinct().ToList();
                foreach (var exchanger in rhs.Exchangers)
                {
                    if (string.IsNullOrEmpty(exchanger.Name))
                    {
                        var exchangerName = Yw.Untity.UniqueHelper.CreateFromFirst("换热器", exchangerNameList);
                        exchanger.Name = exchangerName;
                        exchangerNameList.Add(exchangerName);
                    }
                }
            }
            if (rhs.Pumps != null && rhs.Pumps.Count > 0)
            {//æ°´æ³µ
                var pumpNameList = rhs.Pumps.Where(x => !string.IsNullOrEmpty(x.Name)).Select(x => x.Name).Distinct().ToList();
@@ -374,6 +369,32 @@
                        var valveName = Yw.Untity.UniqueHelper.CreateFromFirst("阀门", valveNameList);
                        valve.Name = valveName;
                        valveNameList.Add(valveName);
                    }
                }
            }
            if (rhs.Exchangers != null && rhs.Exchangers.Count > 0)
            {//换热器
                var exchangerNameList = rhs.Exchangers.Where(x => !string.IsNullOrEmpty(x.Name)).Select(x => x.Name).Distinct().ToList();
                foreach (var exchanger in rhs.Exchangers)
                {
                    if (string.IsNullOrEmpty(exchanger.Name))
                    {
                        var exchangerName = Yw.Untity.UniqueHelper.CreateFromFirst("换热器", exchangerNameList);
                        exchanger.Name = exchangerName;
                        exchangerNameList.Add(exchangerName);
                    }
                }
            }
            if (rhs.Compressors != null && rhs.Compressors.Count > 0)
            {//空压机
                var compressorNameList = rhs.Compressors.Where(x => !string.IsNullOrEmpty(x.Name)).Select(x => x.Name).Distinct().ToList();
                foreach (var compressor in rhs.Compressors)
                {
                    if (string.IsNullOrEmpty(compressor.Name))
                    {
                        var compressorName = Yw.Untity.UniqueHelper.CreateFromFirst("空压机", compressorNameList);
                        compressor.Name = compressorName;
                        compressorNameList.Add(compressorName);
                    }
                }
            }
@@ -414,7 +435,6 @@
                                {
                                    var decorator = new Model.RevitDecorator();
                                    decorator.Id = blunthead.Id;
                                    decorator.Code = blunthead.Code;
                                    decorator.Name = blunthead.Name;
                                    decorator.Category = RevitJsonCatalog.Blunthead;
                                    decorator.Decoration = null;
@@ -441,24 +461,22 @@
                        }
                        if (startConnectList.Count < 1)
                        {
                            msgList.Add($"换热器[{exchanger.Code}]上游连接组件不存在");
                            msgList.Add($"换热器[{exchanger.Id}]上游连接组件不存在");
                            result = false;
                            continue;
                        }
                        var startJunction = new Model.RevitJunction();
                        startJunction.Id = Yw.Untity.UniqueHelper.CreateFromFirst("junction", allParterList.Select(x => x.Code).ToList());
                        startJunction.Code = startJunction.Id;
                        startJunction.Id = Yw.Untity.UniqueHelper.CreateFromFirst("junction", allParterList.Select(x => x.Id).ToList());
                        startJunction.Name = UniqueHelper.CreateFromFirst("连接节点", allParterList.Select(x => x.Name).Distinct().ToList());
                        startJunction.Flags = null;
                        startJunction.ModelType = null;
                        startJunction.Description = "换热器修正时,自动添加";
                        startJunction.Quality = exchanger.StartQuality;
                        startJunction.Position = startConnectList.GetCenterPosition();
                        startJunction.Elev = exchanger.StartElev;
                        startJunction.Elev = exchanger.Elev;
                        startJunction.Demand = null;
                        startJunction.DemandPattern = null;
                        rhs.Junctions.Add(startJunction);
                        exchanger.StartCode = startJunction.Code;
                        exchanger.StartCode = startJunction.Id;
                        foreach (var startConnect in startConnectList)
                        {
                            var startConnectParter = allParterList.Find(x => x.Id == startConnect.Id);
@@ -491,24 +509,22 @@
                        }
                        if (endConnectList.Count < 1)
                        {
                            msgList.Add($"换热器[{exchanger.Code}]下游连接组件不存在");
                            msgList.Add($"换热器[{exchanger.Id}]下游连接组件不存在");
                            result = false;
                            continue;
                        }
                        var endJunction = new Model.RevitJunction();
                        endJunction.Id = Yw.Untity.UniqueHelper.CreateFromFirst("junction", allParterList.Select(x => x.Code).ToList());
                        endJunction.Code = endJunction.Id;
                        endJunction.Id = Yw.Untity.UniqueHelper.CreateFromFirst("junction", allParterList.Select(x => x.Id).ToList());
                        endJunction.Name = UniqueHelper.CreateFromFirst("连接节点", allParterList.Select(x => x.Name).Distinct().ToList());
                        endJunction.Flags = null;
                        endJunction.ModelType = null;
                        endJunction.Description = "换热器修正时,自动添加";
                        endJunction.Quality = exchanger.EndQuality;
                        endJunction.Position = endConnectList.GetCenterPosition();
                        endJunction.Elev = exchanger.EndElev;
                        endJunction.Elev = exchanger.Elev;
                        endJunction.Demand = null;
                        endJunction.DemandPattern = null;
                        rhs.Junctions.Add(endJunction);
                        exchanger.EndCode = endJunction.Code;
                        exchanger.EndCode = endJunction.Id;
                        foreach (var endConnect in endConnectList)
                        {
                            var endConnectParter = allParterList.Find(x => x.Id == endConnect.Id);
@@ -530,7 +546,160 @@
                    }
                    else
                    {
                        msgList.Add($"换热器[{exchanger.Code}]连接列表为空");
                        msgList.Add($"换热器[{exchanger.Id}]连接列表为空");
                        result = false;
                    }
                }
            }
            return result;
        }
        //修复空压机
        private static bool CorrectCompressor(Model.RevitModel rhs, ref List<string> msgList)
        {
            if (rhs == null)
            {
                return false;
            }
            if (msgList == null)
            {
                msgList = new List<string>();
            }
            var result = true;
            if (rhs.Compressors != null && rhs.Compressors.Count > 0)
            {
                var allParterList = rhs.GetAllParters();
                foreach (var compressor in rhs.Compressors)
                {
                    if (compressor.ConnectList != null && compressor.ConnectList.Count > 0)
                    {
                        #region åŽ»é™¤æ— æ•ˆè¿žæŽ¥å’Œé—·å¤´
                        foreach (var connect in compressor.ConnectList.ToList())
                        {
                            var connectParter = allParterList.Find(x => x.Id == connect.Id);
                            if (connectParter == null)
                            {
                                compressor.ConnectList.Remove(connect);
                            }
                            else
                            {
                                if (connectParter is RevitBlunthead blunthead)
                                {
                                    var decorator = new Model.RevitDecorator();
                                    decorator.Id = blunthead.Id;
                                    decorator.Name = blunthead.Name;
                                    decorator.Category = RevitJsonCatalog.Blunthead;
                                    decorator.Decoration = null;
                                    decorator.Description = blunthead.Description;
                                    rhs.Decorators.Add(decorator);
                                    rhs.Bluntheads.Remove(blunthead);
                                    allParterList.Remove(connectParter);
                                }
                            }
                        }
                        #endregion
                        #region å¼€å§‹è¿žæŽ¥
                        var startConnectList = compressor.ConnectList.GetStartConnects();
                        if (startConnectList.Count < 1)
                        {
                            var startConnect = compressor.ConnectList.GetStartConnect();
                            if (startConnect != null)
                            {
                                startConnectList.Add(startConnect);
                            }
                        }
                        if (startConnectList.Count < 1)
                        {
                            msgList.Add($"空压机[{compressor.Id}]上游连接组件不存在");
                            result = false;
                            continue;
                        }
                        var startJunction = new Model.RevitJunction();
                        startJunction.Id = Yw.Untity.UniqueHelper.CreateFromFirst("junction", allParterList.Select(x => x.Id).ToList());
                        startJunction.Name = UniqueHelper.CreateFromFirst("连接节点", allParterList.Select(x => x.Name).Distinct().ToList());
                        startJunction.Flags = null;
                        startJunction.ModelType = null;
                        startJunction.Description = "空压机修正时,自动添加";
                        startJunction.Position = startConnectList.GetCenterPosition();
                        startJunction.Elev = compressor.Elev;
                        startJunction.Demand = null;
                        startJunction.DemandPattern = null;
                        rhs.Junctions.Add(startJunction);
                        compressor.StartCode = startJunction.Id;
                        foreach (var startConnect in startConnectList)
                        {
                            var startConnectParter = allParterList.Find(x => x.Id == startConnect.Id);
                            if (startConnectParter is RevitLink revitLink)
                            {
                                if (revitLink.StartCode == compressor.Id)
                                {
                                    revitLink.StartCode = startJunction.Id;
                                }
                                else if (revitLink.EndCode == compressor.Id)
                                {
                                    revitLink.EndCode = startJunction.Id;
                                }
                            }
                        }
                        allParterList.Add(startJunction);
                        #endregion
                        #region ç»“束连接
                        var endConnectList = compressor.ConnectList.GetEndConnects();
                        if (endConnectList.Count < 1)
                        {
                            var endConnect = compressor.ConnectList.GetEndConnect();
                            if (endConnect != null)
                            {
                                endConnectList.Add(endConnect);
                            }
                        }
                        if (endConnectList.Count < 1)
                        {
                            msgList.Add($"空压机[{compressor.Id}]下游连接组件不存在");
                            result = false;
                            continue;
                        }
                        var endJunction = new Model.RevitJunction();
                        endJunction.Id = Yw.Untity.UniqueHelper.CreateFromFirst("junction", allParterList.Select(x => x.Id).ToList());
                        endJunction.Name = UniqueHelper.CreateFromFirst("连接节点", allParterList.Select(x => x.Name).Distinct().ToList());
                        endJunction.Flags = null;
                        endJunction.ModelType = null;
                        endJunction.Description = "空压机修正时,自动添加";
                        endJunction.Position = endConnectList.GetCenterPosition();
                        endJunction.Elev = compressor.Elev;
                        endJunction.Demand = null;
                        endJunction.DemandPattern = null;
                        rhs.Junctions.Add(endJunction);
                        compressor.EndCode = endJunction.Id;
                        foreach (var endConnect in endConnectList)
                        {
                            var endConnectParter = allParterList.Find(x => x.Id == endConnect.Id);
                            if (endConnectParter is RevitLink revitLink)
                            {
                                if (revitLink.StartCode == compressor.Id)
                                {
                                    revitLink.StartCode = endJunction.Id;
                                }
                                else if (revitLink.EndCode == compressor.Id)
                                {
                                    revitLink.EndCode = endJunction.Id;
                                }
                            }
                        }
                        allParterList.Add(endJunction);
                        #endregion
                    }
                    else
                    {
                        msgList.Add($"空压机[{compressor.Id}]连接列表为空");
                        result = false;
                    }
                }
@@ -557,23 +726,23 @@
                var startLinkParter = allParterList.Find(x => x.Id == link.StartCode);
                if (startLinkParter == null)
                {
                    msgList.Add($"管段:[{link.Code}]上游节点错误");
                    msgList.Add($"管段:[{link.Id}]上游节点错误");
                    result = false;
                }
                else
                {
                    link.StartCode = startLinkParter.Code;
                    link.StartCode = startLinkParter.Id;
                }
                var endLinkParter = allParterList.Find(x => x.Id == link.EndCode);
                if (endLinkParter == null)
                {
                    msgList.Add($"管段:[{link.Code}]下游节点错误");
                    msgList.Add($"管段:[{link.Id}]下游节点错误");
                    result = false;
                }
                else
                {
                    link.EndCode = endLinkParter.Code;
                    link.EndCode = endLinkParter.Id;
                }
            }
@@ -595,59 +764,55 @@
            var allLinks = rhs.GetAllLinks();
            foreach (var link in allLinks)
            {
                var startLinkParter = allParterList.Find(x => x.Code == link.StartCode);
                var startLinkParter = allParterList.Find(x => x.Id == link.StartCode);
                if (startLinkParter is RevitLink startLink)
                {
                    var junction = new Model.RevitJunction();
                    junction.Id = Yw.Untity.UniqueHelper.CreateFromFirst("junction", allParterList.Select(x => x.Code).ToList());
                    junction.Code = junction.Id;
                    junction.Id = Yw.Untity.UniqueHelper.CreateFromFirst("junction", allParterList.Select(x => x.Id).ToList());
                    junction.Name = UniqueHelper.CreateFromFirst("连接节点", allParterList.Select(x => x.Name).Distinct().ToList());
                    junction.Flags = null;
                    junction.ModelType = null;
                    junction.Description = "水力修正时,自动添加";
                    junction.Quality = link.StartQuality;
                    junction.Position = link.StartPosition;
                    junction.Elev = link.StartElev;
                    junction.Elev = link.StartPosition.Z;
                    junction.Demand = null;
                    junction.DemandPattern = null;
                    rhs.Junctions.Add(junction);
                    link.StartCode = junction.Code;
                    link.StartCode = junction.Id;
                    if (startLink.StartCode == link.Code)
                    if (startLink.StartCode == link.Id)
                    {
                        startLink.StartCode = junction.Code;
                        startLink.StartCode = junction.Id;
                    }
                    else if (startLink.EndCode == link.Code)
                    else if (startLink.EndCode == link.Id)
                    {
                        startLink.EndCode = junction.Code;
                        startLink.EndCode = junction.Id;
                    }
                    allParterList.Add(junction);
                }
                var endLinkParter = allParterList.Find(x => x.Code == link.EndCode);
                var endLinkParter = allParterList.Find(x => x.Id == link.EndCode);
                if (endLinkParter is RevitLink endLink)
                {
                    var junction = new Model.RevitJunction();
                    junction.Id = Yw.Untity.UniqueHelper.CreateFromFirst("junction", allParterList.Select(x => x.Code).ToList());
                    junction.Code = junction.Id;
                    junction.Id = Yw.Untity.UniqueHelper.CreateFromFirst("junction", allParterList.Select(x => x.Id).ToList());
                    junction.Name = UniqueHelper.CreateFromFirst("连接节点", allParterList.Select(x => x.Name).Distinct().ToList());
                    junction.Flags = null;
                    junction.ModelType = null;
                    junction.Description = "水力修正时,自动添加";
                    junction.Quality = link.EndQuality;
                    junction.Position = link.EndPosition;
                    junction.Elev = link.EndElev;
                    junction.Elev = link.EndPosition.Z;
                    junction.Demand = null;
                    junction.DemandPattern = null;
                    rhs.Junctions.Add(junction);
                    link.EndCode = junction.Code;
                    if (endLink.StartCode == link.Code)
                    link.EndCode = junction.Id;
                    if (endLink.StartCode == link.Id)
                    {
                        endLink.StartCode = junction.Code;
                        endLink.StartCode = junction.Id;
                    }
                    else if (endLink.EndCode == link.Code)
                    else if (endLink.EndCode == link.Id)
                    {
                        endLink.EndCode = junction.Code;
                        endLink.EndCode = junction.Id;
                    }
                    allParterList.Add(junction);
                }
WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/00-core/ImportXhsProjectHelper.cs
@@ -193,7 +193,7 @@
                            {
                                case Revit.ePropStatus.Error:
                                    {
                                        feedBackMsg?.Invoke($"构件类型:{revitParter.Catalog},构件编码:{revitParter.Code},构件属性:{revitParterPropStatus.PropName},错误:{revitParterPropStatus.StatusInfo} ", Color.Red);
                                        feedBackMsg?.Invoke($"构件类型:{revitParter.Catalog},构件编码:{revitParter.Id},构件属性:{revitParterPropStatus.PropName},错误:{revitParterPropStatus.StatusInfo} ", Color.Red);
                                    }
                                    break;
WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/05-completed/XhsProjectSimulationAnalysisCtrl.cs
@@ -32,19 +32,19 @@
                        {
                            case Revit.ePropStatus.Error:
                                {
                                    _allBindingList.Add(new XhsProjectSimulationAnalysisViewModel { Type = revitParter.Catalog, Code = revitParter.Code, Name = revitParter.Name, Description = revitParterPropStatus.StatusInfo, ErrorLevel = "Error", PropStatus = "错误" });
                                    _allBindingList.Add(new XhsProjectSimulationAnalysisViewModel { Type = revitParter.Catalog, Code = revitParter.Id, Name = revitParter.Name, Description = revitParterPropStatus.StatusInfo, ErrorLevel = "Error", PropStatus = "错误" });
                                }
                                break;
                            case Revit.ePropStatus.Lack:
                                {
                                    _allBindingList.Add(new XhsProjectSimulationAnalysisViewModel { Type = revitParter.Catalog, Code = revitParter.Code, Name = revitParterPropStatus.PropName, Description = revitParterPropStatus.StatusInfo, ErrorLevel = "Lack", PropStatus = "缺省" });
                                    _allBindingList.Add(new XhsProjectSimulationAnalysisViewModel { Type = revitParter.Catalog, Code = revitParter.Id, Name = revitParterPropStatus.PropName, Description = revitParterPropStatus.StatusInfo, ErrorLevel = "Lack", PropStatus = "缺省" });
                                }
                                break;
                            case Revit.ePropStatus.Abnormal:
                                {
                                    _allBindingList.Add(new XhsProjectSimulationAnalysisViewModel { Type = revitParter.Catalog, Code = revitParter.Code, Name = revitParterPropStatus.PropName, Description = revitParterPropStatus.StatusInfo, ErrorLevel = "Abnormal", PropStatus = "异常" });
                                    _allBindingList.Add(new XhsProjectSimulationAnalysisViewModel { Type = revitParter.Catalog, Code = revitParter.Id, Name = revitParterPropStatus.PropName, Description = revitParterPropStatus.StatusInfo, ErrorLevel = "Abnormal", PropStatus = "异常" });
                                }
                                break;