cloudflight
2024-05-07 d750fc90db76b0c6aab2f99b987b7af84b831ce4
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)