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