using HyView = Hydro.MapView; using HyCore = Hydro.Core.Model; using System.Globalization; using Hydro.MapView; namespace HStation.WinFrmUI { /// /// /// public class HydroQ3dTransferHelper { /// /// 转换 /// /// 模型信息 /// public static HyView.MapViewNetWork Transfer(Yw.Model.HydroModelInfo info) { if (info == null) { return default; } var netWork = new HyView.MapViewNetWork(); netWork.Nodes = new HyView.NodeViewModelList(); netWork.Links = new HyView.LinkViewModelList(); //连接节点 if (info.Junctions != null && info.Junctions.Count > 0) { foreach (var junction in info.Junctions) { var junctionModel = new HyView.JunctionViewModel(); junctionModel.ID = junction.Code; junctionModel.Name = junction.Name; junctionModel.X = (float)junction.Position3d.X; junctionModel.Y = (float)junction.Position3d.Y; //junctionModel.Z = (float)junction.Position3d.Z; junctionModel.Position3D = new HyView.PointF3D((float)junction.Position3d.X, (float)junction.Position3d.Y, (float)junction.Position3d.Z); junctionModel.Elev = (float)junction.Elev; junctionModel.Demand = junction.Demand.HasValue ? (float)junction.Demand.Value : 0; junctionModel.PatternID = junction.DemandPattern; //junctionModel.Status = StatusType.DEFAULT; netWork.Nodes.Add(junctionModel); netWork.Nodes.Add(junctionModel); } } //水库 if (info.Reservoirs != null && info.Reservoirs.Count > 0) { foreach (var reservoir in info.Reservoirs) { var reservoirModel = new HyView.ReservoirViewModel(); reservoirModel.ID = reservoir.Code; reservoirModel.Name = reservoir.Name; reservoirModel.X = (float)reservoir.Position3d.X; reservoirModel.Y = (float)reservoir.Position3d.Y; //reservoirModel.Z = (float)reservoir.Position3d.Z; reservoirModel.Demand = 0; reservoirModel.Head = (float)reservoir.Head; reservoirModel.PatternID = reservoir.HeadPattern; reservoirModel.Position3D = new HyView.PointF3D((float)reservoir.Position3d.X, (float)reservoir.Position3d.Y, (float)reservoir.Position3d.Z); netWork.Nodes.Add(reservoirModel); } } //水池 if (info.Tanks != null && info.Tanks.Count > 0) { foreach (var tank in info.Tanks) { var tankModel = new HyView.TankViewModel(); tankModel.ID = tank.Code; tankModel.Name = tank.Name; tankModel.X = (float)tank.Position3d.X; tankModel.Y = (float)tank.Position3d.Y; //tankModel.Z = (float)tank.Position3d.Z; tankModel.Demand = 0; tankModel.Diameter = (float)tank.Diameter; tankModel.Elev = (float)tank.PoolElev; tankModel.InitLevel = (float)tank.InitLevel; tankModel.MinLevel = (float)tank.MinLevel; tankModel.MaxLevel = (float)tank.MaxLevel; tankModel.MinVol = (float)tank.MinVol; tankModel.VolCurve = tank.VolCurve; tankModel.Position3D = new HyView.PointF3D((float)tank.Position3d.X, (float)tank.Position3d.Y, (float)tank.Position3d.Z); netWork.Nodes.Add(tankModel); } } //管道 if (info.Pipes != null && info.Pipes.Count > 0) { foreach (var pipe in info.Pipes) { var pipeModel = new HyView.PipeViewModel(); pipeModel.ID = pipe.Code; pipeModel.Name = pipe.Name; // pipeModel.Status = StatusType.OPEN; pipeModel.StartNode = netWork.Nodes.Find(x => x.ID == pipe.StartCode); pipeModel.EndNode = netWork.Nodes.Find(x => x.ID == pipe.EndCode); pipeModel.Diameter = (float)pipe.Diameter; pipeModel.Length = (float)pipe.Length; pipeModel.Roughness = (float)pipe.Roughness; pipeModel.MinorLoss = (float)pipe.MinorLoss; netWork.Links.Add(pipeModel); } } //水泵 if (info.Pumps != null && info.Pumps.Count > 0) { foreach (var pump in info.Pumps) { var pumpModel = new HyView.PumpViewModel(); pumpModel.ID = pump.Code; pumpModel.Name = pump.Name; //pumpModel.Status = StatusType.OPEN; pumpModel.StartNode = netWork.Nodes.Find(x => x.ID == pump.StartCode); pumpModel.EndNode = netWork.Nodes.Find(x => x.ID == pump.EndCode); pumpModel.HeadCurve = pump.CurveQH; netWork.Links.Add(pumpModel); } } //阀门 if (info.Valves != null && info.Valves.Count > 0) { foreach (var valve in info.Valves) { var valveModel = new HyView.ValveViewModel(); valveModel.ID = valve.Code; valveModel.Name = valve.Name; //valveModel.Status = StatusType.OPEN; valveModel.StartNode = netWork.Nodes.Find(x => x.ID == valve.StartCode); valveModel.EndNode = netWork.Nodes.Find(x => x.ID == valve.EndCode); valveModel.Diameter = (float)valve.Diameter; valveModel.Type = valve.ValveType; valveModel.Setting = valve.ValveSetting; netWork.Links.Add(valveModel); } } return netWork; } } }