using Hydro.Core.Model; using HyCore = Hydro.Core; namespace Yw.Hydro { /// /// 解析辅助类 /// public class ParseHelper { /// /// /// public static NetWork ToNetWork(Yw.Model.HydroModelInfo model) { if (model == null) { return default; } var netWork = new NetWork(); //连接节点 if (model.Junctions != null && model.Junctions.Count > 0) { foreach (var junction in model.Junctions) { var junctionModel = new JunctionModel(); junctionModel.ID = junction.Code; junctionModel.Name = junction.Name; junctionModel.Elev = (float)junction.Elev; junctionModel.Demand = junction.Demand.HasValue ? (float)junction.Demand.Value : 0; junctionModel.PatternID = junction.DemandPattern; junctionModel.X = (float)junction.Position2d.X; junctionModel.Y = (float)junction.Position2d.Y; netWork.Nodes.Add(junctionModel); } } //水库 if (model.Reservoirs != null && model.Reservoirs.Count > 0) { foreach (var reservoir in model.Reservoirs) { var reservoirModel = new ReservoisModel(); reservoirModel.ID = reservoir.Code; reservoirModel.Name = reservoir.Name; reservoirModel.Head = (float)reservoir.Head; reservoirModel.PatternID = reservoir.HeadPattern; reservoirModel.X = (float)reservoir.Position2d.X; reservoirModel.Y = (float)reservoir.Position2d.Y; netWork.Nodes.Add(reservoirModel); } } //水池 if (model.Tanks != null && model.Tanks.Count > 0) { foreach (var tank in model.Tanks) { var tankModel = new TankModel(); tankModel.ID = tank.Code; tankModel.Name = tank.Name; tankModel.Elev = (float)tank.PoolElev; tankModel.InitLevel = (float)tank.InitLevel; tankModel.MaxLevel = (float)tank.MaxLevel; tankModel.MinLevel = (float)tank.MinLevel; tankModel.MinVol = (float)tank.MinVol; tankModel.VolCurve = tank.VolCurve; tankModel.Diameter = (float)tank.Diameter; tankModel.X = (float)tank.Position2d.X; tankModel.Y = (float)tank.Position2d.Y; netWork.Nodes.Add(tankModel); } } //管道 if (model.Pipes != null && model.Pipes.Count > 0) { foreach (var pipe in model.Pipes) { var pipeModel = new PipeModel(); pipeModel.ID = pipe.Code; pipeModel.Name = pipe.Name; pipeModel.Node1 = pipe.StartCode; pipeModel.Node2 = pipe.EndCode; pipeModel.Length = (float)pipe.Length; pipeModel.Diameter = (float)pipe.Diameter; pipeModel.Roughness = (float)pipe.Roughness; pipeModel.MinorLoss = (float)pipe.MinorLoss; netWork.Links.Add(pipeModel); } } //水泵 if (model.Pumps != null && model.Pumps.Count > 0) { foreach (var pump in model.Pumps) { var pumpModel = new PumpModel(); pumpModel.ID = pump.Code; pumpModel.Name = pump.Name; pumpModel.Node1 = pump.StartCode; pumpModel.Node2 = pump.EndCode; pumpModel.RatedPower = pump.RatedPower; pumpModel.FlowCurveID = pump.CurveQH; pumpModel.Status = HyCore.ObjectEnum.StatusType.OPEN; netWork.Links.Add(pumpModel); } } return netWork; } } }