From 3c8e996db701f2744af261e876455754ad182b62 Mon Sep 17 00:00:00 2001 From: lixiaojun <1287241240@qq.com> Date: 星期五, 09 五月 2025 16:19:36 +0800 Subject: [PATCH] Merge branch 'master' of http://47.103.154.90:83/r/HStation/XHS.V1.0 --- Desktop/HStation.Xhs.Hydro.Test.Core/Form3.cs | 156 ++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 139 insertions(+), 17 deletions(-) diff --git a/Desktop/HStation.Xhs.Hydro.Test.Core/Form3.cs b/Desktop/HStation.Xhs.Hydro.Test.Core/Form3.cs index ec9f399..2fd2bfb 100644 --- a/Desktop/HStation.Xhs.Hydro.Test.Core/Form3.cs +++ b/Desktop/HStation.Xhs.Hydro.Test.Core/Form3.cs @@ -10,16 +10,17 @@ using Yw.WinFrmUI.Q3d; using Yw.EPAnet; using System.IO; - +using Newtonsoft.Json; namespace Hydro.ClientTool { public partial class Form3 : Form { - public NetworkViewModel _net { get; set; } + public NetworkViewModel _viewnet { get; set; } public Network _network { get; set; } - + public Dictionary<string, Node> dictNodes { get; set; } + public Dictionary<string, Link> dictLinks { get; set; } public Form3() { InitializeComponent(); @@ -29,15 +30,63 @@ { //鎵撳紑鏂囦欢瀵硅瘽妗嗭紝閫夋嫨inp绫诲瀷鐨勬枃浠� var ofd = new OpenFileDialog(); - ofd.Filter = "inp鏂囦欢|*.inp"; + ofd.Filter = "json鏂囦欢|*.json|inp鏂囦欢|*.inp"; if (ofd.ShowDialog() == DialogResult.OK) { //string inptxt = File.ReadAllText(ofd.FileName); - _network = InpInteropHelper.FromInpString(ofd.FileName); + //濡傛灉鏄痠np鏂囦欢锛岃皟鐢↖npInteropHelper.FromInpString鏂规硶锛屽皢inp鏂囦欢杞崲涓篘etwork瀵硅薄 + //濡傛灉鏄痡son鏂囦欢锛岀洿鎺ヨ皟鐢↗sonConvert.DeserializeObject鏂规硶锛屽皢json鏂囦欢杞崲涓篘etwork瀵硅薄 + if (ofd.FileName.EndsWith(".inp")) + //_network = InpInteropHelper.FromInpString(ofd.FileName); + _network = InpInteropHelper.FromInpString(ofd.FileName); + else + { + string inptxt = File.ReadAllText(ofd.FileName); + _network = JsonConvert.DeserializeObject<Network>(inptxt); + //_network.GetAllNodes().ForEach(n => + //{ + // n.Links = new List<Link>(); + //}); + dictNodes = _network.GetAllNodes().ToDictionary(n => n.Id); + _network.GetAllLinks().ForEach(l => + { + l.StartNode = dictNodes[l.StartNode.Id]; + l.EndNode = dictNodes[l.EndNode.Id]; - _net = ConvertNetworkToNetworkViewModel(_network); - map.SetData(_net); + }); + dictLinks = _network.GetAllLinks().ToDictionary(l => l.Id); + + _network.GetAllLinks().ForEach(l => + { + if (l.StartNode.Links == null) l.StartNode.Links = new List<Link>(); + if (l.EndNode.Links == null) l.EndNode.Links = new List<Link>(); + l.StartNode.Links.Add(l); + l.EndNode.Links.Add(l); + }); + + + + } + + + _viewnet = ConvertNetworkToNetworkViewModel(_network); + map.SetData(_viewnet); + map.SelectedObjectsChanged += (oo, ee) => + { + if (map.selectedObjs.Count > 1) + { + propertyGrid1.SelectedObjects = map.selectedObjs.ToArray(); + } + else if (map.selectedObjs.Count == 1) + { + propertyGrid1.SelectedObject = map.selectedObjs[0]; + } + else + { + propertyGrid1.SelectedObject = null; + } + }; } @@ -59,7 +108,7 @@ Length = (float)pipe.Length, Diameter = (float)pipe.Diameter, Roughness = (float)pipe.Roughness, - Status = (ObjectEnum.StatusType)Enum.Parse(typeof(ObjectEnum.StatusType), pipe.LinkStatus.ToUpper()), + Status = pipe.LinkStatus == null ? ObjectEnum.StatusType.DEFAULT : (ObjectEnum.StatusType)Enum.Parse(typeof(ObjectEnum.StatusType), pipe.LinkStatus.ToUpper()), }); } else if (l is Pump) @@ -71,7 +120,7 @@ Node1 = pump.StartNode.Id, Node2 = pump.EndNode.Id, HeadCurve = pump.CurveQH, - Status = (ObjectEnum.StatusType)Enum.Parse(typeof(ObjectEnum.StatusType), pump.LinkStatus.ToUpper()), + Status = pump.LinkStatus == null ? ObjectEnum.StatusType.DEFAULT : (ObjectEnum.StatusType)Enum.Parse(typeof(ObjectEnum.StatusType), pump.LinkStatus.ToUpper()), }); } else if (l is Valve) @@ -84,7 +133,7 @@ Node2 = valve.EndNode.Id, Diameter = (float)valve.Diameter, Setting = valve.ValveSetting, - Status = (ObjectEnum.StatusType)Enum.Parse(typeof(ObjectEnum.StatusType), valve.LinkStatus.ToUpper()), + Status = valve.LinkStatus == null ? ObjectEnum.StatusType.DEFAULT : (ObjectEnum.StatusType)Enum.Parse(typeof(ObjectEnum.StatusType), valve.LinkStatus.ToUpper()), }); } else if (l is Exchanger) @@ -190,7 +239,7 @@ private void Form3_Load(object sender, EventArgs e) { - + } @@ -200,6 +249,47 @@ this.Close(); } + + + private void 绠�鍗曡绠桾oolStripMenuItem_Click(object sender, EventArgs e) + { + CalcuResult result = _network.Calcu(CalcuMode.Simple); + //灏嗚绠楃粨鏋滃缓绔媙ode瀛楀吀鍜宭ink瀛楀吀 + Dictionary<string, CalcuNode> dictNodes = result.NodeList.ToDictionary(n => n.Id); + Dictionary<string, CalcuLink> dictLinks = result.LinkList.ToDictionary(l => l.Id); + //灏嗚绠楃粨鏋滄樉绀哄湪_net涓� + _viewnet.Links.ForEach(l => + { + if (dictLinks.ContainsKey(l.ID)) + { + l.EN_FLOW = (float)dictLinks[l.ID].Flow; + l.EN_VELOCITY = (float)dictLinks[l.ID].Velocity; + l.EN_HEADLOSS = (float)dictLinks[l.ID].Headloss; + + } + }); + _viewnet.Nodes.ForEach(n => + { + if (dictNodes.ContainsKey(n.ID)) + { + n.EN_HEAD = (float)dictNodes[n.ID].Head; + n.EN_PRESSURE = (float)dictNodes[n.ID].Press; + n.EN_DEMAND = (float)dictNodes[n.ID].Demand; + + } + }); + + + + + + } + + private void 灞�閮ㄦ崯澶辫绠桾oolStripMenuItem_Click(object sender, EventArgs e) + { + var result = _network.Calcu(CalcuMode.MinorLoss); + } + private void 涓嬫父璺緞鍒嗘瀽ToolStripMenuItem_Click(object sender, EventArgs e) { if (_network == null) @@ -207,16 +297,48 @@ MessageBox.Show("璇峰厛鎵撳紑鏂囦欢"); return; } - if (map.selectedObjs.Count>0 && map.selectedObjs[0] is NodeViewModel node) + if (map.selectedObjs.Count > 0 && map.selectedObjs[0] is NodeViewModel node) { - var calcResult= _network.Calcu(CalcuMode.MinorLoss); - var Snode=_network.GetAllNodes().FirstOrDefault(n=>n.Id== node.ID); + var calcResult = _network.Calcu(CalcuMode.MinorLoss); + var Snode = _network.GetAllNodes().FirstOrDefault(n => n.Id == node.ID); var links = _network.AnalyzeDownstreamPath(Snode, calcResult); - map.SetSelectObj(links.Select(l=>l.Id).ToList()); + if (links == null || links.Count <= 0) return; + map.SetSelectObj(links.Select(l => l.Id).ToList()); } - - + + + } + private void 娌跨▼绾垫柇闈㈠垎鏋怲oolStripMenuItem_Click(object sender, EventArgs e) + { + if (_network == null) + { + MessageBox.Show("璇峰厛鎵撳紑鏂囦欢"); + return; + } + if (map.selectedObjs.Count > 0 && map.selectedObjs[0] is NodeViewModel node) + { + var calcResult = _network.Calcu(CalcuMode.MinorLoss); + var Snode = _network.GetAllNodes().FirstOrDefault(n => n.Id == node.ID); + var links = _network.AnalyzeDownstreamPath(Snode, calcResult); + if (links == null || links.Count <= 0) return; + + map.SetSelectObj(links.Select(l => l.Id).ToList()); + var result = _network.GetChartNodeByPathLinks(links, calcResult); + + } + + } + + private void iNPToolStripMenuItem_Click(object sender, EventArgs e) + { + //鎵撳紑鏂囦欢瀵硅瘽妗�,灏� _network.ToInpString();瀵煎嚭 + var sfd = new SaveFileDialog(); + sfd.Filter = "inp鏂囦欢|*.inp"; + if (sfd.ShowDialog() == DialogResult.OK) + { + File.WriteAllText(sfd.FileName, _network.ToInpString()); + } } } } -- Gitblit v1.9.3