duheng
2024-11-14 60908c00556f4f53d82f5588ae3013f80c443590
Hydro/HStation.Hydro.Core/TransferHelper.cs
@@ -1,8 +1,4 @@
using HStation.Model;
using System.Diagnostics.Metrics;
using System.Transactions;
using Yw.EPAnet;
using Yw.Model;
using Yw.Model;
namespace HStation.Hydro
{
@@ -36,7 +32,6 @@
                foreach (var revitReservoir in revitModel.Reservoirs)
                {
                    var reservoir = FromRevit(revitReservoir);
                    reservoir.PropStatusList = null;
                    hydro.Reservoirs.Add(reservoir);
                }
            }
@@ -51,7 +46,6 @@
                foreach (var revitTank in revitModel.Tanks)
                {
                    var tank = FromRevit(revitTank);
                    tank.PropStatusList = null;
                    hydro.Tanks.Add(tank);
                }
            }
@@ -66,7 +60,6 @@
                foreach (var revitWaterbox in revitModel.Waterboxs)
                {
                    var waterbox = FromRevit(revitWaterbox);
                    waterbox.PropStatusList = null;
                    hydro.Waterboxs.Add(waterbox);
                }
            }
@@ -81,7 +74,6 @@
                foreach (var revitJunction in revitModel.Junctions)
                {
                    var junction = FromRevit(revitJunction);
                    junction.PropStatusList = null;
                    hydro.Junctions.Add(junction);
                }
            }
@@ -96,7 +88,6 @@
                foreach (var revitBlunthead in revitModel.Bluntheads)
                {
                    var blunthead = FromRevit(revitBlunthead);
                    blunthead.PropStatusList = null;
                    hydro.Bluntheads.Add(blunthead);
                }
            }
@@ -111,7 +102,6 @@
                foreach (var revitElbow in revitModel.Elbows)
                {
                    var elbow = FromRevit(revitElbow);
                    elbow.PropStatusList = null;
                    hydro.Elbows.Add(elbow);
                }
            }
@@ -126,7 +116,6 @@
                foreach (var revitThreelink in revitModel.Threelinks)
                {
                    var threelink = FromRevit(revitThreelink);
                    threelink.PropStatusList = null;
                    hydro.Threelinks.Add(threelink);
                }
            }
@@ -141,7 +130,6 @@
                foreach (var revitFourlink in revitModel.Fourlinks)
                {
                    var fourlink = FromRevit(revitFourlink);
                    fourlink.PropStatusList = null;
                    hydro.Fourlinks.Add(fourlink);
                }
            }
@@ -156,7 +144,6 @@
                foreach (var revitHydrant in revitModel.Hydrants)
                {
                    var hydrant = FromRevit(revitHydrant);
                    hydrant.PropStatusList = null;
                    hydro.Hydrants.Add(hydrant);
                }
            }
@@ -171,7 +158,6 @@
                foreach (var revitNozzle in revitModel.Nozzles)
                {
                    var nozzle = FromRevit(revitNozzle);
                    nozzle.PropStatusList = null;
                    hydro.Nozzles.Add(nozzle);
                }
            }
@@ -186,7 +172,6 @@
                foreach (var revitMeter in revitModel.Meters)
                {
                    var meter = FromRevit(revitMeter);
                    meter.PropStatusList = null;
                    hydro.Meters.Add(meter);
                }
            }
@@ -201,7 +186,6 @@
                foreach (var revitFlowmeter in revitModel.Flowmeters)
                {
                    var flowmeter = FromRevit(revitFlowmeter);
                    flowmeter.PropStatusList = null;
                    hydro.Flowmeters.Add(flowmeter);
                }
            }
@@ -216,7 +200,6 @@
                foreach (var revitPressmeter in revitModel.Pressmeters)
                {
                    var pressmeter = FromRevit(revitPressmeter);
                    pressmeter.PropStatusList = null;
                    hydro.Pressmeters.Add(pressmeter);
                }
            }
@@ -231,7 +214,6 @@
                foreach (var revitPipe in revitModel.Pipes)
                {
                    var pipe = FromRevit(revitPipe);
                    pipe.PropStatusList = null;
                    hydro.Pipes.Add(pipe);
                }
            }
