using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using Yw.EPAnet.Calcu; using Yw.WinFrmUI.Q3d; namespace Hydro.ClientTool { public partial class Form2 : Form { public Form2() { InitializeComponent(); } private void Form2_Load(object sender, EventArgs e) { NetWork network = new NetWork(); network.BuildFromInp(@"temp/temp.inp"); NetworkViewModel mapNetwork = new NetworkViewModel(); foreach (var node in network.Nodes) { NodeViewModel viewNode=null; if (node is MeterModel meter) { viewNode = new MeterViewModel(); viewNode.X = meter.X; viewNode.Y = meter.Y; viewNode.Name = meter.Name; viewNode.ID = meter.ID; viewNode.Z = meter.Elev; viewNode.Demand = meter.Demand; } else if (node is JunctionModel j) { viewNode = new JunctionViewModel(); viewNode.X = j.X; viewNode.Y = j.Y; viewNode.Name = j.Name; viewNode.ID = j.ID; viewNode.Z = j.Elev; viewNode.Demand = j.Demand; } else if (node is ReservoisModel res) { viewNode= new ReservoirViewModel(); viewNode.X = res.X; viewNode.Y = res.Y; viewNode.Name = res.Name; viewNode.ID = res.ID; viewNode.Z = res.Elev; ((ReservoirViewModel)viewNode).Head = res.Head; } mapNetwork.Nodes.Add(viewNode); } foreach(var link in network.Links) { LinkViewModel viewLink = null; //判断如果是管道 if (link is PipeModel pipe) { viewLink = new PipeViewModel(); viewLink.ID = pipe.ID; viewLink.Node1 = pipe.Node1; viewLink.Node2 = pipe.Node2; viewLink.Diameter = pipe.Diameter; viewLink.Length = pipe.Length; viewLink.Roughness = pipe.Roughness; } else if (link is ValveModel valve) { viewLink = new ValveViewModel(); viewLink.ID= valve.ID; viewLink.Node1 = valve.Node1; viewLink.Node2 = valve.Node2; viewLink.Diameter = valve.Diameter; viewLink.Length = valve.Length; viewLink.Roughness = valve.Roughness; } mapNetwork.Links.Add(viewLink); } mapNetwork.BuildRelation(); map.SetData(mapNetwork); } private void Form2_KeyDown(object sender, KeyEventArgs e) { map.MapViewer_KeyDown(sender, e); } } }