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; using System.Security.Policy; using System.IO; namespace Yw.Wpf.Test.Core { public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); this.Loaded += MainWindow_Loaded; this.KeyDown += MainWindow_KeyDown; } 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 void MainWindow_KeyDown(object sender, KeyEventArgs e) { if (e.Key == Key.Escape) { editer.EndEdit(); } } 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.SetAddMode(eDrawAddWay.Click, eDrawAddType.Junction); } private void AddReservoir_Click(object sender, RoutedEventArgs e) { this.editer.SetAddMode(eDrawAddWay.Click, eDrawAddType.Reservoir); } private void AddTank_Click(object sender, RoutedEventArgs e) { this.editer.SetAddMode(eDrawAddWay.Click, eDrawAddType.Tank); } private void TopMenuItem_Click(object sender, RoutedEventArgs e) { this.editer.ShowTopView(); } private void BottomMenuItem_Click(object sender, RoutedEventArgs e) { this.editer.ShowBottomView(); } private void LeftMenuItem_Click(object sender, RoutedEventArgs e) { this.editer.ShowLeftView(); } private void RightMenuItem_Click(object sender, RoutedEventArgs e) { this.editer.ShowRightView(); } private void FrontMenuItem_Click(object sender, RoutedEventArgs e) { this.editer.ShowFrontView(); } private void BackMenuItem_Click(object sender, RoutedEventArgs e) { this.editer.ShowBackView(); } 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.ShowBillboardText(); this.editer.SetBillboardText(list); } private void CheckBox_Checked(object sender, RoutedEventArgs e) { this.editer.WorkPanelVisible = true; } private void ckGridLines_Unchecked(object sender, RoutedEventArgs e) { this.editer.WorkPanelVisible = 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.ShowSouthWestView(); } private void SouthEastMenuItem_Click(object sender, RoutedEventArgs e) { this.editer.ShowSouthEastView(); } private void NonthWestMenuItem_Click(object sender, RoutedEventArgs e) { this.editer.ShowNorthWestView(); } private void NonthEastMenuItem_Click(object sender, RoutedEventArgs e) { this.editer.ShowNorthEastView(); } private void SaveDefaultCameraMenuItem_Click(object sender, RoutedEventArgs e) { this.editer.SetDefaultView(); } private void ApplyDefaultCameraMenuItem_Click(object sender, RoutedEventArgs e) { this.editer.ShowDefaultView(); } 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(); } private void PipeMenuItem_Click(object sender, RoutedEventArgs e) { this.editer.SetAddMode(eDrawAddWay.Click, eDrawAddType.Pipe); } private void HorizPipeMenuItem_Click(object sender, RoutedEventArgs e) { this.editer.SetAddMode(eDrawAddWay.Click, eDrawAddType.HorizPipe); } private void VertPipeMenuItem_Click(object sender, RoutedEventArgs e) { this.editer.SetAddMode(eDrawAddWay.Click, eDrawAddType.VertPipe); } private void PumpMenuItem_Click(object sender, RoutedEventArgs e) { this.editer.SetAddMode(eDrawAddWay.Click, eDrawAddType.Pump); } private void HorizPumpMenuItem_Click(object sender, RoutedEventArgs e) { this.editer.SetAddMode(eDrawAddWay.Click, eDrawAddType.HorizPump); } private void VertPumpMenuItem_Click(object sender, RoutedEventArgs e) { this.editer.SetAddMode(eDrawAddWay.Click, eDrawAddType.VertPump); } private void ValveMenuItem_Click(object sender, RoutedEventArgs e) { this.editer.SetAddMode(eDrawAddWay.Click, eDrawAddType.Valve); } private void HorizValveMenuItem_Click(object sender, RoutedEventArgs e) { this.editer.SetAddMode(eDrawAddWay.Click, eDrawAddType.HorizValve); } private void VertValveMenuItem_Click(object sender, RoutedEventArgs e) { this.editer.SetAddMode(eDrawAddWay.Click, eDrawAddType.VertValve); } private void ExchangerMenuItem_Click(object sender, RoutedEventArgs e) { this.editer.SetAddMode(eDrawAddWay.Click, eDrawAddType.Exchanger); } private void HorizExchangerMenuItem_Click(object sender, RoutedEventArgs e) { this.editer.SetAddMode(eDrawAddWay.Click, eDrawAddType.HorizExchanger); } private void VertExchangerMenuItem_Click(object sender, RoutedEventArgs e) { this.editer.SetAddMode(eDrawAddWay.Click, eDrawAddType.VertExchanger); } private void CompressorMenuItem_Click(object sender, RoutedEventArgs e) { this.editer.SetAddMode(eDrawAddWay.Click, eDrawAddType.Compressor); } private void HorizCompressorMenuItem_Click(object sender, RoutedEventArgs e) { this.editer.SetAddMode(eDrawAddWay.Click, eDrawAddType.HorizCompressor); } private void VertCompressorMenuItem_Click(object sender, RoutedEventArgs e) { this.editer.SetAddMode(eDrawAddWay.Click, eDrawAddType.VertCompressor); } private void CancelAdd_Click(object sender, RoutedEventArgs e) { this.editer.SetAddMode(eDrawAddWay.None, eDrawAddType.None); } } }