@@ -246,38 +228,7 @@
                foreach (var revitTranslation in revitModel.Translations)
                {
                    var translation = FromRevit(revitTranslation);
                    translation.PropStatusList = null;
                    hydro.Translations.Add(translation);
                }
            }
            //换热器
            if (revitModel.Exchangers != null && revitModel.Exchangers.Count > 0)
            {
                if (hydro.Exchangers == null)
                {
                    hydro.Exchangers = new List<HydroExchangerInfo>();
                }
                foreach (var revitExchanger in revitModel.Exchangers)
                {
                    var exchanger = FromRevit(revitExchanger);
                    exchanger.PropStatusList = null;
                    hydro.Exchangers.Add(exchanger);
                }
            }
            //空压机
            if (revitModel.Compressors != null && revitModel.Compressors.Count > 0)
            {
                if (hydro.Compressors == null)
                {
                    hydro.Compressors = new List<HydroCompressorInfo>();
                }
                foreach (var revitCompressor in revitModel.Compressors)
                {
                    var compressor = FromRevit(revitCompressor);
                    compressor.PropStatusList = null;
                    hydro.Compressors.Add(compressor);
                }
            }
@@ -291,7 +242,6 @@
                foreach (var revitPump in revitModel.Pumps)
                {
                    var pump = FromRevit(revitPump);
                    pump.PropStatusList = null;
                    hydro.Pumps.Add(pump);
                }
            }
@@ -306,8 +256,35 @@
                foreach (var revitValve in revitModel.Valves)
                {
                    var valve = FromRevit(revitValve);
                    valve.PropStatusList = null;
                    hydro.Valves.Add(valve);
                }
            }
            //换热器
            if (revitModel.Exchangers != null && revitModel.Exchangers.Count > 0)
            {
                if (hydro.Exchangers == null)
                {
                    hydro.Exchangers = new List<HydroExchangerInfo>();
                }
                foreach (var revitExchanger in revitModel.Exchangers)
                {
                    var exchanger = FromRevit(revitExchanger);
                    hydro.Exchangers.Add(exchanger);
                }
            }
            //空压机
            if (revitModel.Compressors != null && revitModel.Compressors.Count > 0)
            {
                if (hydro.Compressors == null)
                {
                    hydro.Compressors = new List<HydroCompressorInfo>();
                }
                foreach (var revitCompressor in revitModel.Compressors)
                {
                    var compressor = FromRevit(revitCompressor);
                    hydro.Compressors.Add(compressor);
                }
            }
@@ -320,7 +297,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,16 +319,18 @@
            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;
            reservoir.UpdatePropStatus(nameof(reservoir.Flags), revitReservoir, nameof(revitReservoir.Flags));
            reservoir.Description = revitReservoir.Description;
            reservoir.UpdatePropStatus(nameof(reservoir.Description), revitReservoir, nameof(revitReservoir.Description));
            reservoir.Quality = revitReservoir.Quality;
            reservoir.UpdatePropStatus(nameof(reservoir.Quality), revitReservoir, nameof(revitReservoir.Quality));
            reservoir.FlowDirectionX = Yw.Hydro.FlowDirection.Positive;
            reservoir.UpdatePropStatus(nameof(reservoir.FlowDirectionX), Yw.Hydro.ePropStatus.Lack, "缺省,自动修正");
            reservoir.FlowDirectionY = Yw.Hydro.FlowDirection.Positive;
            reservoir.UpdatePropStatus(nameof(reservoir.FlowDirectionY), Yw.Hydro.ePropStatus.Lack, "缺省,自动修正");
            reservoir.PoolElev = revitReservoir.PoolElev;
            reservoir.UpdatePropStatus(nameof(reservoir.PoolElev), revitReservoir, nameof(revitReservoir.PoolElev));
            reservoir.Head = revitReservoir.Head;
