From fab5d6e30b9a42a1f94524fca74ef227d2c963e4 Mon Sep 17 00:00:00 2001 From: cloudflight <cloudflight@126.com> Date: 星期六, 20 七月 2024 11:12:32 +0800 Subject: [PATCH] 1 --- Hydraulic/Hydro.MapUI/Map/MapViewer.cs | 572 ++++++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 465 insertions(+), 107 deletions(-) diff --git a/Hydraulic/Hydro.MapUI/Map/MapViewer.cs b/Hydraulic/Hydro.MapUI/Map/MapViewer.cs index 8536fd3..8aa6812 100644 --- a/Hydraulic/Hydro.MapUI/Map/MapViewer.cs +++ b/Hydraulic/Hydro.MapUI/Map/MapViewer.cs @@ -1,14 +1,16 @@ 锘�//using CloudWaterNetwork.Magnifier; -using DevExpress.XtraEditors; +//using DevExpress.XtraEditors; +using DevExpress.XtraEditors.Filtering; using Hydro.CommonBase; using Hydro.Core.Model; -using Hydro.Inp; +using Hydro.Core; //using ConfigApp; //using DevExpress.Diagram.Core.Layout; //using DevExpress.DirectX.NativeInterop.Direct2D; //using DevExpress.Utils.Extensions; //using dict_py_Inner; using Hydro.MapView; +using Hydro.MapView.Base; using Hydro.MapView.Common; using Newtonsoft.Json; //using ReflectionManager_NameSpace; @@ -18,21 +20,21 @@ using System.ComponentModel; using System.Data; using System.Data.Common; -using System.Diagnostics; +//using System.Diagnostics; using System.Drawing; using System.IO; using System.Linq; using System.Numerics; using System.Reflection; using System.Runtime.CompilerServices; -using System.Runtime.InteropServices.WindowsRuntime; -using System.Runtime.Remoting.Metadata; +//using System.Runtime.InteropServices.WindowsRuntime; +//using System.Runtime.Remoting.Metadata; using System.Security.Cryptography; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; -using System.Windows.Forms.DataVisualization.Charting; +//using System.Windows.Forms.DataVisualization.Charting; //using static Hydro.Core.ObjectEnum; using static Hydro.MapView.MapViewEnum; using static System.Net.Mime.MediaTypeNames; @@ -113,7 +115,9 @@ this.showToolBar = showToolBar; InitializeComponent(); - + //var propertyForm = new PropertyForm(); + //propertyForm.Dock = DockStyle.Right; + //this.Controls.Add(propertyForm); MapCenter = PointF.Empty; zoom = 1.0f; DoubleBuffered = true; @@ -122,7 +126,7 @@ //if (!showToolBar) this.panel1.Visible = false; } - public MapViewer() + public MapViewer() { this.showToolBar = false; @@ -130,17 +134,18 @@ MapCenter = PointF.Empty; zoom = 1.0f; - + SetStyle(ControlStyles.SupportsTransparentBackColor, true); BackColor = Color.Transparent; } public void SetEditMode(bool isEditMode) { - _IsEditMode= isEditMode; - } + _IsEditMode = isEditMode; + } private void MapViewer_Load(object sender, EventArgs e) { + GlobalObject.PropertyForm = this.propertyForm; this.panel1.Visible = _showToolBar; this.statusStrip1.Visible = _showStatusBar; @@ -168,10 +173,64 @@ cb_Link_Colour.SelectedIndex = 0; - map.Init(TC,new DrawDelegate[] { Draw, Draw, DrawBackGroud, DrawH },new MouseDelegate[] { mapMouseDown, mapMouseMove, mapMouseUp, mapMouseWheel }); + map.Init(TC, new DrawDelegate[] { Draw, Draw, DrawBackGroud, DrawH }, new MouseDelegate[] { mapMouseDown, mapMouseMove, mapMouseUp, mapMouseWheel }); - + TContainer TCCube = new TContainer(); + TCCube.template = new Template(); + TCCube.template.network = new MapViewNetWork(); + TCCube.template.network.Areas = new List<AreaViewModel>(); + Cube cb = new Cube(); + foreach (var item in cb.FacesVertices) + { + AreaViewModel area = new AreaViewModel(); + area.ID = item.Key.ToString(); + area.InnerNodes = new List<NodeViewModel>(); + //area.Name= item.Key.ToString(); + + //6涓潰璁剧疆涓嶄竴鏍风殑棰滆壊 + switch (item.Key) + { + case 1: + area.color = Color.Red; + area.Name = "鍙�"; + break; + case 2: + area.color = Color.SkyBlue; + area.Name = "宸�"; + break; + case 3: + area.color = Color.Green; + area.Name = "鍚�"; + break; + case 4: + area.color = Color.DarkBlue; + area.Name = "鍓�"; + break; + case 5: + area.color = Color.Purple; + area.Name = "涓�"; + break; + case 6: + area.color = Color.Orange; + area.Name = "涓�"; + break; + default: + area.color = Color.White; + break; + } + + foreach (var p in item.Value) + { + NodeViewModel node = new NodeViewModel(); + node.X = p.X; + node.Y = p.Y; + node.Elev = p.Z; + area.InnerNodes.Add(node); + } + TCCube.template.network.Areas.Add(area); + } + CubeView.Init(TCCube, new DrawDelegate[] { Draw, Draw, DrawBackGroud, DrawH }, new MouseDelegate[] { CubeViewMouseDown, CubeViewMouseMove, CubeViewMouseUp, mapMouseWheel }); } @@ -182,7 +241,7 @@ public bool LoadData(bool isDelCache = false) { - + if (_Template == null) return false; if (isDelCache || _Template.network == null) { @@ -259,7 +318,7 @@ bool reLoad = _Template == template; this._Template = template; this._ViewModel = viewMode; - + //if ( _Template?.Floors!=null) //{ @@ -302,7 +361,7 @@ SetMapInvalidate(); } } - + 鍒锋柊妤煎眰ToolStripMenuItem_Click(1, new EventArgs()); label_center.Text = $"center锛�({MapCenter.X.ToString("0.00")} 锛寋MapCenter.Y.ToString("0.00")}锛�"; label_zoom.Text = $"Zoom锛歿zoom.ToString("0.000")}"; @@ -384,8 +443,8 @@ #region 閲嶇粯鍑芥暟 - bool _needPaintAll - { + bool _needPaintAll + { get { return __needpaintall; @@ -395,7 +454,7 @@ __needpaintall = value; } } - + PointF[] getCurclePoints(int num) { @@ -412,20 +471,21 @@ return points; } - - - - + + + + private void timer_draw_Tick(object sender, EventArgs e) { _mouseHoverCheckFlag = true; - if (_timerDraw && map.Status==DrawingStatus.Ready) + if (_timerDraw && map.Status == DrawingStatus.Ready) { this.map.Invalidate(); + this.CubeView.Invalidate(); _timerDraw = false; } - + } protected override void OnResize(EventArgs e) @@ -441,13 +501,13 @@ #region 榧犳爣浜嬩欢 - + void mapMouseDown(MouseEventArgs e) { base.OnMouseDown(e); _ClickStartPos = new PointF(e.X, e.Y); - DragStartPos= ScreenToMap(new PointF(e.X, e.Y)); + DragStartPos = ScreenToMap(new PointF(e.X, e.Y)); mousePosition = _MousePosition = ScreenToMap(new PointF(e.X, e.Y)); if (e.Button == MouseButtons.Left && _isInsertingObject) { @@ -628,7 +688,7 @@ // Math.Abs((int)DragStartPos.Y - (int)MP.Y)); //DrawSelectionRect(selectionRect); needInvalidate = true; - + } else if (_isRotating) { @@ -662,7 +722,7 @@ // 閬嶅巻鎵�鏈夊璞�,鎵惧嚭鑼冨洿鍐呯殑瀵硅薄 PointF clickedPoint = new PointF(e.X, e.Y); //ScreenToMap(new PointF(e.X, e.Y)); var obj = GetObj_by_ScreenPoint(clickedPoint); - if (hoveredObjs.Count > 0 && hoveredObjs[0] == obj || hoveredObjs.Count==0 && obj==null) + if (hoveredObjs.Count > 0 && hoveredObjs[0] == obj || hoveredObjs.Count == 0 && obj == null) { //needInvalidate = false; } @@ -671,18 +731,18 @@ needInvalidate = true; hoveredObjs.ForEach(o => o.Hovered = false); hoveredObjs.Clear(); - if (obj!=null) + if (obj != null) { obj.Hovered = true; hoveredObjs.Add(obj); } - - + + } - + } - + if (needInvalidate) this.SetMapInvalidate(); @@ -881,7 +941,7 @@ MapObjectExtensions.AddCommand(_Network, "Add", null, list); - + _isInsertingObject = false; @@ -960,7 +1020,7 @@ var l = new List<IBaseViewModel>(); l.Add(_Network.AddPipe(_OperaNode, minNode)); if (l.Count > 0) MapObjectExtensions.AddCommand(_Network, "Add", null, l); - + _OperaNode = null; _NewNet.Clear(); } @@ -1035,7 +1095,7 @@ case MouseState.鏂板缓閲嶅鍣�: if (_select_junction1 == null) { - if (_mouseState==MouseState.鏂板绔嬬) + if (_mouseState == MouseState.鏂板绔嬬) { var m = ScreenToVMap(new PointF(e.X, e.Y)); z = m.Y; @@ -1047,19 +1107,19 @@ getPointAndHeight(e, out p, out z); Set_junction1(e); } - + } else { if (_mouseState == MouseState.鏂板绔嬬) { //闇�瑕佹妸榧犳爣浣嶇疆杞崲涓虹珛绠$殑浣嶇疆锛岃幏鍙栭紶鏍囦綅缃殑楂樼▼ - + var wPos = GetZZWorldPoint(_select_junction1.Position3D, _MousePosition, new Vector3(0, 0, 1)); //var m = ScreenToVMap(new PointF(e.X, e.Y)); //z = m.Y; p = new PointF(wPos.X, wPos.Y); - var l = AddLink(new PointF( e.X,e.Y), isdoubleClick, p, wPos.Z); + var l = AddLink(new PointF(e.X, e.Y), isdoubleClick, p, wPos.Z); if (l.Count > 0) MapObjectExtensions.AddCommand(_Network, "Add", null, l); } else @@ -1074,14 +1134,14 @@ } else { - getPointAndHeight(e, _select_junction1, out p, out z); - var l = AddLink(new PointF(e.X, e.Y), isdoubleClick, p,z); + getPointAndHeight(e, _select_junction1, out p, out z); + var l = AddLink(new PointF(e.X, e.Y), isdoubleClick, p, z); if (l.Count > 0) MapObjectExtensions.AddCommand(_Network, "Add", null, l); } - + } - + } break; } @@ -1349,11 +1409,11 @@ if (!isMouseMoved) { 鍙抽敭_Menu.Show(this, e.Location); - - 杞崲涓篢oolStripMenuItem.Enabled = selectedNodes.Count > 0; //(selectedObjs.Count == 1); + + 杞崲涓篢oolStripMenuItem.Enabled = selectedNodes.Count > 0; //(selectedObjs.Count == 1); 鍒犻櫎ToolStripMenuItem.Enabled = selectedObjs.Count > 0; 鍒犻櫎ToolStripMenuItem1.Enabled = selectedObjs.Count > 0; - + } if (recordView) MapObjectExtensions.AddCommand(mapOption, "Map", mapOption0, mapOption); @@ -1394,7 +1454,7 @@ IBaseViewModel GetObj_by_ScreenPoint(PointF clickedPoint, float DistLimit = 15f) { float minDist = float.MaxValue; - + int minIndex = -1; bool isJunction = true; IBaseViewModel obj = null; @@ -1443,9 +1503,9 @@ float minDist = float.MaxValue; int minIndex = -1; - + IBaseViewModel obj = null; - List < IBaseViewModel > objs = new List<IBaseViewModel>(); + List<IBaseViewModel> objs = new List<IBaseViewModel>(); for (int i = 0; i < _Nodes.Count; i++) { var node = _Nodes[i] as NodeViewModel; @@ -1474,7 +1534,7 @@ //float dist = Get_dist(clickedPoint, currentPoint); if (dist < minDist && dist <= DistLimit) { - + objs.Add(link); } @@ -1501,6 +1561,196 @@ private int _lastMouseX; private int _lastMouseY; #endregion + + + #region CubeView榧犳爣浜嬩欢 + void CubeViewMouseDown(MouseEventArgs e) + { + base.OnMouseDown(e); + + _ClickStartPos = new PointF(e.X, e.Y); + DragStartPos = ScreenToMap(new PointF(e.X, e.Y)); + mousePosition = _MousePosition = ScreenToMap(new PointF(e.X, e.Y)); + if (e.Button == MouseButtons.Left && _isInsertingObject) + { + + } + else if (e.Button == MouseButtons.Left && _mouseState == MouseState.鏃�) + { + + } + + else if (e.Button == MouseButtons.Left && _mouseState == MouseState.璁剧疆搴曞浘鑼冨洿) + { + + } + else if (e.Button == MouseButtons.Right) + { + RotaStartPos = new PointF(e.X, e.Y); + Rotation0 = Rotation; + 淇瑙掑害_start = RotationF; + _lastCursor = this.Cursor; + + Cursor = Cursors.Hand; + mapOption0 = mapOption.Copy(); + _isRotating = true; + } + + } + void CubeViewMouseMove(MouseEventArgs e) + { + //base.OnMouseMove(e); + bool needInvalidate = false; + _MousePosition = ScreenToMap(new PointF(e.X, e.Y)); + + + if (_isRotating) + { + mousePosition = _MousePosition; + bool is涓嬪崐灞忓箷 = RotaStartPos.Y >= this.map.Height / 2; + if (ModifierKeys != Keys.Alt) Rotation = Rotation0 + ((float)e.X - (float)RotaStartPos.X) * 180 * 2.5 / (float)this.map.Width * (is涓嬪崐灞忓箷 ? 1 : 1); + if (ModifierKeys != Keys.Shift) RotationF = 淇瑙掑害_start + ((float)e.Y - (float)RotaStartPos.Y) * 180 * 2.5 / (float)this.map.Height; + if (RotationF > 90) RotationF = 90; + if (RotationF < 0) RotationF = 0; + needInvalidate = true; + + } + + //else + /*鍒ゆ柇鏄惁瑙︾鍒板璞�*/ + if (_mouseHoverCheckFlag) + { + _mouseHoverCheckFlag = false; + // 閬嶅巻鎵�鏈夊璞�,鎵惧嚭鑼冨洿鍐呯殑瀵硅薄 + PointF clickedPoint = new PointF(e.X, e.Y); //ScreenToMap(new PointF(e.X, e.Y)); + var obj = GetObj_by_ScreenPoint(clickedPoint); + if (hoveredObjs.Count > 0 && hoveredObjs[0] == obj || hoveredObjs.Count == 0 && obj == null) + { + //needInvalidate = false; + } + else + { + needInvalidate = true; + hoveredObjs.ForEach(o => o.Hovered = false); + hoveredObjs.Clear(); + if (obj != null) + { + obj.Hovered = true; + hoveredObjs.Add(obj); + } + + + } + + + } + + + + if (needInvalidate) this.SetMapInvalidate(); + label_mouse.Text = $"X锛歿e.X.ToString("0")} Y锛歿e.Y.ToString("0")} [Map]X锛歿_MousePosition.X.ToString("0.00")} Y锛歿_MousePosition.Y.ToString("0.00")}"; + _lastMouseX = e.X; + _lastMouseY = e.Y; + } + void CubeViewMouseUp(MouseEventArgs e) + { + //BookMark 锛氶紶鏍囨姮璧蜂簨浠� + base.OnMouseUp(e); + bool isMouseMoved = Get_dist(_ClickStartPos, new PointF(e.X, e.Y)) > 10; + bool isdoubleClick = (DateTime.Now - _lastMouseUp).TotalMilliseconds <= doubleClick_Delay; + _lastMouseUp = DateTime.Now; + + if /*鐐归��*/(!isMouseMoved && _mouseState == MouseState.鏃� && e.Button == MouseButtons.Left && ModifierKeys == Keys.None) + { + _isDragging = false; + + // 閬嶅巻鎵�鏈夌偣锛屾壘鍑烘渶杩戠殑鐐� + PointF clickedPoint = new PointF(e.X, e.Y); //ScreenToMap(new PointF(e.X, e.Y)); + var obj = GetObj_by_ScreenPoint(clickedPoint); + bool isJunction = obj is NodeViewModel; + + if (obj != null) + { + selectedObjs.ForEach(o => o.Selected = false); + selectedObjs.Clear(); + obj.Selected = true; + selectedObjs.Add(obj); + if (GlobalObject.PropertyForm != null) + GlobalObject.PropertyForm.SetObjs(selectedObjs); + _OperaNode = null; + + + SetMapInvalidate(); + mousePosition = new PointF(0, 0); + + + } + else + { + //GlobalObject.LockSelect + + selectedObjs.ForEach(o => o.Selected = false); + selectedObjs.Clear(); + if (GlobalObject.PropertyForm != null) + GlobalObject.PropertyForm.SetObjs(selectedObjs); + + _OperaNode = null; + + SetMapInvalidate(); + } + return; + + + } + + if (/*鍙犲姞鐐归��*/!isMouseMoved && _mouseState == MouseState.鏃� && e.Button == MouseButtons.Left && ModifierKeys == Keys.Control) + { + _isDragging = false; + + // 閬嶅巻鎵�鏈夌偣锛屾壘鍑烘渶杩戠殑鐐� + PointF clickedPoint = new PointF(e.X, e.Y); //ScreenToMap(new PointF(e.X, e.Y)); + var obj = GetObj_by_ScreenPoint(clickedPoint); + bool isJunction = obj is NodeViewModel; + if (obj != null) + { + if (selectedObjs.Contains(obj)) + { + obj.Selected = false; + selectedObjs.Remove(obj); + if (GlobalObject.PropertyForm != null) + GlobalObject.PropertyForm.SetObjs(selectedObjs); + + SetMapInvalidate(); + mousePosition = new PointF(0, 0); + } + else + { + obj.Selected = true; + selectedObjs.Add(obj); + if (GlobalObject.PropertyForm != null) + GlobalObject.PropertyForm.SetObjs(selectedObjs); + SetMapInvalidate(); + mousePosition = new PointF(0, 0); + } + } + return; + } + + if (e.Button == MouseButtons.Right) + { + if (_isRotating) + { + _isRotating = false; + this.Cursor = _lastCursor; + + + if (recordView) MapObjectExtensions.AddCommand(mapOption, "Map", mapOption0, mapOption); + mousePosition = new PointF(0, 0); + } + } + } + #endregion + #endregion 涓�銆佸叏灞� @@ -1580,10 +1830,10 @@ } private void 榛樿瑙嗚ToolStripMenuItem_Click(object sender, EventArgs e) { - + mapOption0 = mapOption.Copy(); - + InitCenter(); RotationF = 45; Rotation = -45; @@ -1706,8 +1956,8 @@ { _Template = new Template(); _Template.network = new MapViewNetWork(); - - + + //_Template.network.use_old = false; // 鑾峰彇閫変腑鏂囦欢鐨勬枃浠惰矾寰� string filePath = openFileDialog.FileName; @@ -1747,7 +1997,7 @@ { if (_filePath == null) return; FileInfo fi = new FileInfo(_filePath); - Process.Start("explorer.exe", $"/select,\"{_filePath}\""); + System.Diagnostics.Process.Start("explorer.exe", $"/select,\"{_filePath}\""); //System.Diagnostics.Process.Start("explorer.exe", fi.Directory.FullName); } private void EPA涓墦寮�ToolStripMenuItem_Click(object sender, EventArgs e) @@ -1755,7 +2005,7 @@ if (_filePath == null) return; - Process.Start(@"epanetH\Epanet2wH.exe", _filePath); + System.Diagnostics.Process.Start(@"epanetH\Epanet2wH.exe", _filePath); } private void 淇濆瓨ToolStripMenuItem_Click(object sender, EventArgs e) { @@ -1797,7 +2047,7 @@ #region 缁樺浘宸ュ叿 - + public void toolStripButton_鏂板缓鑺傜偣_Click(object sender, EventArgs e) { _mouseState = MouseState.鏂板鑺傜偣; @@ -1864,7 +2114,7 @@ _mouseState = MouseState.鏂板绠$嚎; Cursor = Cursors.Cross; } - public void toolStripButton_鏂板缓绔嬬_Click(object sender,EventArgs e) + public void toolStripButton_鏂板缓绔嬬_Click(object sender, EventArgs e) { _mouseState = MouseState.鏂板绔嬬; Cursor = Cursors.Cross; @@ -1887,7 +2137,7 @@ l.Add(_select_junction2); } - if (_mouseState == MouseState.鏂板绠$嚎 || _mouseState==MouseState.鏂板绔嬬) + if (_mouseState == MouseState.鏂板绠$嚎 || _mouseState == MouseState.鏂板绔嬬) l.Add(_Network.AddPipe(_select_junction1, _select_junction2)); else if (_mouseState == MouseState.鏂板缓闃�闂�) l.Add(_Network.AddValve(_select_junction1, _select_junction2)); @@ -1950,7 +2200,7 @@ } bool Buzylock = false; - private void MapViewer_KeyDown(object sender, KeyEventArgs e) + public void MapViewer_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Escape) @@ -2399,7 +2649,7 @@ private void 缂╂斁ToolStripMenuItem_Click(object sender, EventArgs e) { - + var objs = GlobalObject.PropertyForm.selectionSet.selectedObjects; var list = objs.FindAll(o => o is NodeViewModel); //GlobalObject.PropertyForm.listBox1.SelectedItems; if (list.Count <= 0) return; @@ -2475,36 +2725,45 @@ private void btn_鍒濆垎閰峗Click(object sender, EventArgs e) { + //string result = null; + //if ((result=_Template.network.CheckValidate())!=null) + //{ + // MessageBox.Show(result); + // return; + //} List<WaterEquivalentSettings> settings = new List<WaterEquivalentSettings>(); - settings.Add(new WaterEquivalentSettings() + settings.Add(new WaterEquivalentSettings() { - waterEquivalents=new WaterEquivalentTemplate() - { - ID="1", - Name="1", - WaterEquivalentCollection=new WaterEquivalentCollection() + waterEquivalents = new WaterEquivalentTemplate() + { + ID = "1", + Name = "1", + WaterEquivalentCollection = new WaterEquivalentCollection() { new WaterEquivalent() { ID=1008, MinRatedFlow=0.48f, RatedFlow=0.72f, + Count=1, }, new WaterEquivalent() { ID=1009, MinRatedFlow=0.88f, RatedFlow=0.96f, + Count=2, }, new WaterEquivalent() { ID=1010, MinRatedFlow=1.08f, RatedFlow=1.08f, + Count=3, } } }, - Meters=new List<string>() + Meters = new List<string>() { //鎸変互涓嬭寰嬬敓鎴愭暟缁勫埌M10锛�"M1","M2" @@ -2527,18 +2786,21 @@ ID=2008, MinRatedFlow=0.48f, RatedFlow=0.48f, + Count=1, }, new WaterEquivalent() { ID=2009, MinRatedFlow=0.12f, RatedFlow=0.12f, + Count=5, }, new WaterEquivalent() { ID=2010, MinRatedFlow=0.16f, RatedFlow=0.18f, + Count=6, } } }, @@ -2549,15 +2811,111 @@ "M31","M32","M33","M34","M35","M36","M37","M38","M39","M40","M41","M42","M43","M44","M45","M46","M47","M48","M49","M50","M51","M52","M53","M54","M55","M56","M57","M58","M59","M60","M61","M62","M63","M64","M65","M66","M67","M68","M69","M70","M71","M72","M73","M74","M75","M76","M77","M78","M79","M80" }, }); + var head = _Network.reservoirs.FirstOrDefault().Head; + _Network.WaterDistribution(_Template.FullPath, GlobalPath.configPath + "config_waterDistri.wdb", settings, 40, head); - _Network.WaterDistribution(_Template.FullPath, GlobalPath.configPath + "config_waterDistri.wdb",settings,40); + } + private void btn_鎷撴墤妫�鏌Click(object sender, EventArgs e) + { + Dictionary<string, List<string>> result = _Template.network.CheckValidate(); + if (result.Count > 0) + { + //ListBox listBox2 = new ListBox(); + //listBox2.Dock = DockStyle.Fill; + ////listBox2鐨刬tem涓轰粈涔堟樉绀轰笉鍑烘潵锛� + + //listBox2.SelectedIndexChanged += (s, e) => + //{ + // if (listBox2.SelectedIndex >= 0) + // { + // List<IBaseViewModel> Objs = new List<IBaseViewModel>(); + // Objs.AddRange(_Nodes.Select(n=>(NodeViewModel)n)); + // Objs.AddRange(_Links.Select(l => (LinkViewModel)l)); + // var obj = Objs.Find(o => o.ID == listBox2.SelectedItem.ToString()); + // if (obj != null) + // { + // obj.Selected = true; + // selectedObjs.Add((NodeViewModel)obj); + + // SetMapInvalidate(); + // } + + // } + //}; + ListBox listBox1 = new ListBox(); + listBox1.Dock = DockStyle.Fill; + listBox1.Width = 200; + listBox1.Height = 400; + listBox1.Items.AddRange(result.Keys.ToArray()); + listBox1.SelectedIndexChanged += (s, e) => + { + //listBox2.Items.Clear(); + if (listBox1.SelectedIndex >= 0) + { + var arr = result[listBox1.SelectedItem.ToString()].ToHashSet(); + + List<IBaseViewModel> Objs = new List<IBaseViewModel>(); + Objs.AddRange(_Nodes.Select(n => (NodeViewModel)n)); + Objs.AddRange(_Links.Select(l => (LinkViewModel)l)); + var nodes = _Nodes.FindAll(o => arr.Contains(o.ID)); + var links = _Links.FindAll(o => arr.Contains(o.ID)); + //listBox2.Items.AddRange(result[listBox1.SelectedItem.ToString()].ToArray()); + selectedObjs.ForEach(obj => obj.Selected = false); + selectedObjs.Clear(); + nodes.ForEach(obj => + { + obj.Selected = true; + selectedObjs.Add((NodeViewModel)obj); + }); + links.ForEach(obj => + { + obj.Selected = true; + selectedObjs.Add((LinkViewModel)obj); + }); + if (GlobalObject.PropertyForm != null) + GlobalObject.PropertyForm.SetObjs(selectedObjs); + SetMapInvalidate(); + } + }; + + + Form ResultForm = new Form(); + ResultForm.Text = "鎷撴墤妫�鏌ョ粨鏋�"; + ResultForm.Width = 300; + ResultForm.Height = 400; + ResultForm.StartPosition = FormStartPosition.CenterScreen; + ResultForm.Controls.Add(listBox1); + ResultForm.MinimizeBox = false; + ResultForm.MaximizeBox = false; + //ResultForm.Controls.Add(listBox2); + //listBox2.Invalidate(); + ResultForm.Show(); + + //鏂板缓涓�涓獥鍙o紝鏄剧ず妫�鏌ョ粨鏋� + //CheckForm checkForm = new CheckForm(); + //checkForm.Show(); + } + else + { + MessageBox.Show("鎷撴墤妫�鏌ラ�氳繃"); + } + //if (!string.IsNullOrEmpty(result)) + //{ + // MessageBox.Show(result); + // return; + //} + } public void toolStripButton_璁$畻_Click(object sender, EventArgs e) { - //LoadData(); - _Network.Calc(_Template.FullPath, GlobalPath.configPath+ "config_calc.wdb"); + if (_Template == null) + { + MessageBox.Show("璇峰厛鎵撳紑鏂囦欢"); + return; + } + _Network.Calc(_Template.FullPath, GlobalPath.configPath + "config_calc.wdb"); } public void 鍏抽榾鎼滅储ToolStripMenuItem_Click(object sender, EventArgs e) @@ -2833,7 +3191,7 @@ // } //} - private void TraversePipeNetworkALL(LinkViewModel startLink, HashSet<NodeViewModel> visitedNodes = null,int direction=0) + private void TraversePipeNetworkALL(LinkViewModel startLink, HashSet<NodeViewModel> visitedNodes = null, int direction = 0) { Queue<LinkViewModel> queue = new Queue<LinkViewModel>(); @@ -3330,7 +3688,7 @@ { var objs = selectedObjs.FindAll(o => o is LinkViewModel).Select(o => o as LinkViewModel).ToList(); - if (objs.Count == 0) selectedObjs.FindAll(o => o is NodeViewModel).Select(o => o as NodeViewModel).ToList().ForEach(o=>objs.AddRange(o.Links.Select(l=>l as LinkViewModel).ToList())); + if (objs.Count == 0) selectedObjs.FindAll(o => o is NodeViewModel).Select(o => o as NodeViewModel).ToList().ForEach(o => objs.AddRange(o.Links.Select(l => l as LinkViewModel).ToList())); //objs鍘绘帀閲嶅鐨勫厓绱� objs = objs.Distinct().ToList(); var visitedNodes = new HashSet<NodeViewModel>(); @@ -3347,21 +3705,21 @@ { var objs = selectedObjs.FindAll(o => o is LinkViewModel).Select(o => o as LinkViewModel).ToList(); - if (objs.Count == 0) selectedObjs.FindAll(o => o is NodeViewModel).Select(o => o as NodeViewModel).ToList().ForEach(o => + if (objs.Count == 0) selectedObjs.FindAll(o => o is NodeViewModel).Select(o => o as NodeViewModel).ToList().ForEach(o => { - objs.AddRange(o.Links.Select(oo => oo as LinkViewModel).ToList().FindAll(oo=>oo.StartNode==o?oo.EN_FLOW>0:oo.EN_FLOW<0)); + objs.AddRange(o.Links.Select(oo => oo as LinkViewModel).ToList().FindAll(oo => oo.StartNode == o ? oo.EN_FLOW > 0 : oo.EN_FLOW < 0)); }); //objs鍘绘帀閲嶅鐨勫厓绱� objs = objs.Distinct().ToList(); var visitedNodes = new HashSet<NodeViewModel>(); - objs.ForEach(o => TraversePipeNetworkALL(o, visitedNodes,1)); + objs.ForEach(o => TraversePipeNetworkALL(o, visitedNodes, 1)); this.SetMapInvalidate(); } } public void 澶嶅埗ToolStripMenuItem_Click(object sender, EventArgs e) { - if(hoveredObjs.Count<=0 || !(hoveredObjs[0] is NodeViewModel)) + if (hoveredObjs.Count <= 0 || !(hoveredObjs[0] is NodeViewModel)) { MessageBox.Show("璇峰皢榧犳爣鎮仠鍦ㄤ竴涓妭鐐瑰璞′笂,浣滀负鍩哄噯鐐�"); return; @@ -3371,7 +3729,7 @@ MessageBox.Show("璇烽�夋嫨瑕佸鍒剁殑瀵硅薄"); return; } - + _OperaNode = hoveredObjs[0] as NodeViewModel; MapViewNetWork net = new MapViewNetWork(); @@ -3396,13 +3754,13 @@ public void 绮樿创ToolStripMenuItem1_Click(object sender, EventArgs e) { { - + var net = new MapViewNetWork(); string json = Clipboard.GetText(); net.ReadFromJson(json); if (net.StartPoint == null) return; string SID = net.StartPoint.ID; - net.StartPoint=net.Nodes.Find(n => n.ID == SID); + net.StartPoint = net.Nodes.Find(n => n.ID == SID); PointF3D minPoint = net.StartPoint.Position3D;// new PointF(net.StartPoint.X, net.StartPoint.Y); Point controlLocation = this.PointToScreen(new Point(0, 0)); int offsetX = Cursor.Position.X - controlLocation.X; @@ -3412,9 +3770,9 @@ net.BuildRelation(); //var basePoint = MapPointToWorldPoint(ScreenToMap(position, net.StartPoint.Elev), net.StartPoint.Elev); var mPos = _MousePosition; - if (hoveredObjs.Count>0 && hoveredObjs[0] is NodeViewModel minNode) + if (hoveredObjs.Count > 0 && hoveredObjs[0] is NodeViewModel minNode) { - + var basePoint = minNode.Position3D; net.Nodes.ForEach(obj => { @@ -3422,12 +3780,12 @@ obj.Y = obj.Y + basePoint.Y - minPoint.Y; obj.Elev = obj.Elev + basePoint.Z - minPoint.Z; }); - + selectedObjs.ForEach(o => o.Selected = false); selectedObjs.Clear(); selectedObjs.AddRange(net.Nodes.Select(n => (NodeViewModel)n)); selectedObjs.AddRange(net.Links.ViewLinks); - var list = _Network.Add(net,null,false,minNode); + var list = _Network.Add(net, null, false, minNode); net.BuildRelation(); //list.Add(_Network.AddPipe(Snode, minNode)); MapObjectExtensions.AddCommand(_Network, "Add", null, list); @@ -3451,7 +3809,7 @@ SetMapInvalidate(); } - + } } private void 澧為噺淇濆瓨ToolStripMenuItem_Click(object sender, EventArgs e) @@ -3478,7 +3836,7 @@ } private void 璁句负鍏抽棴ToolStripMenuItem_Click(object sender, EventArgs e) { - selectedObjs.ForEach(obj => { if (obj is LinkViewModel link) link.Status =Hydro.Core.ObjectEnum. StatusType.CLOSED; }); + selectedObjs.ForEach(obj => { if (obj is LinkViewModel link) link.Status = Hydro.Core.ObjectEnum.StatusType.CLOSED; }); SetMapInvalidate(); } private void 鏄剧ず鍏ㄩ儴妤煎眰ToolStripMenuItem_Click(object sender, EventArgs e) @@ -3658,13 +4016,13 @@ { if (_filePath == null) return; FileInfo fi = new FileInfo(_filePath); - Process.Start("explorer.exe", $"/select,\"{_filePath}\""); + System.Diagnostics.Process.Start("explorer.exe", $"/select,\"{_filePath}\""); } private void label_file_Click(object sender, EventArgs e) { if (_filePath == null) return; FileInfo fi = new FileInfo(_filePath); - Process.Start("explorer.exe", $"/select,\"{_filePath}\""); + System.Diagnostics.Process.Start("explorer.exe", $"/select,\"{_filePath}\""); } private void 璁句负绔嬬鐐筎oolStripMenuItem_Click(object sender, EventArgs e) { @@ -3792,11 +4150,11 @@ string tagstring = i.ToString() + "妤�"; if (tags.Contains(tagstring)) { - var item=ToolStripMenuItem_Floor.DropDownItems.Add(i.ToString() + "妤�"); + var item = ToolStripMenuItem_Floor.DropDownItems.Add(i.ToString() + "妤�"); item.Click += (oo, ee) => { - - + + mapobjects.ForEach(o => { if (o.Tags.Contains(tagstring)) @@ -3835,17 +4193,17 @@ { _isShowDirection = !_isShowDirection; } - bool _isShowDirection=false; + bool _isShowDirection = false; private void 棰滆壊鍒嗙骇绠$悊ToolStripMenuItem_Click(object sender, EventArgs e) { - Form_Colour form_Colour = new Form_Colour(_Template.Colours,_Template); + Form_Colour form_Colour = new Form_Colour(_Template.Colours, _Template); form_Colour.Show(this); } - - private bool __needpaintall=false; - - + private bool __needpaintall = false; + + + private void cb_Link_Colour_SelectedIndexChanged(object sender, EventArgs e) { if (_Template == null) return; @@ -3856,9 +4214,9 @@ colour.Items = colours; LinkColour = colour; this.SetMapInvalidate(); - - - + + + } private void cb_Node_Colour_SelectedIndexChanged(object sender, EventArgs e) { @@ -3870,9 +4228,9 @@ colour.Items = colours; NodeColour = colour; this.SetMapInvalidate(); - - - + + + } private void label_ZZ_Click(object sender, EventArgs e) @@ -3883,7 +4241,7 @@ private void 妤煎眰绠$悊ToolStripMenuItem_Click(object sender, EventArgs e) { - if (_Template.Regions==null) + if (_Template.Regions == null) { _Template.Regions = new List<TRegion>(); } @@ -3891,9 +4249,9 @@ form_EditFloors.Show(this); } - - + + #endregion } } \ No newline at end of file -- Gitblit v1.9.3