From bef933e7e166b085ba7e46e38ea62d9ae0129ec6 Mon Sep 17 00:00:00 2001 From: lixiaojun <1287241240@qq.com> Date: 星期一, 20 一月 2025 10:47:23 +0800 Subject: [PATCH] 远程API模式阶段性提交 --- Hydro/Yw.Hydro.Core/ParseHelper.cs | 600 ++++++++++++++++++++++++++++++++++++------------------------ 1 files changed, 360 insertions(+), 240 deletions(-) diff --git a/Hydro/Yw.Hydro.Core/ParseHelper.cs b/Hydro/Yw.Hydro.Core/ParseHelper.cs index f60be6f..98b1e20 100644 --- a/Hydro/Yw.Hydro.Core/ParseHelper.cs +++ b/Hydro/Yw.Hydro.Core/ParseHelper.cs @@ -1,14 +1,16 @@ -锘縩amespace Yw.Hydro +锘縰sing Microsoft.Extensions.Logging.Abstractions; + +namespace Yw.Hydro { /// <summary> /// 瑙f瀽杈呭姪绫� /// </summary> - public class ParseHelper + public static class ParseHelper { /// <summary> /// /// </summary> - public static Network ToNetwork(Yw.Model.HydroModelInfo model) + public static Network ToNetwork(this Yw.Model.HydroModelInfo model) { if (model == null) { @@ -18,179 +20,6 @@ #region 鑺傜偣 - //杩炴帴鑺傜偣 - if (model.Junctions != null && model.Junctions.Count > 0) - { - foreach (var junction in model.Junctions) - { - var junctionModel = new Junction(); - junctionModel.Id = junction.Code; - junctionModel.Name = junction.Name; - junctionModel.Quality = 0; - junctionModel.Position = new Position2d(junction.Position2d.X, junction.Position2d.Y); - junctionModel.Elev = junction.Elev; - junctionModel.Demand = junction.Demand; - junctionModel.DemandPattern = junction.DemandPattern; - - netWork.Junctions.Add(junctionModel); - } - } - - //鍠峰槾 - if (model.Nozzles != null && model.Nozzles.Count > 0) - { - foreach (var nozzle in model.Nozzles) - { - var nozzleModel = new Nozzle(); - nozzleModel.Id = nozzle.Code; - nozzleModel.Name = nozzle.Name; - nozzleModel.Quality = 0; - nozzleModel.Position = new Position2d(nozzle.Position2d.X, nozzle.Position2d.Y); - nozzleModel.Elev = nozzle.Elev; - nozzleModel.Demand = nozzle.Demand; - nozzleModel.DemandPattern = nozzle.DemandPattern; - nozzleModel.Coefficient = nozzle.Coefficient; - netWork.Nozzles.Add(nozzleModel); - } - } - - //娑堢伀鏍� - if (model.Hydrants != null && model.Hydrants.Count > 0) - { - foreach (var hydrant in model.Hydrants) - { - var hydrantModel = new Hydrant(); - hydrantModel.Id = hydrant.Code; - hydrantModel.Name = hydrant.Name; - hydrantModel.Quality = 0; - hydrantModel.Position = new Position2d(hydrant.Position2d.X, hydrant.Position2d.Y); - hydrantModel.Elev = hydrant.Elev; - hydrantModel.Demand = hydrant.Demand; - hydrantModel.DemandPattern = hydrant.DemandPattern; - hydrantModel.Coefficient = hydrant.Coefficient; - netWork.Hydrants.Add(hydrantModel); - } - } - - //寮ご - if (model.Elbows != null && model.Elbows.Count > 0) - { - foreach (var elbow in model.Elbows) - { - var elbowModel = new Junction(); - elbowModel.Id = elbow.Code; - elbowModel.Name = elbow.Name; - elbowModel.Quality = 0; - elbowModel.Position = new Position2d(elbow.Position2d.X, elbow.Position2d.Y); - elbowModel.Elev = elbow.Elev; - elbowModel.Demand = elbow.Demand; - elbowModel.DemandPattern = elbow.DemandPattern; - netWork.Junctions.Add(elbowModel); - } - } - - //涓夐�� - if (model.Threelinks != null && model.Threelinks.Count > 0) - { - foreach (var threelink in model.Threelinks) - { - var threelinkModel = new Junction(); - threelinkModel.Id = threelink.Code; - threelinkModel.Name = threelink.Name; - threelinkModel.Quality = 0; - threelinkModel.Position = new Position2d(threelink.Position2d.X, threelink.Position2d.Y); - threelinkModel.Elev = threelink.Elev; - threelinkModel.Demand = threelink.Demand; - threelinkModel.DemandPattern = threelink.DemandPattern; - netWork.Junctions.Add(threelinkModel); - } - } - - //鍥涢�� - if (model.Fourlinks != null && model.Fourlinks.Count > 0) - { - foreach (var fourlink in model.Fourlinks) - { - var fourlinkModel = new Junction(); - fourlinkModel.Id = fourlink.Code; - fourlinkModel.Name = fourlink.Name; - fourlinkModel.Quality = 0; - fourlinkModel.Position = new Position2d(fourlink.Position2d.X, fourlink.Position2d.Y); - fourlinkModel.Elev = fourlink.Elev; - fourlinkModel.Demand = fourlink.Demand; - fourlinkModel.DemandPattern = fourlink.DemandPattern; - netWork.Junctions.Add(fourlinkModel); - } - } - - //姘磋〃 - if (model.Meters != null && model.Meters.Count > 0) - { - foreach (var meter in model.Meters) - { - var meterModel = new Meter(); - meterModel.Id = meter.Code; - meterModel.Name = meter.Name; - meterModel.Quality = 0; - meterModel.Position = new Position2d(meter.Position2d.X, meter.Position2d.Y); - meterModel.Elev = meter.Elev; - meterModel.Demand = meter.Demand; - meterModel.DemandPattern = meter.DemandPattern; - netWork.Meters.Add(meterModel); - } - } - - //娴侀噺璁� - if (model.Flowmeters != null && model.Flowmeters.Count > 0) - { - foreach (var flowmeter in model.Flowmeters) - { - var flowmeterModel = new Junction(); - flowmeterModel.Id = flowmeter.Code; - flowmeterModel.Name = flowmeter.Name; - flowmeterModel.Quality = 0; - flowmeterModel.Position = new Position2d(flowmeter.Position2d.X, flowmeter.Position2d.Y); - flowmeterModel.Elev = flowmeter.Elev; - flowmeterModel.Demand = flowmeter.Demand; - flowmeterModel.DemandPattern = flowmeter.DemandPattern; - netWork.Junctions.Add(flowmeterModel); - } - } - - //鍘嬪姏琛� - if (model.Pressmeters != null && model.Pressmeters.Count > 0) - { - foreach (var pressmeter in model.Pressmeters) - { - var pressmeterModel = new Junction(); - pressmeterModel.Id = pressmeter.Code; - pressmeterModel.Name = pressmeter.Name; - pressmeterModel.Quality = 0; - pressmeterModel.Position = new Position2d(pressmeter.Position2d.X, pressmeter.Position2d.Y); - pressmeterModel.Elev = pressmeter.Elev; - pressmeterModel.Demand = pressmeter.Demand; - pressmeterModel.DemandPattern = pressmeter.DemandPattern; - netWork.Junctions.Add(pressmeterModel); - } - } - - //闂峰ご - if (model.Bluntheads != null && model.Bluntheads.Count > 0) - { - foreach (var blunthead in model.Bluntheads) - { - var bluntheadModel = new Junction(); - bluntheadModel.Id = blunthead.Code; - bluntheadModel.Name = blunthead.Name; - bluntheadModel.Quality = 0; - bluntheadModel.Position = new Position2d(blunthead.Position2d.X, blunthead.Position2d.Y); - bluntheadModel.Elev = blunthead.Elev; - bluntheadModel.Demand = blunthead.Demand; - bluntheadModel.DemandPattern = blunthead.DemandPattern; - netWork.Junctions.Add(bluntheadModel); - } - } - //姘村簱 if (model.Reservoirs != null && model.Reservoirs.Count > 0) { @@ -198,12 +27,12 @@ { var reservoirModel = new Reservoir(); reservoirModel.Id = reservoir.Code; + reservoirModel.Catalog = Yw.EPAnet.Catalog.Reservoir; reservoirModel.Name = reservoir.Name; reservoirModel.Quality = 0; reservoirModel.Position = new Position2d(reservoir.Position2d.X, reservoir.Position2d.Y); - reservoirModel.PoolElev = reservoir.PoolElev.HasValue ? reservoir.PoolElev.Value : 0; reservoirModel.Head = reservoir.Head; - reservoirModel.HeadPattern = reservoir.HeadPattern; + reservoirModel.HeadPattern = string.Empty; netWork.Reservoirs.Add(reservoirModel); } } @@ -215,6 +44,7 @@ { var tankModel = new Tank(); tankModel.Id = tank.Code; + tankModel.Catalog = Yw.EPAnet.Catalog.Tank; tankModel.Name = tank.Name; tankModel.Quality = 0; tankModel.Position = new Position2d(tank.Position2d.X, tank.Position2d.Y); @@ -222,9 +52,10 @@ tankModel.InitLevel = tank.InitLevel; tankModel.MaxLevel = tank.MaxLevel; tankModel.MinLevel = tank.MinLevel; + tankModel.Diameter = tank.DN; tankModel.MinVol = tank.MinVol; tankModel.VolCurve = tank.VolCurve; - tankModel.Diameter = tank.DN; + tankModel.Overflow = tank.OverFlow; netWork.Tanks.Add(tankModel); } } @@ -234,8 +65,9 @@ { foreach (var waterbox in model.Waterboxs) { - var waterboxModel = new Tank(); + var waterboxModel = new Waterbox(); waterboxModel.Id = waterbox.Code; + waterboxModel.Catalog = Yw.EPAnet.Catalog.Waterbox; waterboxModel.Name = waterbox.Name; waterboxModel.Quality = 0; waterboxModel.Position = new Position2d(waterbox.Position2d.X, waterbox.Position2d.Y); @@ -243,11 +75,228 @@ waterboxModel.InitLevel = waterbox.InitLevel; waterboxModel.MaxLevel = waterbox.MaxLevel; waterboxModel.MinLevel = waterbox.MinLevel; + waterboxModel.Diameter = waterbox.DN; waterboxModel.MinVol = waterbox.MinVol; waterboxModel.VolCurve = waterbox.VolCurve; - waterboxModel.Diameter = waterbox.DN; waterboxModel.Overflow = waterbox.OverFlow; - netWork.Tanks.Add(waterboxModel); + netWork.Waterboxs.Add(waterboxModel); + } + } + + //杩炴帴鑺傜偣 + if (model.Junctions != null && model.Junctions.Count > 0) + { + foreach (var junction in model.Junctions) + { + var junctionModel = new Junction(); + junctionModel.Id = junction.Code; + junctionModel.Catalog = Yw.EPAnet.Catalog.Junction; + junctionModel.Name = junction.Name; + junctionModel.Quality = 0; + junctionModel.Position = new Position2d(junction.Position2d.X, junction.Position2d.Y); + junctionModel.Elev = junction.Elev; + junctionModel.MinorLoss = junction.MinorLoss; + junctionModel.Demand = 0; + junctionModel.DemandPattern = null; + + netWork.Junctions.Add(junctionModel); + } + } + + //鍠峰槾 + if (model.Nozzles != null && model.Nozzles.Count > 0) + { + foreach (var nozzle in model.Nozzles) + { + var nozzleModel = new Nozzle(); + nozzleModel.Id = nozzle.Code; + nozzleModel.Catalog = Yw.EPAnet.Catalog.Nozzle; + nozzleModel.Name = nozzle.Name; + nozzleModel.Quality = 0; + nozzleModel.Position = new Position2d(nozzle.Position2d.X, nozzle.Position2d.Y); + nozzleModel.Elev = nozzle.Elev; + nozzleModel.MinorLoss = nozzle.MinorLoss; + nozzleModel.Demand = 0; + nozzleModel.DemandPattern = null; + nozzleModel.Coefficient = nozzle.Coefficient; + netWork.Nozzles.Add(nozzleModel); + } + } + + //鍐峰嵈濉� + if (model.Coolings != null && model.Coolings.Count > 0) + { + foreach (var cooling in model.Coolings) + { + var coolingModel = new Nozzle(); + coolingModel.Id = cooling.Code; + coolingModel.Catalog = Yw.EPAnet.Catalog.Nozzle; + coolingModel.Name = cooling.Name; + coolingModel.Quality = 0; + coolingModel.Position = new Position2d(cooling.Position2d.X, cooling.Position2d.Y); + coolingModel.Elev = cooling.Elev; + coolingModel.MinorLoss = cooling.MinorLoss; + coolingModel.Demand = 0; + coolingModel.DemandPattern = null; + coolingModel.Coefficient = cooling.Coefficient; + netWork.Nozzles.Add(coolingModel); + } + } + + //娑堢伀鏍� + if (model.Hydrants != null && model.Hydrants.Count > 0) + { + foreach (var hydrant in model.Hydrants) + { + var hydrantModel = new Hydrant(); + hydrantModel.Id = hydrant.Code; + hydrantModel.Catalog = Yw.EPAnet.Catalog.Hydrant; + hydrantModel.Name = hydrant.Name; + hydrantModel.Quality = 0; + hydrantModel.Position = new Position2d(hydrant.Position2d.X, hydrant.Position2d.Y); + hydrantModel.Elev = hydrant.Elev; + hydrantModel.MinorLoss = hydrant.MinorLoss; + hydrantModel.Demand = 0; + hydrantModel.DemandPattern = null; + hydrantModel.Coefficient = hydrant.Coefficient; + netWork.Hydrants.Add(hydrantModel); + } + } + + //闂峰ご + if (model.Bluntheads != null && model.Bluntheads.Count > 0) + { + foreach (var blunthead in model.Bluntheads) + { + var bluntheadModel = new Blunthead(); + bluntheadModel.Id = blunthead.Code; + bluntheadModel.Catalog = Yw.EPAnet.Catalog.Blunthead; + bluntheadModel.Name = blunthead.Name; + bluntheadModel.Quality = 0; + bluntheadModel.Position = new Position2d(blunthead.Position2d.X, blunthead.Position2d.Y); + bluntheadModel.Elev = blunthead.Elev; + bluntheadModel.MinorLoss = blunthead.MinorLoss; + bluntheadModel.Demand = 0; + bluntheadModel.DemandPattern = null; + netWork.Bluntheads.Add(bluntheadModel); + } + } + + //寮ご + if (model.Elbows != null && model.Elbows.Count > 0) + { + foreach (var elbow in model.Elbows) + { + var elbowModel = new Elbow(); + elbowModel.Id = elbow.Code; + elbowModel.Catalog = Yw.EPAnet.Catalog.Elbow; + elbowModel.Name = elbow.Name; + elbowModel.Quality = 0; + elbowModel.Position = new Position2d(elbow.Position2d.X, elbow.Position2d.Y); + elbowModel.Elev = elbow.Elev; + elbowModel.MinorLoss = elbow.MinorLoss; + elbowModel.Demand = 0; + elbowModel.DemandPattern = null; + elbowModel.ElbowType = elbow.ElbowType; + elbowModel.BendingAngle = elbow.BendingAngle; + netWork.Elbows.Add(elbowModel); + } + } + + //涓夐�� + if (model.Threelinks != null && model.Threelinks.Count > 0) + { + foreach (var threelink in model.Threelinks) + { + var threelinkModel = new Threelink(); + threelinkModel.Id = threelink.Code; + threelinkModel.Catalog = Yw.EPAnet.Catalog.Threelink; + threelinkModel.Name = threelink.Name; + threelinkModel.Quality = 0; + threelinkModel.Position = new Position2d(threelink.Position2d.X, threelink.Position2d.Y); + threelinkModel.Elev = threelink.Elev; + threelinkModel.MinorLoss = threelink.MinorLoss; + threelinkModel.Demand = 0; + threelinkModel.DemandPattern = null; + threelinkModel.RunningThroughLoss = threelink.RunningThroughLoss; + threelinkModel.BranchThroughLoss = threelink.BranchThroughLoss; + netWork.Threelinks.Add(threelinkModel); + } + } + + //鍥涢�� + if (model.Fourlinks != null && model.Fourlinks.Count > 0) + { + foreach (var fourlink in model.Fourlinks) + { + var fourlinkModel = new Fourlink(); + fourlinkModel.Id = fourlink.Code; + fourlinkModel.Catalog = Yw.EPAnet.Catalog.Fourlink; + fourlinkModel.Name = fourlink.Name; + fourlinkModel.Quality = 0; + fourlinkModel.Position = new Position2d(fourlink.Position2d.X, fourlink.Position2d.Y); + fourlinkModel.Elev = fourlink.Elev; + fourlinkModel.MinorLoss = fourlink.MinorLoss; + fourlinkModel.Demand = fourlink.Demand; + fourlinkModel.DemandPattern = fourlink.DemandPattern; + netWork.Fourlinks.Add(fourlinkModel); + } + } + + //姘磋〃 + if (model.Meters != null && model.Meters.Count > 0) + { + foreach (var meter in model.Meters) + { + var meterModel = new Meter(); + meterModel.Id = meter.Code; + meterModel.Catalog = Yw.EPAnet.Catalog.Meter; + meterModel.Name = meter.Name; + meterModel.Quality = 0; + meterModel.Position = new Position2d(meter.Position2d.X, meter.Position2d.Y); + meterModel.Elev = meter.Elev; + meterModel.MinorLoss = meter.MinorLoss; + meterModel.Demand = meter.Demand; + meterModel.DemandPattern = meter.DemandPattern; + netWork.Meters.Add(meterModel); + } + } + + //娴侀噺璁� + if (model.Flowmeters != null && model.Flowmeters.Count > 0) + { + foreach (var flowmeter in model.Flowmeters) + { + var flowmeterModel = new Flowmeter(); + flowmeterModel.Id = flowmeter.Code; + flowmeterModel.Catalog = Yw.EPAnet.Catalog.Flowmeter; + flowmeterModel.Name = flowmeter.Name; + flowmeterModel.Quality = 0; + flowmeterModel.Position = new Position2d(flowmeter.Position2d.X, flowmeter.Position2d.Y); + flowmeterModel.Elev = flowmeter.Elev; + flowmeterModel.MinorLoss = flowmeter.MinorLoss; + flowmeterModel.Demand = flowmeter.Demand; + flowmeterModel.DemandPattern = flowmeter.DemandPattern; + netWork.Flowmeters.Add(flowmeterModel); + } + } + + //鍘嬪姏琛� + if (model.Pressmeters != null && model.Pressmeters.Count > 0) + { + foreach (var pressmeter in model.Pressmeters) + { + var pressmeterModel = new Pressmeter(); + pressmeterModel.Id = pressmeter.Code; + pressmeterModel.Catalog = Yw.EPAnet.Catalog.Pressmeter; + pressmeterModel.Name = pressmeter.Name; + pressmeterModel.Quality = 0; + pressmeterModel.Position = new Position2d(pressmeter.Position2d.X, pressmeter.Position2d.Y); + pressmeterModel.Elev = pressmeter.Elev; + pressmeterModel.MinorLoss = pressmeter.MinorLoss; + pressmeterModel.Demand = pressmeter.Demand; + pressmeterModel.DemandPattern = pressmeter.DemandPattern; + netWork.Pressmeters.Add(pressmeterModel); } } @@ -264,14 +313,15 @@ { var pipeModel = new Pipe(); pipeModel.Id = pipe.Code; + pipeModel.Catalog = Yw.EPAnet.Catalog.Pipe; pipeModel.Name = pipe.Name; pipeModel.StartNode = allNodes.Find(x => x.Id == pipe.StartCode); pipeModel.EndNode = allNodes.Find(x => x.Id == pipe.EndCode); - pipeModel.LinkStatus = pipe.LinkStatus; + pipeModel.LinkStatus = Yw.Hydro.PipeStatus.Open; pipeModel.Length = pipe.Length; pipeModel.Diameter = pipe.Diameter; pipeModel.Roughness = pipe.Roughness; - pipeModel.MinorLoss = pipe.MinorLoss; + pipeModel.MinorLossCoeff = 0; netWork.Pipes.Add(pipeModel); } } @@ -281,53 +331,18 @@ { foreach (var translation in model.Translations) { - var translationModel = new Pipe(); + var translationModel = new Translation(); translationModel.Id = translation.Code; + translationModel.Catalog = Yw.EPAnet.Catalog.Translation; translationModel.Name = translation.Name; translationModel.StartNode = allNodes.Find(x => x.Id == translation.StartCode); translationModel.EndNode = allNodes.Find(x => x.Id == translation.EndCode); - translationModel.LinkStatus = translation.LinkStatus; + translationModel.LinkStatus = Yw.Hydro.LinkStatus.Open; translationModel.Length = translation.Length; - translationModel.Diameter = translation.Diameter; + translationModel.Diameter = (translation.StartDiameter + translation.EndDiameter) / 2f; translationModel.Roughness = translation.Roughness; - translationModel.MinorLoss = translation.MinorLoss; - netWork.Pipes.Add(translationModel); - } - } - - //鎹㈢儹鍣� - if (model.Exchangers != null && model.Exchangers.Count > 0) - { - foreach (var exchanger in model.Exchangers) - { - var exchangerModel = new HeatExchanger(); - exchangerModel.Id = exchanger.Code; - exchangerModel.Name = exchanger.Name; - exchangerModel.StartNode = allNodes.Find(x => x.Id == exchanger.StartCode); - exchangerModel.EndNode = allNodes.Find(x => x.Id == exchanger.EndCode); - exchangerModel.LinkStatus = exchanger.LinkStatus; - exchangerModel.Diameter = exchanger.Diameter; - exchangerModel.MinorLoss = exchanger.MinorLoss; - exchangerModel.FlowHeadLossCurve = "GPVDefault"; - netWork.HeatExchangers.Add(exchangerModel); - } - } - - //鍘嬬缉鏈� - if (model.Compressors != null && model.Compressors.Count > 0) - { - foreach (var compressor in model.Compressors) - { - var compressModel = new AirCompressor(); - compressModel.Id = compressor.Code; - compressModel.Name = compressor.Name; - compressModel.StartNode = allNodes.Find(x => x.Id == compressor.StartCode); - compressModel.EndNode = allNodes.Find(x => x.Id == compressor.EndCode); - compressModel.LinkStatus = compressor.LinkStatus; - compressModel.Diameter = compressor.Diameter; - compressModel.MinorLoss = compressor.MinorLoss; - compressModel.FlowHeadLossCurve = "GPVDefault"; - netWork.AirCompressors.Add(compressModel); + translationModel.MinorLossCoeff = translation.MinorLoss; + netWork.Translations.Add(translationModel); } } @@ -338,20 +353,19 @@ { var pumpModel = new Pump(); pumpModel.Id = pump.Code; + pumpModel.Catalog = Yw.EPAnet.Catalog.Pump; pumpModel.Name = pump.Name; pumpModel.StartNode = allNodes.Find(x => x.Id == pump.StartCode); pumpModel.EndNode = allNodes.Find(x => x.Id == pump.EndCode); pumpModel.LinkStatus = pump.LinkStatus; - pumpModel.RatedPower = pump.RatedP; + pumpModel.RatedP = pump.RatedP; pumpModel.CurveQH = pump.CurveQH; if (string.IsNullOrEmpty(pumpModel.CurveQH)) { pumpModel.CurveQH = "PumpDefault";//浣跨敤network榛樿娉垫洸绾� } - pumpModel.SpeedRatio = pump.SpeedRatio; pumpModel.SpeedRatioPattern = pump.SpeedRatioPattern; - pumpModel.CurveQE = pump.CurveQE; netWork.Pumps.Add(pumpModel); } } @@ -361,18 +375,124 @@ { foreach (var valve in model.Valves) { - var valveModel = new Yw.EPAnet.Valve(); - valveModel.Id = valve.Code; - valveModel.Name = valve.Name; - valveModel.StartNode = allNodes.Find(x => x.Id == valve.StartCode); - valveModel.EndNode = allNodes.Find(x => x.Id == valve.EndCode); - valveModel.LinkStatus = valve.LinkStatus; - valveModel.Diameter = valve.Diameter; - valveModel.MinorLoss = valve.MinorLoss; - valveModel.ValveType = valve.ValveType; - valveModel.ValveSetting = valve.ValveSetting; + //姝㈠洖闃�琚綋鎴愮閬撳鐞� + if (valve.ValveType == Yw.Hydro.ValveType.CV) + { + var pipeModel = new Pipe(); + pipeModel.Id = valve.Code; + pipeModel.Catalog = Yw.EPAnet.Catalog.Pipe; + pipeModel.Name = valve.Name; + pipeModel.StartNode = allNodes.Find(x => x.Id == valve.StartCode); + pipeModel.EndNode = allNodes.Find(x => x.Id == valve.EndCode); + pipeModel.LinkStatus = valve.LinkStatus; + pipeModel.Length = 0.01; + pipeModel.Diameter = valve.Diameter; + pipeModel.Roughness = 110; + pipeModel.MinorLossCoeff = valve.MinorLoss; + netWork.Pipes.Add(pipeModel); + } + else + { + var valveModel = new Yw.EPAnet.Valve(); + valveModel.Id = valve.Code; + valveModel.Catalog = Yw.EPAnet.Catalog.Valve; + valveModel.Name = valve.Name; + valveModel.StartNode = allNodes.Find(x => x.Id == valve.StartCode); + valveModel.EndNode = allNodes.Find(x => x.Id == valve.EndCode); + valveModel.LinkStatus = valve.LinkStatus; + valveModel.Diameter = valve.Diameter; + valveModel.MinorLoss = valve.MinorLoss; + valveModel.ValveType = valve.ValveType; + //valveModel.ValveSetting = valve.ValveSetting; + switch (valve.ValveType) + { + case Yw.Hydro.ValveType.PRV://鍑忓帇闃� + { - netWork.Valves.Add(valveModel); + } + break; + case Yw.Hydro.ValveType.PSV://绋冲帇闃� + { + + } + break; + case Yw.Hydro.ValveType.PBV://鍘嬪姏鍒跺姩闃� + { + + } + break; + case Yw.Hydro.ValveType.FCV://娴侀噺鎺у埗闃� + { + + } + break; + case Yw.Hydro.ValveType.TCV://鑺傛祦鎺у埗闃� + { + valveModel.ValveSetting = "0"; + // var curveol = model.Curves?.Find(x => x.Code == valve.ValveSetting); + //if (curveol != null) + //{ + // var point2dList = curveol.CurveData.Select(x => new Yw.Geometry.Point2d(x.X, x.Y)).ToList(); + // var ptCurveOL = new Yw.Geometry.CubicSpline2d(point2dList); + // valveModel.ValveSetting = ptCurveOL.GetPointY(valve.OpeningDegree).ToString(); + // if (valve.LinkStatus == Yw.Hydro.LinkStatus.Open) + // { + // if (valve.OpeningDegree > 0) + // { + // valveModel.LinkStatus = Yw.EPAnet.ValveStatus.None; + // } + // } + //} + + } + break; + case Yw.Hydro.ValveType.GPV://甯歌闃�闂� + { + + } + break; + default: break; + } + netWork.Valves.Add(valveModel); + } + } + } + + //鎹㈢儹鍣� + if (model.Exchangers != null && model.Exchangers.Count > 0) + { + foreach (var exchanger in model.Exchangers) + { + var exchangerModel = new Exchanger(); + exchangerModel.Id = exchanger.Code; + exchangerModel.Catalog = Yw.EPAnet.Catalog.Exchanger; + exchangerModel.Name = exchanger.Name; + exchangerModel.StartNode = allNodes.Find(x => x.Id == exchanger.StartCode); + exchangerModel.EndNode = allNodes.Find(x => x.Id == exchanger.EndCode); + exchangerModel.LinkStatus = exchanger.LinkStatus; + exchangerModel.Diameter = exchanger.Diameter; + exchangerModel.MinorLoss = exchanger.MinorLoss; + exchangerModel.CurveQL = exchanger.CurveQL; + netWork.Exchangers.Add(exchangerModel); + } + } + + //鍘嬬缉鏈� + if (model.Compressors != null && model.Compressors.Count > 0) + { + foreach (var compressor in model.Compressors) + { + var compressModel = new Compressor(); + compressModel.Id = compressor.Code; + compressModel.Catalog = Yw.EPAnet.Catalog.Compressor; + compressModel.Name = compressor.Name; + compressModel.StartNode = allNodes.Find(x => x.Id == compressor.StartCode); + compressModel.EndNode = allNodes.Find(x => x.Id == compressor.EndCode); + compressModel.LinkStatus = compressor.LinkStatus; + compressModel.Diameter = compressor.Diameter; + compressModel.MinorLoss = compressor.MinorLoss; + compressModel.CurveQL = compressor.CurveQL; + netWork.Compressors.Add(compressModel); } } @@ -383,6 +503,7 @@ { var curveModel = new Yw.EPAnet.Curve(); curveModel.Id = curve.Code; + curveModel.Catalog = Yw.EPAnet.Catalog.Curve; curveModel.Name = curve.Name; curveModel.CurveType = curve.CurveType; curveModel.CurveData = curve.CurveData?.Select(x => new CurvePoint(x.X, x.Y)).ToList(); @@ -404,7 +525,6 @@ } #endregion - return netWork; } -- Gitblit v1.9.3