@@ -382,16 +361,18 @@
            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;
            tank.UpdatePropStatus(nameof(tank.Flags), revitTank, nameof(revitTank.Flags));
            tank.Description = revitTank.Description;
            tank.UpdatePropStatus(nameof(tank.Description), revitTank, nameof(revitTank.Description));
            tank.Quality = revitTank.Quality;
            tank.UpdatePropStatus(nameof(tank.Quality), revitTank, nameof(revitTank.Quality));
            tank.FlowDirectionX = Yw.Hydro.FlowDirection.Positive;
            tank.UpdatePropStatus(nameof(tank.FlowDirectionX), Yw.Hydro.ePropStatus.Lack, "缺省,自动修正");
            tank.FlowDirectionY = Yw.Hydro.FlowDirection.Positive;
            tank.UpdatePropStatus(nameof(tank.FlowDirectionY), Yw.Hydro.ePropStatus.Lack, "缺省,自动修正");
            tank.PoolElev = revitTank.PoolElev;
            tank.UpdatePropStatus(nameof(tank.PoolElev), revitTank, nameof(revitTank.PoolElev));
            tank.InitLevel = revitTank.InitLevel;
@@ -406,6 +387,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);
@@ -430,16 +413,18 @@
            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;
            waterbox.UpdatePropStatus(nameof(waterbox.Flags), revitWaterbox, nameof(revitWaterbox.Flags));
            waterbox.Description = revitWaterbox.Description;
            waterbox.UpdatePropStatus(nameof(waterbox.Description), revitWaterbox, nameof(revitWaterbox.Description));
            waterbox.Quality = revitWaterbox.Quality;
            waterbox.UpdatePropStatus(nameof(waterbox.Quality), revitWaterbox, nameof(revitWaterbox.Quality));
            waterbox.FlowDirectionX = Yw.Hydro.FlowDirection.Positive;
            waterbox.UpdatePropStatus(nameof(waterbox.FlowDirectionX), Yw.Hydro.ePropStatus.Lack, "缺省,自动修正");
            waterbox.FlowDirectionY = Yw.Hydro.FlowDirection.Positive;
            waterbox.UpdatePropStatus(nameof(waterbox.FlowDirectionY), Yw.Hydro.ePropStatus.Lack, "缺省,自动修正");
            waterbox.PoolElev = revitWaterbox.PoolElev;
            waterbox.UpdatePropStatus(nameof(waterbox.PoolElev), revitWaterbox, nameof(revitWaterbox.PoolElev));
            waterbox.InitLevel = revitWaterbox.InitLevel;
@@ -454,6 +439,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);
@@ -478,16 +465,18 @@
            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;
            junction.UpdatePropStatus(nameof(junction.Flags), revitJunction, nameof(revitJunction.Flags));
            junction.Description = revitJunction.Description;
            junction.UpdatePropStatus(nameof(junction.Description), revitJunction, nameof(revitJunction.Description));
            junction.Quality = revitJunction.Quality;
            junction.UpdatePropStatus(nameof(junction.Quality), revitJunction, nameof(revitJunction.Quality));
            junction.FlowDirectionX = Yw.Hydro.FlowDirection.Positive;
            junction.UpdatePropStatus(nameof(junction.FlowDirectionX), Yw.Hydro.ePropStatus.Lack, "缺省,自动修正");
            junction.FlowDirectionY = Yw.Hydro.FlowDirection.Positive;
            junction.UpdatePropStatus(nameof(junction.FlowDirectionY), Yw.Hydro.ePropStatus.Lack, "缺省,自动修正");
            junction.Elev = revitJunction.Elev;
            junction.UpdatePropStatus(nameof(junction.Elev), revitJunction, nameof(revitJunction.Elev));
            junction.MinorLoss = revitJunction.MinorLoss;
@@ -520,16 +509,18 @@
            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;
            blunthead.UpdatePropStatus(nameof(blunthead.Flags), revitBlunthead, nameof(revitBlunthead.Flags));
            blunthead.Description = revitBlunthead.Description;
            blunthead.UpdatePropStatus(nameof(blunthead.Description), revitBlunthead, nameof(revitBlunthead.Description));
            blunthead.Quality = revitBlunthead.Quality;
            blunthead.UpdatePropStatus(nameof(blunthead.Quality), revitBlunthead, nameof(revitBlunthead.Quality));
            blunthead.FlowDirectionX = Yw.Hydro.FlowDirection.Positive;
            blunthead.UpdatePropStatus(nameof(blunthead.FlowDirectionX), Yw.Hydro.ePropStatus.Lack, "缺省,自动修正");
            blunthead.FlowDirectionY = Yw.Hydro.FlowDirection.Positive;
            blunthead.UpdatePropStatus(nameof(blunthead.FlowDirectionY), Yw.Hydro.ePropStatus.Lack, "缺省,自动修正");
            blunthead.Elev = revitBlunthead.Elev;
            blunthead.UpdatePropStatus(nameof(blunthead.Elev), revitBlunthead, nameof(revitBlunthead.Elev));
            blunthead.MinorLoss = revitBlunthead.MinorLoss;
