| | |
| | | BackColor = Color.Transparent; |
| | | |
| | | } |
| | | public void SetEditMode(bool isEditMode) |
| | | { |
| | | _IsEditMode= isEditMode; |
| | | } |
| | | private void MapViewer_Load(object sender, EventArgs e) |
| | | { |
| | | this.panel1.Visible = _showToolBar; |
| | |
| | | } |
| | | |
| | | //移动 |
| | | if (selectedObjs.Count >= 1) //&& selectedObjs[0].isNode()) |
| | | if (_IsEditMode && selectedObjs.Count >= 1) //&& selectedObjs[0].isNode()) |
| | | { |
| | | |
| | | List<NodeViewModel> nodes = selectedNodes; |
| | | foreach (NodeViewModel node in nodes) |
| | | { |
| | |
| | | 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(); |
| | | } |
| | |
| | | } |
| | | 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); |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | |
| | | if (!isMouseMoved) |
| | | { |
| | | 右键_Menu.Show(this, e.Location); |
| | | 转换为ToolStripMenuItem.Enabled = selectedNodes.Count > 0; //(selectedObjs.Count == 1); |
| | | |
| | | 转换为ToolStripMenuItem.Enabled = _IsEditMode && selectedNodes.Count > 0; //(selectedObjs.Count == 1); |
| | | 删除ToolStripMenuItem.Visible = _IsEditMode; |
| | | 删除ToolStripMenuItem1.Visible = _IsEditMode; |
| | | 删除ToolStripMenuItem.Enabled = selectedObjs.Count > 0; |
| | | 删除ToolStripMenuItem1.Enabled = selectedObjs.Count > 0; |
| | | 复制ToolStripMenuItem.Visible = _IsEditMode; |
| | | 复制ToolStripMenuItem1.Visible = _IsEditMode; |
| | | 粘贴ToolStripMenuItem.Visible = _IsEditMode; |
| | | 粘贴ToolStripMenuItem1.Visible = _IsEditMode; |
| | | 设置长度ToolStripMenuItem.Visible = _IsEditMode; |
| | | 设为关闭ToolStripMenuItem.Visible = _IsEditMode; |
| | | 设为立管点ToolStripMenuItem.Visible = _IsEditMode; |
| | | 对齐ToolStripMenuItem.Visible = _IsEditMode; |
| | | 对齐ToolStripMenuItem1.Visible = _IsEditMode; |
| | | } |
| | | |
| | | if (recordView) MapObjectExtensions.AddCommand(mapOption, "Map", mapOption0, mapOption); |
| | |
| | | |
| | | |
| | | } |
| | | if (e.KeyCode == Keys.Delete) |
| | | if (_IsEditMode && e.KeyCode == Keys.Delete) |
| | | { |
| | | DeleteChoosedObj(); |
| | | } |
| | |
| | | SetMapInvalidate(); |
| | | } |
| | | |
| | | if (e.KeyCode == Keys.C && e.Modifiers == Keys.Control) |
| | | if (_IsEditMode && e.KeyCode == Keys.C && e.Modifiers == Keys.Control) |
| | | { |
| | | 复制ToolStripMenuItem_Click(1, new EventArgs()); |
| | | } |
| | | if (e.KeyCode == Keys.V && e.Modifiers == Keys.Control) |
| | | if (_IsEditMode && e.KeyCode == Keys.V && e.Modifiers == Keys.Control) |
| | | { |
| | | _ClickStartPos = Cursor.Position; |
| | | 粘贴ToolStripMenuItem1_Click(1, new EventArgs()); |
| | | } |
| | | if (e.KeyCode == Keys.D1 && e.Modifiers == Keys.Control) |
| | | if (_IsEditMode && e.KeyCode == Keys.D1 && e.Modifiers == Keys.Control) |
| | | { |
| | | 南北对齐ToolStripMenuItem_Click(1, new EventArgs()); |
| | | |
| | | } |
| | | if (e.KeyCode == Keys.Oemtilde && e.Modifiers == Keys.Control) |
| | | if (_IsEditMode && e.KeyCode == Keys.Oemtilde && e.Modifiers == Keys.Control) |
| | | { |
| | | 东西对齐ToolStripMenuItem_Click(1, new EventArgs()); |
| | | } |
| | | if (e.KeyCode == Keys.D2 && e.Modifiers == Keys.Control) |
| | | if (_IsEditMode && e.KeyCode == Keys.D2 && e.Modifiers == Keys.Control) |
| | | { |
| | | 竖直对齐ToolStripMenuItem_Click(1, new EventArgs()); |
| | | } |
| | | if (e.KeyCode == Keys.D3 && e.Modifiers == Keys.Control) |
| | | if (_IsEditMode && e.KeyCode == Keys.D3 && e.Modifiers == Keys.Control) |
| | | { |
| | | 自动对齐ToolStripMenuItem_Click(1, new EventArgs()); |
| | | } |
| | |
| | | |
| | | private void MapViewer_KeyPress(object sender, KeyPressEventArgs e) |
| | | { |
| | | if (ctrlPressed && e.KeyChar == 'Z' - 64) |
| | | if (_IsEditMode && ctrlPressed && e.KeyChar == 'Z' - 64) |
| | | { |
| | | // 执行相应的操作 |
| | | buttonUndo_Click(sender, e); |
| | |
| | | // 防止默认操作 |
| | | e.Handled = true; |
| | | } |
| | | if (ctrlPressed && e.KeyChar == 'Y' - 64) |
| | | if (_IsEditMode && ctrlPressed && e.KeyChar == 'Y' - 64) |
| | | { |
| | | // 执行相应的操作 |
| | | buttonRedo_Click(sender, e); |
| | |
| | | } |
| | | private void MapViewer_PreKeyPress(object sender, PreviewKeyDownEventArgs e) |
| | | { |
| | | if (e.Control && e.KeyCode == Keys.Z) |
| | | if (_IsEditMode && e.Control && e.KeyCode == Keys.Z) |
| | | { |
| | | ctrlPressed = true; |
| | | // 防止默认操作 |
| | | e.IsInputKey = true; |
| | | |
| | | } |
| | | if (e.Control && e.KeyCode == Keys.Y) |
| | | if (_IsEditMode && e.Control && e.KeyCode == Keys.Y) |
| | | { |
| | | ctrlPressed = true; |
| | | // 防止默认操作 |
| | |
| | | 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; |
| | |
| | | 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) |
| | |
| | | form_EditFloors.Show(this); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | #endregion |
| | | |
| | | |
| | | #endregion |
| | | } |
| | | } |