using HyView = Hydro.MapView;
|
using HyCore = Hydro.Core.Model;
|
using System.Globalization;
|
using Hydro.MapView;
|
|
namespace HStation.WinFrmUI
|
{
|
/// <summary>
|
///
|
/// </summary>
|
public class HydroQ3dTransferHelper
|
{
|
/// <summary>
|
/// 转换
|
/// </summary>
|
/// <param name="info">模型信息</param>
|
/// <returns></returns>
|
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;
|
}
|
|
}
|
}
|