@@ -566,16 +557,18 @@
            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;
            elbow.UpdatePropStatus(nameof(elbow.Flags), revitElbow, nameof(revitElbow.Flags));
            elbow.Description = revitElbow.Description;
            elbow.UpdatePropStatus(nameof(elbow.Description), revitElbow, nameof(revitElbow.Description));
            elbow.Quality = revitElbow.Quality;
            elbow.UpdatePropStatus(nameof(elbow.Quality), revitElbow, nameof(revitElbow.Quality));
            elbow.FlowDirectionX = Yw.Hydro.FlowDirection.Positive;
            elbow.UpdatePropStatus(nameof(elbow.FlowDirectionX), Yw.Hydro.ePropStatus.Lack, "缺省,自动修正");
            elbow.FlowDirectionY = Yw.Hydro.FlowDirection.Positive;
            elbow.UpdatePropStatus(nameof(elbow.FlowDirectionY), Yw.Hydro.ePropStatus.Lack, "缺省,自动修正");
            elbow.Elev = revitElbow.Elev;
            elbow.UpdatePropStatus(nameof(elbow.Elev), revitElbow, nameof(revitElbow.Elev));
            elbow.MinorLoss = revitElbow.MinorLoss;
@@ -592,6 +585,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,
@@ -612,16 +609,18 @@
            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;
            threelink.UpdatePropStatus(nameof(threelink.Flags), revitThreelink, nameof(revitThreelink.Flags));
            threelink.Description = revitThreelink.Description;
            threelink.UpdatePropStatus(nameof(threelink.Description), revitThreelink, nameof(revitThreelink.Description));
            threelink.Quality = revitThreelink.Quality;
            threelink.UpdatePropStatus(nameof(threelink.Quality), revitThreelink, nameof(revitThreelink.Quality));
            threelink.FlowDirectionX = Yw.Hydro.FlowDirection.Positive;
            threelink.UpdatePropStatus(nameof(threelink.FlowDirectionX), Yw.Hydro.ePropStatus.Lack, "缺省,自动修正");
            threelink.FlowDirectionY = Yw.Hydro.FlowDirection.Positive;
            threelink.UpdatePropStatus(nameof(threelink.FlowDirectionY), Yw.Hydro.ePropStatus.Lack, "缺省,自动修正");
            threelink.Elev = revitThreelink.Elev;
            threelink.UpdatePropStatus(nameof(threelink.Elev), revitThreelink, nameof(revitThreelink.Elev));
            threelink.MinorLoss = revitThreelink.MinorLoss;
@@ -638,6 +637,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,
@@ -658,16 +661,18 @@
            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;
            fourlink.UpdatePropStatus(nameof(fourlink.Flags), revitFourlink, nameof(revitFourlink.Flags));
            fourlink.Description = revitFourlink.Description;
            fourlink.UpdatePropStatus(nameof(fourlink.Description), revitFourlink, nameof(revitFourlink.Description));
            fourlink.Quality = revitFourlink.Quality;
            fourlink.UpdatePropStatus(nameof(fourlink.Quality), revitFourlink, nameof(revitFourlink.Quality));
            fourlink.FlowDirectionX = Yw.Hydro.FlowDirection.Positive;
            fourlink.UpdatePropStatus(nameof(fourlink.FlowDirectionX), Yw.Hydro.ePropStatus.Lack, "缺省,自动修正");
            fourlink.FlowDirectionY = Yw.Hydro.FlowDirection.Positive;
            fourlink.UpdatePropStatus(nameof(fourlink.FlowDirectionY), Yw.Hydro.ePropStatus.Lack, "缺省,自动修正");
            fourlink.Elev = revitFourlink.Elev;
            fourlink.UpdatePropStatus(nameof(fourlink.Elev), revitFourlink, nameof(revitFourlink.Elev));
            fourlink.MinorLoss = revitFourlink.MinorLoss;
