From d750fc90db76b0c6aab2f99b987b7af84b831ce4 Mon Sep 17 00:00:00 2001 From: cloudflight <cloudflight@126.com> Date: 星期二, 07 五月 2024 22:09:59 +0800 Subject: [PATCH] 2024年5月7日 --- Hydraulic/Hydro.MapUI/Map/MapViewer.cs | 77 +++++++++++++++++++++++++++++++------- 1 files changed, 62 insertions(+), 15 deletions(-) diff --git a/Hydraulic/Hydro.MapUI/Map/MapViewer.cs b/Hydraulic/Hydro.MapUI/Map/MapViewer.cs index 42e1233..1ef0769 100644 --- a/Hydraulic/Hydro.MapUI/Map/MapViewer.cs +++ b/Hydraulic/Hydro.MapUI/Map/MapViewer.cs @@ -1074,6 +1074,10 @@ List<PointF3D> newPositons = selectedNodes.Select(n => n.Position3D).ToList(); List<PointF3D> oldPositons = newPositons.Select(n => new PointF3D(n.X - dx, n.Y - dy, n.Z - dz)).ToList(); MapObjectExtensions.AddCommand(selectedNodes, "Position3D", oldPositons, newPositons); + 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(); } @@ -1177,9 +1181,21 @@ } else { - 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); + if (mapOption.IsOrtho) + { + var wPos = GetZZWorldPoint(_select_junction1.Position3D, _MousePosition, new Vector3(1, 1, 0)); + //getPointAndHeight(e, _select_junction1, out p, out z); + p = new PointF(wPos.X, wPos.Y); + var l = AddLink(new PointF(e.X, e.Y), isdoubleClick, p, wPos.Z); + if (l.Count > 0) MapObjectExtensions.AddCommand(_Network, "Add", null, l); + } + else + { + 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); + } + } @@ -3313,9 +3329,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); PointF minPoint = new PointF(net.StartPoint.X, net.StartPoint.Y); Point controlLocation = this.PointToScreen(new Point(0, 0)); int offsetX = Cursor.Position.X - controlLocation.X; @@ -3323,19 +3343,46 @@ var position = new Point(offsetX, offsetY); net.BuildRelation(); - var basePoint = MapPointToWorldPoint(ScreenToMap(position, net.StartPoint.Elev), net.StartPoint.Elev); - net.Nodes.ForEach(obj => + //var basePoint = MapPointToWorldPoint(ScreenToMap(position, net.StartPoint.Elev), net.StartPoint.Elev); + var mPos = _MousePosition; + if (hoveredObjs.Count>0 && hoveredObjs[0] is NodeViewModel minNode) { - obj.X = obj.X + basePoint.X - minPoint.X; - obj.Y = obj.Y + basePoint.Y - minPoint.Y; - }); - 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); - MapObjectExtensions.AddCommand(_Network, "Add", null, list); - SetMapInvalidate(); + + var basePoint = minNode.Position; + net.Nodes.ForEach(obj => + { + obj.X = obj.X + basePoint.X - minPoint.X; + obj.Y = obj.Y + basePoint.Y - minPoint.Y; + }); + + 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); + + //list.Add(_Network.AddPipe(Snode, minNode)); + MapObjectExtensions.AddCommand(_Network, "Add", null, list); + SetMapInvalidate(); + } + else + { + var basePoint = MapPointToWorldPoint(_MousePosition, net.StartPoint.Elev); + net.Nodes.ForEach(obj => + { + obj.X = obj.X + basePoint.X - minPoint.X; + obj.Y = obj.Y + basePoint.Y - minPoint.Y; + }); + 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); + MapObjectExtensions.AddCommand(_Network, "Add", null, list); + SetMapInvalidate(); + } + + } } private void 澧為噺淇濆瓨ToolStripMenuItem_Click(object sender, EventArgs e) -- Gitblit v1.9.3