| | |
| | | using Newtonsoft.Json; |
| | | using Microsoft.VisualBasic.Devices; |
| | | using Newtonsoft.Json; |
| | | using System; |
| | | using System.Collections; |
| | | using System.Collections.Generic; |
| | |
| | | { |
| | | IsEditMode = isEditMode; |
| | | } |
| | | private void MapViewer_Load(object sender, EventArgs e) |
| | | public void MapViewer_Load(object sender, EventArgs e) |
| | | { |
| | | //GlobalObject.PropertyForm = this.propertyForm; |
| | | |
| | | int i = 0; |
| | | //遍历ColourType |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | this.TC = TC; |
| | | this.DrawNet = Draw; |
| | |
| | | this.Inited = true; |
| | | this.Status = DrawingStatus.Ready; |
| | | |
| | | SetDefaultView(); |
| | | //TContainer TCCube = new TContainer(); |
| | | //TCCube.settings = new Settings(); |
| | | //TCCube.settings.network = new MapViewNetWork(); |
| | | //TCCube.settings.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.Z = p.Z; |
| | | // area.InnerNodes.Add(node); |
| | | // } |
| | | // TCCube.settings.network.Areas.Add(area); |
| | | //} |
| | | |
| | | SetDefaultView(); |
| | | } |
| | | |
| | | #endregion |
| | |
| | | |
| | | #region 对外开放,全局控制方法 |
| | | |
| | | private bool LoadData(bool isDelCache = false) |
| | | public bool LoadData(bool isDelCache = false) |
| | | { |
| | | |
| | | if (_Template == null) return false; |
| | |
| | | } |
| | | |
| | | SuspendLayout(); |
| | | |
| | | |
| | | |
| | | |
| | | SetStartEndPoint(_Template.Node1, _Template.Node2); |
| | | |
| | |
| | | |
| | | } |
| | | |
| | | private void InitCenter() |
| | | public void InitCenter() |
| | | { |
| | | //MapCenter |
| | | var p = new PointF3D(0, 0, 0); |
| | |
| | | |
| | | |
| | | |
| | | private void timer_draw_Tick(object sender, EventArgs e) |
| | | public void timer_draw_Tick(object sender, EventArgs e) |
| | | { |
| | | _mouseHoverCheckFlag = true; |
| | | if (_timerDraw && this.Status == DrawingStatus.Ready) |
| | |
| | | } |
| | | |
| | | } |
| | | private bool IsPointInPolygon(PointF point, List<PointF> polygon) |
| | | public bool IsPointInPolygon(PointF point, List<PointF> polygon) |
| | | { |
| | | int count = polygon.Count; |
| | | bool inside = false; |
| | |
| | | RotationFChanged?.Invoke(this, RotationF.ToString("0")); |
| | | } |
| | | } |
| | | private void getPointAndHeight(MouseEventArgs e, out PointF p, out float z) |
| | | public void getPointAndHeight(MouseEventArgs e, out PointF p, out float z) |
| | | { |
| | | z = 0; |
| | | if (RotationF != 0) |
| | |
| | | p = new PointF(m.X, 0); |
| | | } |
| | | } |
| | | private void getPointAndHeight(MouseEventArgs e, NodeViewModel j, out PointF p, out float z) |
| | | public void getPointAndHeight(MouseEventArgs e, NodeViewModel j, out PointF p, out float z) |
| | | { |
| | | z = j.Z; |
| | | if (RotationF != 0) |
| | |
| | | SetMapInvalidate(); |
| | | } |
| | | |
| | | private int _lastMouseX; |
| | | private int _lastMouseY; |
| | | public int _lastMouseX; |
| | | public int _lastMouseY; |
| | | #endregion |
| | | |
| | | |
| | |
| | | // 显示点属性 |
| | | |
| | | double 俯视角度_bak = 45; |
| | | private void tool视角_ButtonClick(object sender, EventArgs e) |
| | | public void tool视角_ButtonClick(object sender, EventArgs e) |
| | | { |
| | | mapOption0 = mapOption.Copy(); |
| | | if (RotationF == 90) |
| | |
| | | SetMapInvalidate(); |
| | | } |
| | | |
| | | private void tool设置俯视角度_Click(object sender, EventArgs e) |
| | | public void tool设置俯视角度_Click(object sender, EventArgs e) |
| | | { |
| | | mapOption0 = mapOption.Copy(); |
| | | double jiaodu = 45; |
| | |
| | | if (recordView) MapObjectExtensions.AddCommand(mapOption, "Map", mapOption0, mapOption); |
| | | SetMapInvalidate(); |
| | | } |
| | | private void 正视图ToolStripMenuItem_Click(object sender, EventArgs e) |
| | | public void 正视图ToolStripMenuItem_Click(object sender, EventArgs e) |
| | | { |
| | | mapOption0 = mapOption.Copy(); |
| | | RotationF = 0; |
| | |
| | | |
| | | SetMapInvalidate(); |
| | | } |
| | | private void 俯视图ToolStripMenuItem_Click(object sender, EventArgs e) |
| | | public void 俯视图ToolStripMenuItem_Click(object sender, EventArgs e) |
| | | { |
| | | mapOption0 = mapOption.Copy(); |
| | | RotationF = 90; |
| | |
| | | |
| | | SetMapInvalidate(); |
| | | } |
| | | private void 默认视角ToolStripMenuItem_Click(object sender, EventArgs e) |
| | | public void 默认视角ToolStripMenuItem_Click(object sender, EventArgs e) |
| | | { |
| | | |
| | | |
| | |
| | | |
| | | SetMapInvalidate(); |
| | | } |
| | | private void 设为隐藏ToolStripMenuItem_Click(object sender, EventArgs e) |
| | | public void 设为隐藏ToolStripMenuItem_Click(object sender, EventArgs e) |
| | | { |
| | | selectedObjs.ForEach(v => |
| | | { |
| | |
| | | |
| | | this.SetMapInvalidate(); |
| | | } |
| | | private void 设置长度ToolStripMenuItem_Click(object sender, EventArgs e) |
| | | public void 设置长度ToolStripMenuItem_Click(object sender, EventArgs e) |
| | | { |
| | | double length = 0; |
| | | DialogResult result; |
| | |
| | | //Console.WriteLine("移动后点 B 的坐标为 ({0}, {1}, {2})", x2, y2, z2); |
| | | } |
| | | } |
| | | private void 全部显示ToolStripMenuItem_Click(object sender, EventArgs e) |
| | | public void 全部显示ToolStripMenuItem_Click(object sender, EventArgs e) |
| | | { |
| | | _Nodes.Select(n => (NodeViewModel)n).ToList().ForEach(v => |
| | | { |
| | |
| | | } |
| | | #endregion |
| | | |
| | | #region 文件工具 |
| | | public void tool打开_ButtonClick(object sender, EventArgs e) |
| | | { |
| | | |
| | | // 创建打开文件对话框 |
| | | OpenFileDialog openFileDialog = new OpenFileDialog(); |
| | | openFileDialog.Filter = "INP Files (*.inp)|*.inp|All Files (*.*)|*.*"; |
| | | |
| | | if (openFileDialog.ShowDialog() == DialogResult.OK) |
| | | { |
| | | |
| | | _Template = new Settings(); |
| | | _network = new NetworkViewModel(); |
| | | //_Template.network.use_old = false; |
| | | // 获取选中文件的文件路径 |
| | | string filePath = openFileDialog.FileName; |
| | | { |
| | | // 读取文件内容 |
| | | _network.BuildFromInp(filePath); |
| | | _Template.filePath = filePath; |
| | | //_filePath = filePath; |
| | | SetData(_network, _Template); |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | private void toolStripButton_save_Click(object sender, EventArgs e) |
| | | { |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | | private void 另存ToolStripMenuItem_Click(object sender, EventArgs e) |
| | | { |
| | | |
| | | } |
| | | |
| | | private void 导出形状ToolStripMenuItem_Click(object sender, EventArgs e) |
| | | { |
| | | |
| | | } |
| | | #endregion |
| | | |
| | | #region 绘图工具 |
| | | |
| | |
| | | } |
| | | |
| | | |
| | | private List<IBaseViewModel> AddLink(PointF e, bool isdoubleClick, PointF p, float z) |
| | | public List<IBaseViewModel> AddLink(PointF e, bool isdoubleClick, PointF p, float z) |
| | | { |
| | | List<IBaseViewModel> l = new List<IBaseViewModel>(); |
| | | var node = GetObj_by_ScreenPoint(e); |
| | |
| | | return l; |
| | | } |
| | | |
| | | private void Set_junction1(MouseEventArgs e) |
| | | public void Set_junction1(MouseEventArgs e) |
| | | { |
| | | var node = GetObj_by_ScreenPoint(new PointF(e.X, e.Y)); |
| | | |
| | |
| | | |
| | | |
| | | |
| | | private void MapViewer_KeyPress(object sender, KeyPressEventArgs e) |
| | | public void MapViewer_KeyPress(object sender, KeyPressEventArgs e) |
| | | { |
| | | if (IsEditMode && ctrlPressed && e.KeyChar == 'Z' - 64) |
| | | { |
| | |
| | | e.Handled = true; |
| | | } |
| | | } |
| | | private void MapViewer_PreKeyPress(object sender, PreviewKeyDownEventArgs e) |
| | | public void MapViewer_PreKeyPress(object sender, PreviewKeyDownEventArgs e) |
| | | { |
| | | if (IsEditMode && e.Control && e.KeyCode == Keys.Z) |
| | | { |
| | |
| | | #region 右键菜单 |
| | | |
| | | |
| | | private void 转换ToolStripMenuItem_Click(object sender, EventArgs e) |
| | | public void 转换ToolStripMenuItem_Click(object sender, EventArgs e) |
| | | { |
| | | var nodes = selectedNodes; |
| | | foreach (var obj in nodes) |
| | |
| | | DeleteChoosedObj(); |
| | | } |
| | | |
| | | private void DeleteChoosedObj() |
| | | public void DeleteChoosedObj() |
| | | { |
| | | var list = Network.Remove(selectedObjs); |
| | | MapObjectExtensions.AddCommand(Network, "Remove", null, list); |
| | |
| | | |
| | | |
| | | |
| | | private void toolStripComboBox_expandRepeater_ButtonClick(object sender, EventArgs e) |
| | | public void toolStripComboBox_expandRepeater_ButtonClick(object sender, EventArgs e) |
| | | { |
| | | IsEditMode = !IsEditMode; |
| | | //toolStripComboBox_浏览模式.Text = isEditMode ? "编辑模式" : "浏览模式"; |
| | | //LoadData(true); |
| | | } |
| | | |
| | | private void 浏览模式ToolStripMenuItem_Click(object sender, EventArgs e) |
| | | public void 浏览模式ToolStripMenuItem_Click(object sender, EventArgs e) |
| | | { |
| | | var obj = sender as ToolStripItem; |
| | | IsEditMode = obj.Text == "编辑模式"; |
| | |
| | | |
| | | |
| | | |
| | | private void btn_拓扑检查_Click(object sender, EventArgs e) |
| | | public void btn_拓扑检查_Click(object sender, EventArgs e) |
| | | { |
| | | Dictionary<string, List<string>> result = _network.CheckValidate(); |
| | | if (result.Count > 0) |
| | |
| | | List<LinkViewModel> LinksToFindSource = null; |
| | | Dictionary<LinkViewModel, List<IBaseViewModel>> Sets = null; |
| | | Dictionary<LinkViewModel, bool> Sets_hasSource = null; |
| | | private void TraversePipeNetwork(List<IBaseViewModel> startObjs, HashSet<NodeViewModel> visitedNodes = null, bool consider = true) |
| | | public void TraversePipeNetwork(List<IBaseViewModel> startObjs, HashSet<NodeViewModel> visitedNodes = null, bool consider = true) |
| | | { |
| | | |
| | | LinksToFindSource = new List<LinkViewModel>(); |
| | |
| | | |
| | | |
| | | } |
| | | private void TraversePipeNetwork(LinkViewModel startLink, HashSet<NodeViewModel> visitedNodes = null) |
| | | public void TraversePipeNetwork(LinkViewModel startLink, HashSet<NodeViewModel> visitedNodes = null) |
| | | { |
| | | |
| | | Queue<LinkViewModel> queue = new Queue<LinkViewModel>(); |
| | |
| | | } |
| | | |
| | | } |
| | | private void TraversePipeNetwork_Set(LinkViewModel startLink, HashSet<NodeViewModel> visitedNodes = null) |
| | | public void TraversePipeNetwork_Set(LinkViewModel startLink, HashSet<NodeViewModel> visitedNodes = null) |
| | | { |
| | | |
| | | Queue<LinkViewModel> queue = new Queue<LinkViewModel>(); |
| | |
| | | |
| | | |
| | | } |
| | | private bool FindSouce(LinkViewModel startLink, HashSet<LinkViewModel> visitedLinks, HashSet<LinkViewModel> visitedLinks2, Dictionary<IBaseViewModel, bool> hasSource = null) |
| | | public bool FindSouce(LinkViewModel startLink, HashSet<LinkViewModel> visitedLinks, HashSet<LinkViewModel> visitedLinks2, Dictionary<IBaseViewModel, bool> hasSource = null) |
| | | { |
| | | |
| | | |
| | |
| | | |
| | | |
| | | } |
| | | private bool FindSouce(NodeViewModel startNode, HashSet<LinkViewModel> visitedLinks, HashSet<LinkViewModel> visitedLinks2, Dictionary<IBaseViewModel, bool> hasSource = null) |
| | | public bool FindSouce(NodeViewModel startNode, HashSet<LinkViewModel> visitedLinks, HashSet<LinkViewModel> visitedLinks2, Dictionary<IBaseViewModel, bool> hasSource = null) |
| | | { |
| | | |
| | | foreach (var link in startNode.ViewLinks) |
| | |
| | | |
| | | } |
| | | |
| | | private void TraversePipeNetworkALL(LinkViewModel startLink, HashSet<NodeViewModel> visitedNodes = null, int direction = 0) |
| | | public void TraversePipeNetworkALL(LinkViewModel startLink, HashSet<NodeViewModel> visitedNodes = null, int direction = 0) |
| | | { |
| | | |
| | | Queue<LinkViewModel> queue = new Queue<LinkViewModel>(); |
| | |
| | | |
| | | #region 显示选项 |
| | | |
| | | private void 显示节点ToolStripMenuItem_Click(object sender, EventArgs e) |
| | | public void 显示节点ToolStripMenuItem_Click(object sender, EventArgs e) |
| | | { |
| | | IsShowJunction = true; |
| | | SetMapInvalidate(); |
| | | } |
| | | |
| | | private void 隐藏节点ToolStripMenuItem_Click(object sender, EventArgs e) |
| | | public void 隐藏节点ToolStripMenuItem_Click(object sender, EventArgs e) |
| | | { |
| | | IsShowJunction = false; |
| | | SetMapInvalidate(); |
| | | } |
| | | |
| | | private void 大ToolStripMenuItem_Click(object sender, EventArgs e) |
| | | public void 大ToolStripMenuItem_Click(object sender, EventArgs e) |
| | | { |
| | | var item = sender as ToolStripItem; |
| | | if (item.Text == "大") |
| | |
| | | SetMapInvalidate(); |
| | | } |
| | | |
| | | private void 显示阀门ToolStripMenuItem_Click(object sender, EventArgs e) |
| | | public void 显示阀门ToolStripMenuItem_Click(object sender, EventArgs e) |
| | | { |
| | | IsShowValve = true; |
| | | SetMapInvalidate(); |
| | | |
| | | } |
| | | |
| | | private void 隐藏阀门ToolStripMenuItem_Click(object sender, EventArgs e) |
| | | public void 隐藏阀门ToolStripMenuItem_Click(object sender, EventArgs e) |
| | | { |
| | | IsShowValve = false; |
| | | SetMapInvalidate(); |
| | |
| | | |
| | | } |
| | | |
| | | private void 大ToolStripMenuItem1_Click(object sender, EventArgs e) |
| | | public void 大ToolStripMenuItem1_Click(object sender, EventArgs e) |
| | | { |
| | | var item = sender as ToolStripItem; |
| | | if (item.Text == "大") |
| | |
| | | #endregion 二、工具栏 |
| | | |
| | | #region 三、方法 |
| | | private void 标高推测ToolStripMenuItem_Click(object sender, EventArgs e) |
| | | public void 标高推测ToolStripMenuItem_Click(object sender, EventArgs e) |
| | | { |
| | | int num = UpdateNodesEle(); |
| | | if (num > 0) |
| | |
| | | return num; |
| | | } |
| | | |
| | | private void FindNonZeroNeighbors(NodeViewModel node, List<NodeViewModel> result, HashSet<NodeViewModel> origin) |
| | | public void FindNonZeroNeighbors(NodeViewModel node, List<NodeViewModel> result, HashSet<NodeViewModel> origin) |
| | | { |
| | | foreach (LinkViewModel link in node.ViewLinks) |
| | | { |
| | |
| | | } |
| | | } |
| | | } |
| | | private void 标高导出ToolStripMenuItem_Click(object sender, EventArgs e) |
| | | public void 标高导出ToolStripMenuItem_Click(object sender, EventArgs e) |
| | | { |
| | | DataTable dt = new DataTable(); |
| | | dt.Columns.Add("ID"); |
| | |
| | | } |
| | | } |
| | | |
| | | private void 导入jsonToolStripMenuItem_Click(object sender, EventArgs e) |
| | | public void 导入jsonToolStripMenuItem_Click(object sender, EventArgs e) |
| | | { |
| | | var ofd = new OpenFileDialog(); |
| | | ofd.Filter = "json文件|*.json"; |
| | |
| | | } |
| | | |
| | | |
| | | private void 连通性检查ToolStripMenuItem1_Click(object sender, EventArgs e) |
| | | public void 连通性检查ToolStripMenuItem1_Click(object sender, EventArgs e) |
| | | { |
| | | if (selectedObjs.Count > 0)//&& selectedObjs[0] is Link l |
| | | { |
| | |
| | | |
| | | } |
| | | } |
| | | private void 下游连通性ToolStripMenuItem_Click(object sender, EventArgs e) |
| | | public void 下游连通性ToolStripMenuItem_Click(object sender, EventArgs e) |
| | | { |
| | | if (selectedObjs.Count > 0)//&& selectedObjs[0] is Link l |
| | | { |
| | |
| | | return projectedPoints; |
| | | } |
| | | |
| | | public void SetSelectObj(List<string> ids) |
| | | public void SetSelectObj(List<string> ids) |
| | | { |
| | | //构造两个字典,一个是节点,一个是管道 |
| | | var dict_nodes = _Nodes.ToDictionary(o => o.ID); |
| | |
| | | bool _isSettingBackGroundPictur = false; |
| | | |
| | | |
| | | private bool __needpaintall = false; |
| | | public bool __needpaintall = false; |
| | | |
| | | |
| | | |