@@ -693,50 +698,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.Quality = revitHydrant.Quality;
            hydrant.UpdatePropStatus(nameof(hydrant.Quality), revitHydrant, nameof(revitHydrant.Quality));
            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)
        {
@@ -748,16 +709,18 @@
            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;
            nozzle.UpdatePropStatus(nameof(nozzle.Flags), revitNozzle, nameof(revitNozzle.Flags));
            nozzle.Description = revitNozzle.Description;
            nozzle.UpdatePropStatus(nameof(nozzle.Description), revitNozzle, nameof(revitNozzle.Description));
            nozzle.Quality = revitNozzle.Quality;
            nozzle.UpdatePropStatus(nameof(nozzle.Quality), revitNozzle, nameof(revitNozzle.Quality));
            nozzle.FlowDirectionX = Yw.Hydro.FlowDirection.Positive;
            nozzle.UpdatePropStatus(nameof(nozzle.FlowDirectionX), Yw.Hydro.ePropStatus.Lack, "缺省,自动修正");
            nozzle.FlowDirectionY = Yw.Hydro.FlowDirection.Positive;
            nozzle.UpdatePropStatus(nameof(nozzle.FlowDirectionY), Yw.Hydro.ePropStatus.Lack, "缺省,自动修正");
            nozzle.Elev = revitNozzle.Elev;
            nozzle.UpdatePropStatus(nameof(nozzle.Elev), revitNozzle, nameof(revitNozzle.Elev));
            nozzle.MinorLoss = revitNozzle.MinorLoss;
@@ -770,6 +733,10 @@
            nozzle.UpdatePropStatus(nameof(nozzle.Position2d), revitNozzle, nameof(revitNozzle.Position));
            nozzle.Position3d = new Yw.Model.Hydro.Position3d(revitNozzle.Position.X, revitNozzle.Position.Y, revitNozzle.Position.Z);
            nozzle.UpdatePropStatus(nameof(nozzle.Position3d), revitNozzle, nameof(revitNozzle.Position));
            nozzle.Material = revitNozzle.Material;
            nozzle.UpdatePropStatus(nameof(nozzle.Material), revitNozzle, nameof(revitNozzle.Material));
            nozzle.Caliber = revitNozzle.Caliber;
            nozzle.UpdatePropStatus(nameof(nozzle.Caliber), revitNozzle, nameof(revitNozzle.Caliber));
            nozzle.Coefficient = revitNozzle.Coefficient;
            nozzle.UpdatePropStatus(nameof(nozzle.Coefficient), revitNozzle, nameof(revitNozzle.Coefficient));
            nozzle.ScenePropValueList = revitNozzle.PropValueList?.Select(x => new Yw.Model.HydroParterScenePropValueInfo()
@@ -779,6 +746,56 @@
                PropValue = x.PropValue
            }).ToList();
            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.FlowDirectionX = Yw.Hydro.FlowDirection.Positive;
            hydrant.UpdatePropStatus(nameof(hydrant.FlowDirectionX), Yw.Hydro.ePropStatus.Lack, "缺省,自动修正");
            hydrant.FlowDirectionY = Yw.Hydro.FlowDirection.Positive;
            hydrant.UpdatePropStatus(nameof(hydrant.FlowDirectionY), Yw.Hydro.ePropStatus.Lack, "缺省,自动修正");
            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.Material = revitHydrant.Material;
            hydrant.UpdatePropStatus(nameof(hydrant.Material), revitHydrant, nameof(revitHydrant.Material));
            hydrant.Caliber = revitHydrant.Caliber;
            hydrant.UpdatePropStatus(nameof(hydrant.Caliber), revitHydrant, nameof(revitHydrant.Caliber));
            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;
        }
        //水表
@@ -792,16 +809,18 @@
            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;
            meter.UpdatePropStatus(nameof(meter.Flags), revitMeter, nameof(revitMeter.Flags));
            meter.Description = revitMeter.Description;
            meter.UpdatePropStatus(nameof(meter.Description), revitMeter, nameof(revitMeter.Description));
            meter.Quality = revitMeter.Quality;
            meter.UpdatePropStatus(nameof(meter.Quality), revitMeter, nameof(revitMeter.Quality));
            meter.FlowDirectionX = Yw.Hydro.FlowDirection.Positive;
            meter.UpdatePropStatus(nameof(meter.FlowDirectionX), Yw.Hydro.ePropStatus.Lack, "缺省,自动修正");
            meter.FlowDirectionY = Yw.Hydro.FlowDirection.Positive;
            meter.UpdatePropStatus(nameof(meter.FlowDirectionY), Yw.Hydro.ePropStatus.Lack, "缺省,自动修正");
            meter.Elev = revitMeter.Elev;
            meter.UpdatePropStatus(nameof(meter.Elev), revitMeter, nameof(revitMeter.Elev));
            meter.MinorLoss = revitMeter.MinorLoss;
