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 NetworkL3d _nw = null; private void MainWindow_Loaded(object sender, RoutedEventArgs e) { var nw = LoadEpaNetwork(); //_nw = Get3dNetwork(nw); _nw = new NetworkL3d(); this.editer.Initial(_nw); } 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.StartNode = nw3d.Nodes.Find(x => x.Id == pipe.StartNodeId); pipe3d.EndNode = nw3d.Nodes.Find(x => x.Id == pipe.EndNodeId); nw3d.Append(pipe3d, out msg); } foreach (var pump in nw.Pumps) { var pump3d = new PumpL3d(); pump3d.Id = pump.Id; pump3d.Name = pump.Name; pump3d.StartNode = nw3d.Nodes.Find(x => x.Id == pump.StartNodeId); pump3d.EndNode = nw3d.Nodes.Find(x => x.Id == pump.EndNodeId); nw3d.Append(pump3d, out msg); } foreach (var valve in nw.Valves) { var valve3d = new ValveL3d(); valve3d.Id = valve.Id; valve3d.Name = valve.Name; valve3d.StartNode = nw3d.Nodes.Find(x => x.Id == valve.StartNodeId); valve3d.EndNode = nw3d.Nodes.Find(x => x.Id == valve.EndNodeId); 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(); } private void BillboardText_Click(object sender, RoutedEventArgs e) { var list = _nw.Visuals.Select(x => new TextL3d() { Id = x.Id, Text = x.Id }).ToList(); this.editer.SetBillboardText(list); } private void CheckBox_Checked(object sender, RoutedEventArgs e) { this.editer.GridLinesVisible = true; } private void ckGridLines_Unchecked(object sender, RoutedEventArgs e) { this.editer.GridLinesVisible = false; } private void ckBackgroud_Checked(object sender, RoutedEventArgs e) { this.editer.BackgroudVisible = true; this.editer.SetBackgroud("mt.png"); } private void ckBackgroud_Unchecked(object sender, RoutedEventArgs e) { this.editer.BackgroudVisible = false; } private void SouthWestMenuItem_Click(object sender, RoutedEventArgs e) { this.editer.SetSouthWestView(); } private void SouthEastMenuItem_Click(object sender, RoutedEventArgs e) { this.editer.SetSouthEastView(); } private void NonthWestMenuItem_Click(object sender, RoutedEventArgs e) { this.editer.SetNorthWestView(); } private void NonthEastMenuItem_Click(object sender, RoutedEventArgs e) { this.editer.SetNorthEastView(); } private void SaveDefaultCameraMenuItem_Click(object sender, RoutedEventArgs e) { this.editer.SaveDefaultCamera(); } private void ApplyDefaultCameraMenuItem_Click(object sender, RoutedEventArgs e) { this.editer.ApplyDefaultCamera(); } private void StartEditMenuItem_Click(object sender, RoutedEventArgs e) { this.editer.StartEdit(); } private void EndEditCameraMenuItem_Click(object sender, RoutedEventArgs e) { this.editer.EndEdit(); } private void FlowEffect_Click(object sender, RoutedEventArgs e) { this.editer.ShowFlowDirection(); } } }