using System.Windows; using HelixToolkit.Wpf; using System.Windows.Media.Media3D; using System.Windows.Input; using Yw.WpfUI.Hydro; using Yw.Epanet; using System.Windows.Media; namespace Yw.Wpf.Test.Core { public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); this.Loaded += MainWindow_Loaded; } private void MainWindow_Loaded(object sender, RoutedEventArgs e) { var nw = LoadEpaNetwork(); var nw3d = Get3dNetwork(nw); this.editer.Initial(nw3d); } 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; } private void AddJunction_Click(object sender, RoutedEventArgs e) { this.editer.StartAddJunction(); } private void AddReservoir_Click(object sender, RoutedEventArgs e) { this.editer.StartAddReservoir(); } private void AddTank_Click(object sender, RoutedEventArgs e) { this.editer.StartAddTank(); } private void AddPipe_Click(object sender, RoutedEventArgs e) { this.editer.StartAddPipe(); } private void AddHorizPipe_Click(object sender, RoutedEventArgs e) { this.editer.StartAddHorizPipe(); } private void AddVertPipe_Click(object sender, RoutedEventArgs e) { this.editer.StartAddVertPipe(); } private void AddPump_Click(object sender, RoutedEventArgs e) { this.editer.StartAddPump(); } private void AddValve_Click(object sender, RoutedEventArgs e) { this.editer.StartAddValve(); } private void TopMenuItem_Click(object sender, RoutedEventArgs e) { this.editer.SetTopView(); } private void BottomMenuItem_Click(object sender, RoutedEventArgs e) { this.editer.SetBottomView(); } private void LeftMenuItem_Click(object sender, RoutedEventArgs e) { this.editer.SetLeftView(); } private void RightMenuItem_Click(object sender, RoutedEventArgs e) { this.editer.SetRightView(); } private void FrontMenuItem_Click(object sender, RoutedEventArgs e) { this.editer.SetFrontView(); } private void BackMenuItem_Click(object sender, RoutedEventArgs e) { this.editer.SetBackView(); } } }