@@ -834,16 +853,18 @@
            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;
            flowmeter.UpdatePropStatus(nameof(flowmeter.Flags), revitFlowmeter, nameof(revitFlowmeter.Flags));
            flowmeter.Description = revitFlowmeter.Description;
            flowmeter.UpdatePropStatus(nameof(flowmeter.Description), revitFlowmeter, nameof(revitFlowmeter.Description));
            flowmeter.Quality = revitFlowmeter.Quality;
            flowmeter.UpdatePropStatus(nameof(flowmeter.Quality), revitFlowmeter, nameof(revitFlowmeter.Quality));
            flowmeter.FlowDirectionX = Yw.Hydro.FlowDirection.Positive;
            flowmeter.UpdatePropStatus(nameof(flowmeter.FlowDirectionX), Yw.Hydro.ePropStatus.Lack, "缺省,自动修正");
            flowmeter.FlowDirectionY = Yw.Hydro.FlowDirection.Positive;
            flowmeter.UpdatePropStatus(nameof(flowmeter.FlowDirectionY), Yw.Hydro.ePropStatus.Lack, "缺省,自动修正");
            flowmeter.Elev = revitFlowmeter.Elev;
            flowmeter.UpdatePropStatus(nameof(flowmeter.Elev), revitFlowmeter, nameof(revitFlowmeter.Elev));
            flowmeter.MinorLoss = revitFlowmeter.MinorLoss;
