using Yw.WinFrmUI.Hydro;
|
using Yw.Epanet;
|
using System.Threading.Tasks;
|
|
namespace Yw.WinFrmUI
|
{
|
public partial class MainForm : Form
|
{
|
public MainForm()
|
{
|
InitializeComponent();
|
this.Load += MainForm_Load;
|
}
|
|
private void MainForm_Load(object sender, EventArgs e)
|
{
|
var nw = LoadEpaNetwork();
|
var nw3d = Get3dNetwork(nw);
|
var openGLControl = new OrthoViewer2d();
|
openGLControl.Dock = DockStyle.Fill;
|
openGLControl.InitialNetwork(nw3d);
|
this.Controls.Add(openGLControl);
|
}
|
|
private Yw.Epanet.Network LoadEpaNetwork()
|
{
|
var fileName = "wh.inp";
|
var nw = new Yw.Epanet.Network().ParseInpFile(fileName);
|
return nw;
|
}
|
|
private NetworkL3d Get3dNetwork(Yw.Epanet.Network nw)
|
{
|
string msg = null;
|
var nw3d = new NetworkL3d();
|
foreach (var tank in nw.Tanks)
|
{
|
var tank3d = new TankL3d();
|
tank3d.Id = tank.Id;
|
tank3d.Name = tank.Name;
|
tank3d.Position = new PointL3d()
|
{
|
X = (float)tank.Position.X,
|
Y = (float)tank.Position.Y,
|
Z = (float)tank.GetElev()
|
};
|
nw3d.Append(tank3d, out msg);
|
}
|
|
foreach (var junction in nw.Junctions)
|
{
|
var junction3d = new JunctionL3d();
|
junction3d.Id = junction.Id;
|
junction3d.Name = junction.Name;
|
junction3d.Position = new PointL3d()
|
{
|
X = (float)junction.Position.X,
|
Y = (float)junction.Position.Y,
|
Z = (float)junction.GetElev()
|
};
|
nw3d.Append(junction3d, out msg);
|
}
|
|
foreach (var pipe in nw.Pipes)
|
{
|
var pipe3d = new PipeL3d();
|
pipe3d.Id = pipe.Id;
|
pipe3d.Name = pipe.Name;
|
pipe3d.StartPosition = new PointL3d()
|
{
|
X = (float)pipe.StartNode.Position.X,
|
Y = (float)pipe.StartNode.Position.Y,
|
Z = (float)pipe.StartNode.GetElev()
|
};
|
pipe3d.EndPosition = new PointL3d()
|
{
|
X = (float)pipe.EndNode.Position.X,
|
Y = (float)pipe.EndNode.Position.Y,
|
Z = (float)pipe.EndNode.GetElev()
|
};
|
nw3d.Append(pipe3d, out msg);
|
}
|
|
foreach (var pump in nw.Pumps)
|
{
|
var pump3d = new PumpL3d();
|
pump3d.Id = pump.Id;
|
pump3d.Name = pump.Name;
|
pump3d.StartPosition = new PointL3d()
|
{
|
X = (float)pump.StartNode.Position.X,
|
Y = (float)pump.StartNode.Position.Y,
|
Z = (float)pump.StartNode.GetElev()
|
};
|
pump3d.EndPosition = new PointL3d()
|
{
|
X = (float)pump.EndNode.Position.X,
|
Y = (float)pump.EndNode.Position.Y,
|
Z = (float)pump.EndNode.GetElev()
|
};
|
nw3d.Append(pump3d, out msg);
|
}
|
|
foreach (var valve in nw.Valves)
|
{
|
var valve3d = new ValveL3d();
|
valve3d.Id = valve.Id;
|
valve3d.Name = valve.Name;
|
valve3d.StartPosition = new PointL3d()
|
{
|
X = (float)valve.StartNode.Position.X,
|
Y = (float)valve.StartNode.Position.Y,
|
Z = (float)valve.StartNode.GetElev()
|
};
|
valve3d.EndPosition = new PointL3d()
|
{
|
X = (float)valve.EndNode.Position.X,
|
Y = (float)valve.EndNode.Position.Y,
|
Z = (float)valve.EndNode.GetElev()
|
};
|
nw3d.Append(valve3d, out msg);
|
}
|
|
return nw3d;
|
|
}
|
|
|
|
}
|
}
|