@@ -856,8 +877,6 @@
            flowmeter.UpdatePropStatus(nameof(flowmeter.Position2d), revitFlowmeter, nameof(revitFlowmeter.Position));
            flowmeter.Position3d = new Yw.Model.Hydro.Position3d(revitFlowmeter.Position.X, revitFlowmeter.Position.Y, revitFlowmeter.Position.Z);
            flowmeter.UpdatePropStatus(nameof(flowmeter.Position3d), revitFlowmeter, nameof(revitFlowmeter.Position));
            flowmeter.CurrentFlow = revitFlowmeter.CurrentFlow;
            flowmeter.UpdatePropStatus(nameof(flowmeter.CurrentFlow), revitFlowmeter, nameof(revitFlowmeter.CurrentFlow));
            flowmeter.ScenePropValueList = revitFlowmeter.PropValueList?.Select(x => new Yw.Model.HydroParterScenePropValueInfo()
            {
                Scene = HStation.Revit.ConstParas.Scene,
@@ -878,16 +897,18 @@
            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;
            pressmeter.UpdatePropStatus(nameof(pressmeter.Flags), revitPressmeter, nameof(revitPressmeter.Flags));
            pressmeter.Description = revitPressmeter.Description;
            pressmeter.UpdatePropStatus(nameof(pressmeter.Description), revitPressmeter, nameof(revitPressmeter.Description));
            pressmeter.Quality = revitPressmeter.Quality;
            pressmeter.UpdatePropStatus(nameof(pressmeter.Quality), revitPressmeter, nameof(revitPressmeter.Quality));
            pressmeter.FlowDirectionX = Yw.Hydro.FlowDirection.Positive;
            pressmeter.UpdatePropStatus(nameof(pressmeter.FlowDirectionX), Yw.Hydro.ePropStatus.Lack, "缺省,自动修正");
            pressmeter.FlowDirectionY = Yw.Hydro.FlowDirection.Positive;
            pressmeter.UpdatePropStatus(nameof(pressmeter.FlowDirectionY), Yw.Hydro.ePropStatus.Lack, "缺省,自动修正");
            pressmeter.Elev = revitPressmeter.Elev;
            pressmeter.UpdatePropStatus(nameof(pressmeter.Elev), revitPressmeter, nameof(revitPressmeter.Elev));
            pressmeter.MinorLoss = revitPressmeter.MinorLoss;
@@ -900,8 +921,6 @@
            pressmeter.UpdatePropStatus(nameof(pressmeter.Position2d), revitPressmeter, nameof(revitPressmeter.Position));
            pressmeter.Position3d = new Yw.Model.Hydro.Position3d(revitPressmeter.Position.X, revitPressmeter.Position.Y, revitPressmeter.Position.Z);
            pressmeter.UpdatePropStatus(nameof(pressmeter.Position3d), revitPressmeter, nameof(revitPressmeter.Position));
            pressmeter.CurrentPress = revitPressmeter.CurrentPress;
            pressmeter.UpdatePropStatus(nameof(pressmeter.CurrentPress), revitPressmeter, nameof(revitPressmeter.CurrentPress));
            pressmeter.ScenePropValueList = revitPressmeter.PropValueList?.Select(x => new Yw.Model.HydroParterScenePropValueInfo()
            {
                Scene = HStation.Revit.ConstParas.Scene,
@@ -922,14 +941,18 @@
            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;
            pipe.UpdatePropStatus(nameof(pipe.Flags), revitPipe, nameof(revitPipe.Flags));
            pipe.Description = revitPipe.Description;
            pipe.UpdatePropStatus(nameof(pipe.Description), revitPipe, nameof(revitPipe.Description));
            pipe.FlowDirectionX = Yw.Hydro.FlowDirection.Positive;
            pipe.UpdatePropStatus(nameof(pipe.FlowDirectionX), Yw.Hydro.ePropStatus.Lack, "缺省,自动修正");
            pipe.FlowDirectionY = Yw.Hydro.FlowDirection.Positive;
            pipe.UpdatePropStatus(nameof(pipe.FlowDirectionY), Yw.Hydro.ePropStatus.Lack, "缺省,自动修正");
            pipe.StartCode = revitPipe.StartCode;
            pipe.UpdatePropStatus(nameof(pipe.StartCode), revitPipe, nameof(revitPipe.StartCode));
            pipe.EndCode = revitPipe.EndCode;
@@ -966,14 +989,18 @@
            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;
            translation.UpdatePropStatus(nameof(translation.Flags), revitTranslation, nameof(revitTranslation.Flags));
            translation.Description = revitTranslation.Description;
            translation.UpdatePropStatus(nameof(translation.Description), revitTranslation, nameof(revitTranslation.Description));
            translation.FlowDirectionX = Yw.Hydro.FlowDirection.Positive;
            translation.UpdatePropStatus(nameof(translation.FlowDirectionX), Yw.Hydro.ePropStatus.Lack, "缺省,自动修正");
            translation.FlowDirectionY = Yw.Hydro.FlowDirection.Positive;
            translation.UpdatePropStatus(nameof(translation.FlowDirectionY), Yw.Hydro.ePropStatus.Lack, "缺省,自动修正");
            translation.StartCode = revitTranslation.StartCode;
            translation.UpdatePropStatus(nameof(translation.StartCode), revitTranslation, nameof(revitTranslation.StartCode));
            translation.EndCode = revitTranslation.EndCode;
@@ -999,98 +1026,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.Length = revitExchanger.Length;
            exchanger.UpdatePropStatus(nameof(exchanger.Length), revitExchanger, nameof(revitExchanger.Length));
            exchanger.Roughness = revitExchanger.Roughness;
            exchanger.UpdatePropStatus(nameof(exchanger.Roughness), revitExchanger, nameof(revitExchanger.Roughness));
            exchanger.MinorLoss = revitExchanger.MinorLoss;
            exchanger.UpdatePropStatus(nameof(exchanger.MinorLoss), revitExchanger, nameof(revitExchanger.MinorLoss));
            exchanger.MinorLossK = revitExchanger.MinorLossK;
            exchanger.UpdatePropStatus(nameof(exchanger.MinorLossK), revitExchanger, nameof(revitExchanger.MinorLossK));
            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.Length = revitCompressor.Length;
            compressor.UpdatePropStatus(nameof(compressor.Length), revitCompressor, nameof(revitCompressor.Length));
            compressor.Roughness = revitCompressor.Roughness;
            compressor.UpdatePropStatus(nameof(compressor.Roughness), revitCompressor, nameof(revitCompressor.Roughness));
            compressor.MinorLoss = revitCompressor.MinorLoss;
            compressor.UpdatePropStatus(nameof(compressor.MinorLoss), revitCompressor, nameof(revitCompressor.MinorLoss));
            compressor.MinorLossK = revitCompressor.MinorLossK;
            compressor.UpdatePropStatus(nameof(compressor.MinorLossK), revitCompressor, nameof(revitCompressor.MinorLossK));
            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)
        {
@@ -1102,26 +1037,30 @@
            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;
            pump.UpdatePropStatus(nameof(pump.Flags), revitPump, nameof(revitPump.Flags));
            pump.Description = revitPump.Description;
            pump.UpdatePropStatus(nameof(pump.Description), revitPump, nameof(revitPump.Description));
            pump.FlowDirectionX = Yw.Hydro.FlowDirection.Positive;
            pump.UpdatePropStatus(nameof(pump.FlowDirectionX), Yw.Hydro.ePropStatus.Lack, "缺省,自动修正");
            pump.FlowDirectionY = Yw.Hydro.FlowDirection.Positive;
            pump.UpdatePropStatus(nameof(pump.FlowDirectionY), Yw.Hydro.ePropStatus.Lack, "缺省,自动修正");
            pump.StartCode = revitPump.StartCode;
            pump.UpdatePropStatus(nameof(pump.StartCode), revitPump, nameof(revitPump.StartCode));
            pump.EndCode = revitPump.EndCode;
            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;
@@ -1136,10 +1075,6 @@
            pump.UpdatePropStatus(nameof(pump.CurveQP), revitPump, nameof(revitPump.CurveQP));
            pump.CurveQE = revitPump.CurveQE;
            pump.UpdatePropStatus(nameof(pump.CurveQE), revitPump, nameof(revitPump.CurveQE));
            pump.Price = revitPump.Price;
            pump.UpdatePropStatus(nameof(pump.Price), revitPump, nameof(revitPump.Price));
            pump.PricePattern = revitPump.PricePattern;
            pump.UpdatePropStatus(nameof(pump.PricePattern), revitPump, nameof(revitPump.PricePattern));
            pump.ScenePropValueList = revitPump.PropValueList?.Select(x => new Yw.Model.HydroParterScenePropValueInfo()
            {
                Scene = HStation.Revit.ConstParas.Scene,
@@ -1160,14 +1095,18 @@
            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;
            valve.UpdatePropStatus(nameof(valve.Flags), revitValve, nameof(revitValve.Flags));
            valve.Description = revitValve.Description;
            valve.UpdatePropStatus(nameof(valve.Description), revitValve, nameof(revitValve.Description));
            valve.FlowDirectionX = Yw.Hydro.FlowDirection.Positive;
            valve.UpdatePropStatus(nameof(valve.FlowDirectionX), Yw.Hydro.ePropStatus.Lack, "缺省,自动修正");
            valve.FlowDirectionY = Yw.Hydro.FlowDirection.Positive;
            valve.UpdatePropStatus(nameof(valve.FlowDirectionY), Yw.Hydro.ePropStatus.Lack, "缺省,自动修正");
            valve.StartCode = revitValve.StartCode;
            valve.UpdatePropStatus(nameof(valve.StartCode), revitValve, nameof(revitValve.StartCode));
            valve.EndCode = revitValve.EndCode;
@@ -1195,5 +1134,99 @@
            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.FlowDirectionX = Yw.Hydro.FlowDirection.Positive;
            exchanger.UpdatePropStatus(nameof(exchanger.FlowDirectionX), Yw.Hydro.ePropStatus.Lack, "缺省,自动修正");
            exchanger.FlowDirectionY = Yw.Hydro.FlowDirection.Positive;
            exchanger.UpdatePropStatus(nameof(exchanger.FlowDirectionY), Yw.Hydro.ePropStatus.Lack, "缺省,自动修正");
            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.FlowDirectionX = Yw.Hydro.FlowDirection.Positive;
            compressor.UpdatePropStatus(nameof(compressor.FlowDirectionX), Yw.Hydro.ePropStatus.Lack, "缺省,自动修正");
            compressor.FlowDirectionY = Yw.Hydro.FlowDirection.Positive;
            compressor.UpdatePropStatus(nameof(compressor.FlowDirectionY), Yw.Hydro.ePropStatus.Lack, "缺省,自动修正");
            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;
        }
    }
}