diff --git a/Cyberpipe.suo b/Cyberpipe.suo index 44957ec..14fb638 100644 --- a/Cyberpipe.suo +++ b/Cyberpipe.suo Binary files differ diff --git a/Cyberpipe.suo b/Cyberpipe.suo index 44957ec..14fb638 100644 --- a/Cyberpipe.suo +++ b/Cyberpipe.suo Binary files differ diff --git a/MainFrm.cs b/MainFrm.cs index 61de352..d78e97b 100644 --- a/MainFrm.cs +++ b/MainFrm.cs @@ -1543,7 +1543,6 @@ void globeControl1_HudControlMouseIntoEvent(object sender, HudControlMouseIntoEventArgs e) { - GSOHudButton btn = e.HudControl as GSOHudButton; tooltip1 = new ToolTip(); switch (e.HudControl.Name) { @@ -1580,64 +1579,111 @@ } #endregion - + //TODO LIST: wxl? Tag更正 +// private void layerTree_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) +// { +// if (e.Button != MouseButtons.Right) return; +// layerTree.SelectedNode = e.Node; +// if (e.Node.Tag == null) return; +// if (e.Button == MouseButtons.Right && e.Node.Tag.ToString().Contains("|")) +// { +// +// if (e.Node.Tag.ToString().Split('|')[0] == "locaserver") +// { +// +// foreach (ToolStripItem item in layerNodeContexMenu.Items) +// { +// item.Visible = false; +// } +// return; +// +// } +// +// if (e.Node.Tag.ToString().Split('|')[0] == "new") +// { +// LayerEditableMenuItem.Enabled = true; +// foreach (ToolStripItem item in layerNodeContexMenu.Items) +// { +// item.Visible = false; +// } +// //LayerSelectableMenuItem.Visible = true; +// //LayerEditableMenuItem.Visible = true; +// RemoveLayer.Visible = true; +// RefreshLayerFeatureListMenuItem.Visible = true; +// //SaveLayerMenuItem.Visible = true; +// //LayerFlyMenuItem.Visible = true; +// } +// +// LayerSelectableMenuItem.Visible = true; +// LayerEditableMenuItem.Visible = true; +// SaveLayerMenuItem.Visible = true; +// LayerFlyMenuItem.Visible = true; +// 导出CADToolStripMenuItem1.Visible = true; +// +// layerNodeContexMenu.Show(layerTree, e.X, e.Y); +// layerNodeContexMenu.Tag = e.Node; +// GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(e.Node.Tag.ToString().Split('|')[1]); +// if (layer != null) +// { +// LayerSelectableMenuItem.Checked = layer.Selectable; +// LayerEditableMenuItem.Checked = layer.Editable; +// } +// } +// else +// { +// if (e.Node.Tag is GSOLayer && e.Node.Parent != null && e.Node.Parent.Text.Trim() == "临时图层") +// { +// contextMenuStripDeleteLayerNode.Show(layerTree, e.X, e.Y); +// contextMenuStripDeleteLayerNode.Tag = e.Node; +// } +// else if (e.Node.Tag is GSOFeature && e.Node.Parent != null && e.Node.Parent.Text.Trim() == "我的地标") +// { +// contextMenuStripDeleteLayerNode.Show(layerTree, e.X, e.Y); +// contextMenuStripDeleteLayerNode.Tag = e.Node; +// } +// } +// } private void layerTree_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) { if (e.Button != MouseButtons.Right) return; layerTree.SelectedNode = e.Node; if (e.Node.Tag == null) return; - if (e.Button == MouseButtons.Right && e.Node.Tag.ToString().Contains("|")) + if (e.Button == MouseButtons.Right) { - - if (e.Node.Tag.ToString().Split('|')[0] == "locaserver") - { - - foreach (ToolStripItem item in layerNodeContexMenu.Items) - { - item.Visible = false; - } - return; - - } - - if (e.Node.Tag.ToString().Split('|')[0] == "new") - { - LayerEditableMenuItem.Enabled = true; - foreach (ToolStripItem item in layerNodeContexMenu.Items) - { - item.Visible = false; - } - //LayerSelectableMenuItem.Visible = true; - //LayerEditableMenuItem.Visible = true; - RemoveLayer.Visible = true; - RefreshLayerFeatureListMenuItem.Visible = true; - //SaveLayerMenuItem.Visible = true; - //LayerFlyMenuItem.Visible = true; - } + //来自locaserver的数据,直接返回就行了,目前只有一个180fd,暂时单独处理 + GSOLayer gsoLayer = e.Node.Tag as GSOLayer; + if (gsoLayer==null||gsoLayer.Caption.Equals(Utility.roadLayerName)) return; + //搜遍宇宙角角落落没有发现呐,故注释掉了 +// if (e.Node.Tag.ToString().Split('|')[0] == "new") +// { +// LayerEditableMenuItem.Enabled = true; +// foreach (ToolStripItem item in layerNodeContexMenu.Items) +// { +// item.Visible = false; +// } +// //LayerSelectableMenuItem.Visible = true; +// //LayerEditableMenuItem.Visible = true; +// RemoveLayer.Visible = true; +// RefreshLayerFeatureListMenuItem.Visible = true; +// //SaveLayerMenuItem.Visible = true; +// //LayerFlyMenuItem.Visible = true; +// } LayerSelectableMenuItem.Visible = true; LayerEditableMenuItem.Visible = true; SaveLayerMenuItem.Visible = true; LayerFlyMenuItem.Visible = true; 导出CADToolStripMenuItem1.Visible = true; - layerNodeContexMenu.Show(layerTree, e.X, e.Y); layerNodeContexMenu.Tag = e.Node; - GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(e.Node.Tag.ToString().Split('|')[1]); - if (layer != null) - { - LayerSelectableMenuItem.Checked = layer.Selectable; - LayerEditableMenuItem.Checked = layer.Editable; - } + LayerSelectableMenuItem.Checked = gsoLayer.Selectable; + LayerEditableMenuItem.Checked = gsoLayer.Editable; } else { - if (e.Node.Tag is GSOLayer && e.Node.Parent != null && e.Node.Parent.Text.Trim() == "临时图层") - { - contextMenuStripDeleteLayerNode.Show(layerTree, e.X, e.Y); - contextMenuStripDeleteLayerNode.Tag = e.Node; - } - else if (e.Node.Tag is GSOFeature && e.Node.Parent != null && e.Node.Parent.Text.Trim() == "我的地标") + if (e.Node.Parent != null && ( + (e.Node.Tag is GSOLayer && e.Node.Parent.Text.Trim() == "临时图层") || + (e.Node.Tag is GSOFeature && e.Node.Parent.Text.Trim() == "我的地标"))) { contextMenuStripDeleteLayerNode.Show(layerTree, e.X, e.Y); contextMenuStripDeleteLayerNode.Tag = e.Node; @@ -1653,51 +1699,42 @@ private void 删除ToolStripMenuItem2_Click(object sender, EventArgs e) { TreeNode node = layerTree.SelectedNode; - if (node != null && node.Parent != null && node.Parent.Text.Trim() == "临时图层") + if (node == null || node.Parent == null) return; + if (node.Parent.Text.Trim() == "临时图层") { - if (node.Tag is GSOLayer) - { - GSOLayer layer = node.Tag as GSOLayer; + if (!(node.Tag is GSOLayer)) return; + GSOLayer layer = node.Tag as GSOLayer; - for (int i = globeControl1.Globe.Layers.Count - 1; i >= 0; i--) - { - if (globeControl1.Globe.Layers[i].Caption == layer.Caption) - { - globeControl1.Globe.Layers.Remove(globeControl1.Globe.Layers[i]); - } - } - - globeControl1.Globe.Refresh(); - - node.Remove(); - } - } - if (node != null && node.Parent != null && node.Parent.Text.Trim() == "我的地标") +// for (int i = globeControl1.Globe.Layers.Count - 1; i >= 0; i--) +// { +// if (globeControl1.Globe.Layers[i].Caption == layer.Caption) +// { +// globeControl1.Globe.Layers.Remove(globeControl1.Globe.Layers[i]); +// } +// } + globeControl1.Globe.Layers.Remove(layer);//wxl? 上面为何不直接移除呢? + globeControl1.Globe.Refresh(); + node.Remove(); + }else if (node.Parent.Text.Trim() == "我的地标") { - if (node.Tag is GSOFeature) - { - GSOFeature f = node.Tag as GSOFeature; - f.Delete(); - globeControl1.Globe.Refresh(); - - node.Remove(); - } + if (!(node.Tag is GSOFeature)) return; + GSOFeature f = node.Tag as GSOFeature; + f.Delete(); + globeControl1.Globe.Refresh(); + node.Remove(); } + } private void 可编辑ToolStripMenuItem_Click(object sender, EventArgs e) { TreeNode node = layerTree.SelectedNode; - if (node != null && node.Parent != null && node.Parent.Text.Trim() == "临时图层") - { - if (node.Tag is GSOLayer) - { - GSOLayer layer = node.Tag as GSOLayer; - - 可编辑ToolStripMenuItem.Checked = !可编辑ToolStripMenuItem.Checked; - layer.Editable = 可编辑ToolStripMenuItem.Checked; - } - } + if (node == null || + node.Parent == null || + node.Parent.Text.Trim() != "临时图层" || !(node.Tag is GSOLayer)) return; + GSOLayer layer = node.Tag as GSOLayer; + 可编辑ToolStripMenuItem.Checked = !可编辑ToolStripMenuItem.Checked; + layer.Editable = 可编辑ToolStripMenuItem.Checked; } private void 保存ToolStripMenuItem_Click(object sender, EventArgs e) @@ -1705,12 +1742,11 @@ //TreeNode node = layerNodeContexMenu.Tag as TreeNode; TreeNode node = contextMenuStripDeleteLayerNode.Tag as TreeNode; - Int32 nIndex = node.Index; string layerCaption = node.Text;//.Split('|')[1]; GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(layerCaption); layer.Dataset.Save(); } - + //TODO LIST: wxl? Tag更正 private void 定位ToolStripMenuItem_Click(object sender, EventArgs e) { TreeNode node = layerTree.SelectedNode; @@ -1721,7 +1757,7 @@ GSOLayer lsLayer = globeControl1.Globe.Layers.GetLayerByCaption(node.Text); double x = lsLayer.LatLonBounds.Center.X; double y = lsLayer.LatLonBounds.Center.Y; - if (x == 0 && y == 0) + if (x.Equals(0) && y.Equals(0)) { x = lsLayer.Bounds.Center.X; y = lsLayer.Bounds.Center.Y; @@ -1731,8 +1767,8 @@ } else { - GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(node.Tag.ToString().Split('|')[1]); - +// GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(node.Tag.ToString().Split('|')[1]); + GSOLayer layer = node.Tag as GSOLayer; if (layer == null) return; if (layer.Caption == "红线") { @@ -1755,55 +1791,56 @@ } } } - + //TODO LIST: wxl? Tag更正 private void layerTree_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e) { - if (layerTree.SelectedNode == null) return; - if (layerTree.SelectedNode.Tag.ToString().Contains("|")) + TreeNode node = layerTree.SelectedNode; + if (node == null) return; +// GSOLayer layer = node.Tag as GSOLayer; +// if (layerTree.SelectedNode.Tag.ToString().Contains("|")) +// { +// string nodeTag = layerTree.SelectedNode.Tag.ToString().Split('|')[1]; +// GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(nodeTag); +// if (layer != null) +// { +// if (layer.Caption == "红线") +// { +// globeControl1.Globe.FlyToPosition(new GSOPoint3d(120.610963, 31.188121, 50), EnumAltitudeMode.Absolute, -4, 50, 1000); +// globeControl1.Globe.FlyToPointSpeed = 10000000; +// globeControl1.Globe.Action = EnumAction3D.SelectObject; +// +// GSOLayer redLayer = globeControl1.Globe.Layers.GetLayerByCaption("红线"); +// if (redLayer != null) +// { +// redLayer.Visible = true; +// } +// globeControl1.Refresh(); +// } +// else +// { +// double x = layer.LatLonBounds.Center.X; +// double y = layer.LatLonBounds.Center.Y; +// globeControl1.Globe.FlyToPosition(new GSOPoint3d(x, y, 0), EnumAltitudeMode.Absolute); +// } +// } +// } + if (node.Tag is GSOLayer) { - string nodeTag = layerTree.SelectedNode.Tag.ToString().Split('|')[1]; - GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(nodeTag); - if (layer != null) + GSOLayer layer = node.Tag as GSOLayer; + if (layer.GetAllFeatures().Length <= 0) return; + GSOFeature feature = layer.GetAt(0); + if (feature != null && feature.Geometry != null) { - if (layer.Caption == "红线") - { - globeControl1.Globe.FlyToPosition(new GSOPoint3d(120.610963, 31.188121, 50), EnumAltitudeMode.Absolute, -4, 50, 1000); - globeControl1.Globe.FlyToPointSpeed = 10000000; - globeControl1.Globe.Action = EnumAction3D.SelectObject; - - GSOLayer redLayer = globeControl1.Globe.Layers.GetLayerByCaption("红线"); - if (redLayer != null) - { - redLayer.Visible = true; - } - globeControl1.Refresh(); - } - else - { - double x = layer.LatLonBounds.Center.X; - double y = layer.LatLonBounds.Center.Y; - globeControl1.Globe.FlyToPosition(new GSOPoint3d(x, y, 0), EnumAltitudeMode.Absolute); - } + globeControl1.Globe.FlyToPosition(feature.Geometry.GeoCenterPoint, EnumAltitudeMode.Absolute);//, 0, 0, 1000); + } + else + { + globeControl1.Globe.FlyToFeature(feature); } } - if (layerTree.SelectedNode.Tag is GSOLayer) + else if (node.Tag is GSOFeature) { - GSOLayer layer = layerTree.SelectedNode.Tag as GSOLayer; - if (layer.GetAllFeatures().Length > 0) - { - GSOFeature feature = layer.GetAt(0); - if (feature != null && feature.Geometry != null) - { - globeControl1.Globe.FlyToPosition(feature.Geometry.GeoCenterPoint, EnumAltitudeMode.Absolute);//, 0, 0, 1000); - } - else - { - globeControl1.Globe.FlyToFeature(feature); - } - } - } else if (layerTree.SelectedNode.Tag is GSOFeature) - { - GSOFeature feature = layerTree.SelectedNode.Tag as GSOFeature; + GSOFeature feature = node.Tag as GSOFeature; if (feature.Geometry != null) { globeControl1.Globe.FlyToPosition(feature.Geometry.GeoCenterPoint, EnumAltitudeMode.Absolute, 0, 0, 10); @@ -2144,15 +2181,7 @@ int idx = dataGridViewX2.Rows.Add(); dataGridViewX2.Rows[idx].Tag = feat; dataGridViewX2.Rows[idx].Cells[0].Value = resLayer.Caption; - string featureName; - if (isFeatureContainsBianhao(feat)) - { - featureName = feat.GetValue(featureIDFieldName).ToString(); - } - else - { - featureName = feat.Name; - } + var featureName = isFeatureContainsBianhao(feat) ? feat.GetValue(featureIDFieldName).ToString() : feat.Name; dataGridViewX2.Rows[idx].Cells[1].Value = featureName; } } @@ -2174,15 +2203,7 @@ int idx = dataGridViewLineList.Rows.Add(); dataGridViewLineList.Rows[idx].Tag = feat; dataGridViewLineList.Rows[idx].Cells[0].Value = resLayer.Caption; - string featureName; - if (isFeatureContainsBianhao(feat)) - { - featureName = feat.GetValue(featureIDFieldName).ToString(); - } - else - { - featureName = feat.Name; - } + var featureName = isFeatureContainsBianhao(feat) ? feat.GetValue(featureIDFieldName).ToString() : feat.Name; dataGridViewLineList.Rows[idx].Cells[1].Value = featureName; } } @@ -2204,15 +2225,7 @@ int idx = dataGridViewX8.Rows.Add(); dataGridViewX8.Rows[idx].Tag = feat; dataGridViewX8.Rows[idx].Cells[0].Value = resLayer.Caption; - string featureName; - if (isFeatureContainsBianhao(feat)) - { - featureName = feat.GetValue(featureIDFieldName).ToString(); - } - else - { - featureName = feat.Name; - } + var featureName = isFeatureContainsBianhao(feat) ? feat.GetValue(featureIDFieldName).ToString() : feat.Name; dataGridViewX8.Rows[idx].Cells[1].Value = featureName; } } @@ -2234,15 +2247,7 @@ int idx = dataGridViewX4.Rows.Add(); dataGridViewX4.Rows[idx].Tag = feat; dataGridViewX4.Rows[idx].Cells[0].Value = resLayer.Caption; - string featureName; - if (isFeatureContainsBianhao(feat)) - { - featureName = feat.GetValue(featureIDFieldName).ToString(); - } - else - { - featureName = feat.Name; - } + var featureName = isFeatureContainsBianhao(feat) ? feat.GetValue(featureIDFieldName).ToString() : feat.Name; dataGridViewX4.Rows[idx].Cells[1].Value = featureName; } @@ -2266,15 +2271,7 @@ int idx = dataGridViewX6.Rows.Add(); dataGridViewX6.Rows[idx].Tag = feat; dataGridViewX6.Rows[idx].Cells[0].Value = resLayer.Caption; - string featureName; - if (isFeatureContainsBianhao(feat)) - { - featureName = feat.GetValue(featureIDFieldName).ToString(); - } - else - { - featureName = feat.Name; - } + var featureName = isFeatureContainsBianhao(feat) ? feat.GetValue(featureIDFieldName).ToString() : feat.Name; dataGridViewX6.Rows[idx].Cells[1].Value = featureName; } } @@ -2649,9 +2646,6 @@ return str; } - //string filename = Utility.filename; - //List g1layername = new List(); - /// /// 获取目标图层 /// @@ -2661,9 +2655,9 @@ TreeNode featureAddPipeFitTreenode = GetDestLayerFeatureAddTreeNode(); GSOLayer featureAddLayer = globeControl1.Globe.Layers.GetLayerByCaption(featureAddPipeFitTreenode.Tag.ToString().Split('|')[1]); - return featureAddLayer != null ? featureAddLayer : null; + return featureAddLayer; } - + //TODO LIST: wxl11? 待更正,Node的Tag现在都已经统一为gsolayer对象了 private TreeNode GetDestLayerFeatureAddTreeNode() { for (int i = 0; i < layerTree.Nodes.Count; i++) @@ -3134,6 +3128,7 @@ } } } + //TODO LIST: wxl? Tag更正 /// /// 图层目录树 右键菜单中的 目标图层 菜单 /// @@ -3141,14 +3136,15 @@ /// private void FeatureAddLayerMenuItem_Click(object sender, EventArgs e) { - if (!FeatureAddLayerMenuItem.Checked) - { - TreeNode node = layerNodeContexMenu.Tag as TreeNode; - FeatureAddLayerMenuItem.Checked = true; - GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(node.Tag.ToString().Split('|')[1]); - globeControl1.Globe.DestLayerFeatureAdd = layer; - } + if (FeatureAddLayerMenuItem.Checked) return; + TreeNode node = layerNodeContexMenu.Tag as TreeNode; + FeatureAddLayerMenuItem.Checked = true; +// GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(node.Tag.ToString().Split('|')[1]); + if (node == null) return; + GSOLayer layer = node.Tag as GSOLayer; + globeControl1.Globe.DestLayerFeatureAdd = layer; } + //TODO LIST: wxl? Tag更正 /// /// 图层目录树 右键菜单中的 可选择 菜单 /// @@ -3157,11 +3153,13 @@ private void LayerSelectableMenuItem_Click(object sender, EventArgs e) { TreeNode node = layerNodeContexMenu.Tag as TreeNode; - Int32 nIndex = node.Index; - GSOLayer layer = globeControl1.Globe.Layers[nIndex]; +// GSOLayer layer = globeControl1.Globe.Layers[nIndex]; + if (node == null) return; + GSOLayer layer = node.Tag as GSOLayer; LayerSelectableMenuItem.Checked = !LayerSelectableMenuItem.Checked; - layer.Selectable = LayerSelectableMenuItem.Checked; + if (layer != null) layer.Selectable = LayerSelectableMenuItem.Checked; } + //TODO LIST: wxl? Tag更正 /// /// 图层目录树 右键菜单中的 可编辑 菜单 /// @@ -3170,22 +3168,27 @@ private void LayerEditableMenuItem_Click(object sender, EventArgs e) { TreeNode node = layerNodeContexMenu.Tag as TreeNode; - GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(node.Tag.ToString().Split('|')[1]); +// GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(node.Tag.ToString().Split('|')[1]); + if (node == null) return; + GSOLayer layer = node.Tag as GSOLayer; LayerEditableMenuItem.Checked = !LayerEditableMenuItem.Checked; - layer.Editable = LayerEditableMenuItem.Checked; + if (layer != null) layer.Editable = LayerEditableMenuItem.Checked; } /// /// 图层目录树 右键菜单中的 保存 菜单 /// /// /// + //TODO LIST: wxl? Tag更正 private void SaveLayerMenuItem_Click(object sender, EventArgs e) { TreeNode node = layerNodeContexMenu.Tag as TreeNode; - string layerCaption = node.Tag.ToString().Split('|')[1]; - GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(layerCaption); - layer.Dataset.Save(); +// string layerCaption = node.Tag.ToString().Split('|')[1]; +// GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(layerCaption); + if (node == null) return; + GSOLayer layer = node.Tag as GSOLayer; + if (layer != null) layer.Dataset.Save(); } #region wxl feature的公共方法 diff --git a/Cyberpipe.suo b/Cyberpipe.suo index 44957ec..14fb638 100644 --- a/Cyberpipe.suo +++ b/Cyberpipe.suo Binary files differ diff --git a/MainFrm.cs b/MainFrm.cs index 61de352..d78e97b 100644 --- a/MainFrm.cs +++ b/MainFrm.cs @@ -1543,7 +1543,6 @@ void globeControl1_HudControlMouseIntoEvent(object sender, HudControlMouseIntoEventArgs e) { - GSOHudButton btn = e.HudControl as GSOHudButton; tooltip1 = new ToolTip(); switch (e.HudControl.Name) { @@ -1580,64 +1579,111 @@ } #endregion - + //TODO LIST: wxl? Tag更正 +// private void layerTree_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) +// { +// if (e.Button != MouseButtons.Right) return; +// layerTree.SelectedNode = e.Node; +// if (e.Node.Tag == null) return; +// if (e.Button == MouseButtons.Right && e.Node.Tag.ToString().Contains("|")) +// { +// +// if (e.Node.Tag.ToString().Split('|')[0] == "locaserver") +// { +// +// foreach (ToolStripItem item in layerNodeContexMenu.Items) +// { +// item.Visible = false; +// } +// return; +// +// } +// +// if (e.Node.Tag.ToString().Split('|')[0] == "new") +// { +// LayerEditableMenuItem.Enabled = true; +// foreach (ToolStripItem item in layerNodeContexMenu.Items) +// { +// item.Visible = false; +// } +// //LayerSelectableMenuItem.Visible = true; +// //LayerEditableMenuItem.Visible = true; +// RemoveLayer.Visible = true; +// RefreshLayerFeatureListMenuItem.Visible = true; +// //SaveLayerMenuItem.Visible = true; +// //LayerFlyMenuItem.Visible = true; +// } +// +// LayerSelectableMenuItem.Visible = true; +// LayerEditableMenuItem.Visible = true; +// SaveLayerMenuItem.Visible = true; +// LayerFlyMenuItem.Visible = true; +// 导出CADToolStripMenuItem1.Visible = true; +// +// layerNodeContexMenu.Show(layerTree, e.X, e.Y); +// layerNodeContexMenu.Tag = e.Node; +// GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(e.Node.Tag.ToString().Split('|')[1]); +// if (layer != null) +// { +// LayerSelectableMenuItem.Checked = layer.Selectable; +// LayerEditableMenuItem.Checked = layer.Editable; +// } +// } +// else +// { +// if (e.Node.Tag is GSOLayer && e.Node.Parent != null && e.Node.Parent.Text.Trim() == "临时图层") +// { +// contextMenuStripDeleteLayerNode.Show(layerTree, e.X, e.Y); +// contextMenuStripDeleteLayerNode.Tag = e.Node; +// } +// else if (e.Node.Tag is GSOFeature && e.Node.Parent != null && e.Node.Parent.Text.Trim() == "我的地标") +// { +// contextMenuStripDeleteLayerNode.Show(layerTree, e.X, e.Y); +// contextMenuStripDeleteLayerNode.Tag = e.Node; +// } +// } +// } private void layerTree_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) { if (e.Button != MouseButtons.Right) return; layerTree.SelectedNode = e.Node; if (e.Node.Tag == null) return; - if (e.Button == MouseButtons.Right && e.Node.Tag.ToString().Contains("|")) + if (e.Button == MouseButtons.Right) { - - if (e.Node.Tag.ToString().Split('|')[0] == "locaserver") - { - - foreach (ToolStripItem item in layerNodeContexMenu.Items) - { - item.Visible = false; - } - return; - - } - - if (e.Node.Tag.ToString().Split('|')[0] == "new") - { - LayerEditableMenuItem.Enabled = true; - foreach (ToolStripItem item in layerNodeContexMenu.Items) - { - item.Visible = false; - } - //LayerSelectableMenuItem.Visible = true; - //LayerEditableMenuItem.Visible = true; - RemoveLayer.Visible = true; - RefreshLayerFeatureListMenuItem.Visible = true; - //SaveLayerMenuItem.Visible = true; - //LayerFlyMenuItem.Visible = true; - } + //来自locaserver的数据,直接返回就行了,目前只有一个180fd,暂时单独处理 + GSOLayer gsoLayer = e.Node.Tag as GSOLayer; + if (gsoLayer==null||gsoLayer.Caption.Equals(Utility.roadLayerName)) return; + //搜遍宇宙角角落落没有发现呐,故注释掉了 +// if (e.Node.Tag.ToString().Split('|')[0] == "new") +// { +// LayerEditableMenuItem.Enabled = true; +// foreach (ToolStripItem item in layerNodeContexMenu.Items) +// { +// item.Visible = false; +// } +// //LayerSelectableMenuItem.Visible = true; +// //LayerEditableMenuItem.Visible = true; +// RemoveLayer.Visible = true; +// RefreshLayerFeatureListMenuItem.Visible = true; +// //SaveLayerMenuItem.Visible = true; +// //LayerFlyMenuItem.Visible = true; +// } LayerSelectableMenuItem.Visible = true; LayerEditableMenuItem.Visible = true; SaveLayerMenuItem.Visible = true; LayerFlyMenuItem.Visible = true; 导出CADToolStripMenuItem1.Visible = true; - layerNodeContexMenu.Show(layerTree, e.X, e.Y); layerNodeContexMenu.Tag = e.Node; - GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(e.Node.Tag.ToString().Split('|')[1]); - if (layer != null) - { - LayerSelectableMenuItem.Checked = layer.Selectable; - LayerEditableMenuItem.Checked = layer.Editable; - } + LayerSelectableMenuItem.Checked = gsoLayer.Selectable; + LayerEditableMenuItem.Checked = gsoLayer.Editable; } else { - if (e.Node.Tag is GSOLayer && e.Node.Parent != null && e.Node.Parent.Text.Trim() == "临时图层") - { - contextMenuStripDeleteLayerNode.Show(layerTree, e.X, e.Y); - contextMenuStripDeleteLayerNode.Tag = e.Node; - } - else if (e.Node.Tag is GSOFeature && e.Node.Parent != null && e.Node.Parent.Text.Trim() == "我的地标") + if (e.Node.Parent != null && ( + (e.Node.Tag is GSOLayer && e.Node.Parent.Text.Trim() == "临时图层") || + (e.Node.Tag is GSOFeature && e.Node.Parent.Text.Trim() == "我的地标"))) { contextMenuStripDeleteLayerNode.Show(layerTree, e.X, e.Y); contextMenuStripDeleteLayerNode.Tag = e.Node; @@ -1653,51 +1699,42 @@ private void 删除ToolStripMenuItem2_Click(object sender, EventArgs e) { TreeNode node = layerTree.SelectedNode; - if (node != null && node.Parent != null && node.Parent.Text.Trim() == "临时图层") + if (node == null || node.Parent == null) return; + if (node.Parent.Text.Trim() == "临时图层") { - if (node.Tag is GSOLayer) - { - GSOLayer layer = node.Tag as GSOLayer; + if (!(node.Tag is GSOLayer)) return; + GSOLayer layer = node.Tag as GSOLayer; - for (int i = globeControl1.Globe.Layers.Count - 1; i >= 0; i--) - { - if (globeControl1.Globe.Layers[i].Caption == layer.Caption) - { - globeControl1.Globe.Layers.Remove(globeControl1.Globe.Layers[i]); - } - } - - globeControl1.Globe.Refresh(); - - node.Remove(); - } - } - if (node != null && node.Parent != null && node.Parent.Text.Trim() == "我的地标") +// for (int i = globeControl1.Globe.Layers.Count - 1; i >= 0; i--) +// { +// if (globeControl1.Globe.Layers[i].Caption == layer.Caption) +// { +// globeControl1.Globe.Layers.Remove(globeControl1.Globe.Layers[i]); +// } +// } + globeControl1.Globe.Layers.Remove(layer);//wxl? 上面为何不直接移除呢? + globeControl1.Globe.Refresh(); + node.Remove(); + }else if (node.Parent.Text.Trim() == "我的地标") { - if (node.Tag is GSOFeature) - { - GSOFeature f = node.Tag as GSOFeature; - f.Delete(); - globeControl1.Globe.Refresh(); - - node.Remove(); - } + if (!(node.Tag is GSOFeature)) return; + GSOFeature f = node.Tag as GSOFeature; + f.Delete(); + globeControl1.Globe.Refresh(); + node.Remove(); } + } private void 可编辑ToolStripMenuItem_Click(object sender, EventArgs e) { TreeNode node = layerTree.SelectedNode; - if (node != null && node.Parent != null && node.Parent.Text.Trim() == "临时图层") - { - if (node.Tag is GSOLayer) - { - GSOLayer layer = node.Tag as GSOLayer; - - 可编辑ToolStripMenuItem.Checked = !可编辑ToolStripMenuItem.Checked; - layer.Editable = 可编辑ToolStripMenuItem.Checked; - } - } + if (node == null || + node.Parent == null || + node.Parent.Text.Trim() != "临时图层" || !(node.Tag is GSOLayer)) return; + GSOLayer layer = node.Tag as GSOLayer; + 可编辑ToolStripMenuItem.Checked = !可编辑ToolStripMenuItem.Checked; + layer.Editable = 可编辑ToolStripMenuItem.Checked; } private void 保存ToolStripMenuItem_Click(object sender, EventArgs e) @@ -1705,12 +1742,11 @@ //TreeNode node = layerNodeContexMenu.Tag as TreeNode; TreeNode node = contextMenuStripDeleteLayerNode.Tag as TreeNode; - Int32 nIndex = node.Index; string layerCaption = node.Text;//.Split('|')[1]; GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(layerCaption); layer.Dataset.Save(); } - + //TODO LIST: wxl? Tag更正 private void 定位ToolStripMenuItem_Click(object sender, EventArgs e) { TreeNode node = layerTree.SelectedNode; @@ -1721,7 +1757,7 @@ GSOLayer lsLayer = globeControl1.Globe.Layers.GetLayerByCaption(node.Text); double x = lsLayer.LatLonBounds.Center.X; double y = lsLayer.LatLonBounds.Center.Y; - if (x == 0 && y == 0) + if (x.Equals(0) && y.Equals(0)) { x = lsLayer.Bounds.Center.X; y = lsLayer.Bounds.Center.Y; @@ -1731,8 +1767,8 @@ } else { - GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(node.Tag.ToString().Split('|')[1]); - +// GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(node.Tag.ToString().Split('|')[1]); + GSOLayer layer = node.Tag as GSOLayer; if (layer == null) return; if (layer.Caption == "红线") { @@ -1755,55 +1791,56 @@ } } } - + //TODO LIST: wxl? Tag更正 private void layerTree_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e) { - if (layerTree.SelectedNode == null) return; - if (layerTree.SelectedNode.Tag.ToString().Contains("|")) + TreeNode node = layerTree.SelectedNode; + if (node == null) return; +// GSOLayer layer = node.Tag as GSOLayer; +// if (layerTree.SelectedNode.Tag.ToString().Contains("|")) +// { +// string nodeTag = layerTree.SelectedNode.Tag.ToString().Split('|')[1]; +// GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(nodeTag); +// if (layer != null) +// { +// if (layer.Caption == "红线") +// { +// globeControl1.Globe.FlyToPosition(new GSOPoint3d(120.610963, 31.188121, 50), EnumAltitudeMode.Absolute, -4, 50, 1000); +// globeControl1.Globe.FlyToPointSpeed = 10000000; +// globeControl1.Globe.Action = EnumAction3D.SelectObject; +// +// GSOLayer redLayer = globeControl1.Globe.Layers.GetLayerByCaption("红线"); +// if (redLayer != null) +// { +// redLayer.Visible = true; +// } +// globeControl1.Refresh(); +// } +// else +// { +// double x = layer.LatLonBounds.Center.X; +// double y = layer.LatLonBounds.Center.Y; +// globeControl1.Globe.FlyToPosition(new GSOPoint3d(x, y, 0), EnumAltitudeMode.Absolute); +// } +// } +// } + if (node.Tag is GSOLayer) { - string nodeTag = layerTree.SelectedNode.Tag.ToString().Split('|')[1]; - GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(nodeTag); - if (layer != null) + GSOLayer layer = node.Tag as GSOLayer; + if (layer.GetAllFeatures().Length <= 0) return; + GSOFeature feature = layer.GetAt(0); + if (feature != null && feature.Geometry != null) { - if (layer.Caption == "红线") - { - globeControl1.Globe.FlyToPosition(new GSOPoint3d(120.610963, 31.188121, 50), EnumAltitudeMode.Absolute, -4, 50, 1000); - globeControl1.Globe.FlyToPointSpeed = 10000000; - globeControl1.Globe.Action = EnumAction3D.SelectObject; - - GSOLayer redLayer = globeControl1.Globe.Layers.GetLayerByCaption("红线"); - if (redLayer != null) - { - redLayer.Visible = true; - } - globeControl1.Refresh(); - } - else - { - double x = layer.LatLonBounds.Center.X; - double y = layer.LatLonBounds.Center.Y; - globeControl1.Globe.FlyToPosition(new GSOPoint3d(x, y, 0), EnumAltitudeMode.Absolute); - } + globeControl1.Globe.FlyToPosition(feature.Geometry.GeoCenterPoint, EnumAltitudeMode.Absolute);//, 0, 0, 1000); + } + else + { + globeControl1.Globe.FlyToFeature(feature); } } - if (layerTree.SelectedNode.Tag is GSOLayer) + else if (node.Tag is GSOFeature) { - GSOLayer layer = layerTree.SelectedNode.Tag as GSOLayer; - if (layer.GetAllFeatures().Length > 0) - { - GSOFeature feature = layer.GetAt(0); - if (feature != null && feature.Geometry != null) - { - globeControl1.Globe.FlyToPosition(feature.Geometry.GeoCenterPoint, EnumAltitudeMode.Absolute);//, 0, 0, 1000); - } - else - { - globeControl1.Globe.FlyToFeature(feature); - } - } - } else if (layerTree.SelectedNode.Tag is GSOFeature) - { - GSOFeature feature = layerTree.SelectedNode.Tag as GSOFeature; + GSOFeature feature = node.Tag as GSOFeature; if (feature.Geometry != null) { globeControl1.Globe.FlyToPosition(feature.Geometry.GeoCenterPoint, EnumAltitudeMode.Absolute, 0, 0, 10); @@ -2144,15 +2181,7 @@ int idx = dataGridViewX2.Rows.Add(); dataGridViewX2.Rows[idx].Tag = feat; dataGridViewX2.Rows[idx].Cells[0].Value = resLayer.Caption; - string featureName; - if (isFeatureContainsBianhao(feat)) - { - featureName = feat.GetValue(featureIDFieldName).ToString(); - } - else - { - featureName = feat.Name; - } + var featureName = isFeatureContainsBianhao(feat) ? feat.GetValue(featureIDFieldName).ToString() : feat.Name; dataGridViewX2.Rows[idx].Cells[1].Value = featureName; } } @@ -2174,15 +2203,7 @@ int idx = dataGridViewLineList.Rows.Add(); dataGridViewLineList.Rows[idx].Tag = feat; dataGridViewLineList.Rows[idx].Cells[0].Value = resLayer.Caption; - string featureName; - if (isFeatureContainsBianhao(feat)) - { - featureName = feat.GetValue(featureIDFieldName).ToString(); - } - else - { - featureName = feat.Name; - } + var featureName = isFeatureContainsBianhao(feat) ? feat.GetValue(featureIDFieldName).ToString() : feat.Name; dataGridViewLineList.Rows[idx].Cells[1].Value = featureName; } } @@ -2204,15 +2225,7 @@ int idx = dataGridViewX8.Rows.Add(); dataGridViewX8.Rows[idx].Tag = feat; dataGridViewX8.Rows[idx].Cells[0].Value = resLayer.Caption; - string featureName; - if (isFeatureContainsBianhao(feat)) - { - featureName = feat.GetValue(featureIDFieldName).ToString(); - } - else - { - featureName = feat.Name; - } + var featureName = isFeatureContainsBianhao(feat) ? feat.GetValue(featureIDFieldName).ToString() : feat.Name; dataGridViewX8.Rows[idx].Cells[1].Value = featureName; } } @@ -2234,15 +2247,7 @@ int idx = dataGridViewX4.Rows.Add(); dataGridViewX4.Rows[idx].Tag = feat; dataGridViewX4.Rows[idx].Cells[0].Value = resLayer.Caption; - string featureName; - if (isFeatureContainsBianhao(feat)) - { - featureName = feat.GetValue(featureIDFieldName).ToString(); - } - else - { - featureName = feat.Name; - } + var featureName = isFeatureContainsBianhao(feat) ? feat.GetValue(featureIDFieldName).ToString() : feat.Name; dataGridViewX4.Rows[idx].Cells[1].Value = featureName; } @@ -2266,15 +2271,7 @@ int idx = dataGridViewX6.Rows.Add(); dataGridViewX6.Rows[idx].Tag = feat; dataGridViewX6.Rows[idx].Cells[0].Value = resLayer.Caption; - string featureName; - if (isFeatureContainsBianhao(feat)) - { - featureName = feat.GetValue(featureIDFieldName).ToString(); - } - else - { - featureName = feat.Name; - } + var featureName = isFeatureContainsBianhao(feat) ? feat.GetValue(featureIDFieldName).ToString() : feat.Name; dataGridViewX6.Rows[idx].Cells[1].Value = featureName; } } @@ -2649,9 +2646,6 @@ return str; } - //string filename = Utility.filename; - //List g1layername = new List(); - /// /// 获取目标图层 /// @@ -2661,9 +2655,9 @@ TreeNode featureAddPipeFitTreenode = GetDestLayerFeatureAddTreeNode(); GSOLayer featureAddLayer = globeControl1.Globe.Layers.GetLayerByCaption(featureAddPipeFitTreenode.Tag.ToString().Split('|')[1]); - return featureAddLayer != null ? featureAddLayer : null; + return featureAddLayer; } - + //TODO LIST: wxl11? 待更正,Node的Tag现在都已经统一为gsolayer对象了 private TreeNode GetDestLayerFeatureAddTreeNode() { for (int i = 0; i < layerTree.Nodes.Count; i++) @@ -3134,6 +3128,7 @@ } } } + //TODO LIST: wxl? Tag更正 /// /// 图层目录树 右键菜单中的 目标图层 菜单 /// @@ -3141,14 +3136,15 @@ /// private void FeatureAddLayerMenuItem_Click(object sender, EventArgs e) { - if (!FeatureAddLayerMenuItem.Checked) - { - TreeNode node = layerNodeContexMenu.Tag as TreeNode; - FeatureAddLayerMenuItem.Checked = true; - GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(node.Tag.ToString().Split('|')[1]); - globeControl1.Globe.DestLayerFeatureAdd = layer; - } + if (FeatureAddLayerMenuItem.Checked) return; + TreeNode node = layerNodeContexMenu.Tag as TreeNode; + FeatureAddLayerMenuItem.Checked = true; +// GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(node.Tag.ToString().Split('|')[1]); + if (node == null) return; + GSOLayer layer = node.Tag as GSOLayer; + globeControl1.Globe.DestLayerFeatureAdd = layer; } + //TODO LIST: wxl? Tag更正 /// /// 图层目录树 右键菜单中的 可选择 菜单 /// @@ -3157,11 +3153,13 @@ private void LayerSelectableMenuItem_Click(object sender, EventArgs e) { TreeNode node = layerNodeContexMenu.Tag as TreeNode; - Int32 nIndex = node.Index; - GSOLayer layer = globeControl1.Globe.Layers[nIndex]; +// GSOLayer layer = globeControl1.Globe.Layers[nIndex]; + if (node == null) return; + GSOLayer layer = node.Tag as GSOLayer; LayerSelectableMenuItem.Checked = !LayerSelectableMenuItem.Checked; - layer.Selectable = LayerSelectableMenuItem.Checked; + if (layer != null) layer.Selectable = LayerSelectableMenuItem.Checked; } + //TODO LIST: wxl? Tag更正 /// /// 图层目录树 右键菜单中的 可编辑 菜单 /// @@ -3170,22 +3168,27 @@ private void LayerEditableMenuItem_Click(object sender, EventArgs e) { TreeNode node = layerNodeContexMenu.Tag as TreeNode; - GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(node.Tag.ToString().Split('|')[1]); +// GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(node.Tag.ToString().Split('|')[1]); + if (node == null) return; + GSOLayer layer = node.Tag as GSOLayer; LayerEditableMenuItem.Checked = !LayerEditableMenuItem.Checked; - layer.Editable = LayerEditableMenuItem.Checked; + if (layer != null) layer.Editable = LayerEditableMenuItem.Checked; } /// /// 图层目录树 右键菜单中的 保存 菜单 /// /// /// + //TODO LIST: wxl? Tag更正 private void SaveLayerMenuItem_Click(object sender, EventArgs e) { TreeNode node = layerNodeContexMenu.Tag as TreeNode; - string layerCaption = node.Tag.ToString().Split('|')[1]; - GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(layerCaption); - layer.Dataset.Save(); +// string layerCaption = node.Tag.ToString().Split('|')[1]; +// GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(layerCaption); + if (node == null) return; + GSOLayer layer = node.Tag as GSOLayer; + if (layer != null) layer.Dataset.Save(); } #region wxl feature的公共方法 diff --git a/bin/x86/Debug/Cyberpipe.exe b/bin/x86/Debug/Cyberpipe.exe index 5030278..a971672 100644 --- a/bin/x86/Debug/Cyberpipe.exe +++ b/bin/x86/Debug/Cyberpipe.exe Binary files differ diff --git a/Cyberpipe.suo b/Cyberpipe.suo index 44957ec..14fb638 100644 --- a/Cyberpipe.suo +++ b/Cyberpipe.suo Binary files differ diff --git a/MainFrm.cs b/MainFrm.cs index 61de352..d78e97b 100644 --- a/MainFrm.cs +++ b/MainFrm.cs @@ -1543,7 +1543,6 @@ void globeControl1_HudControlMouseIntoEvent(object sender, HudControlMouseIntoEventArgs e) { - GSOHudButton btn = e.HudControl as GSOHudButton; tooltip1 = new ToolTip(); switch (e.HudControl.Name) { @@ -1580,64 +1579,111 @@ } #endregion - + //TODO LIST: wxl? Tag更正 +// private void layerTree_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) +// { +// if (e.Button != MouseButtons.Right) return; +// layerTree.SelectedNode = e.Node; +// if (e.Node.Tag == null) return; +// if (e.Button == MouseButtons.Right && e.Node.Tag.ToString().Contains("|")) +// { +// +// if (e.Node.Tag.ToString().Split('|')[0] == "locaserver") +// { +// +// foreach (ToolStripItem item in layerNodeContexMenu.Items) +// { +// item.Visible = false; +// } +// return; +// +// } +// +// if (e.Node.Tag.ToString().Split('|')[0] == "new") +// { +// LayerEditableMenuItem.Enabled = true; +// foreach (ToolStripItem item in layerNodeContexMenu.Items) +// { +// item.Visible = false; +// } +// //LayerSelectableMenuItem.Visible = true; +// //LayerEditableMenuItem.Visible = true; +// RemoveLayer.Visible = true; +// RefreshLayerFeatureListMenuItem.Visible = true; +// //SaveLayerMenuItem.Visible = true; +// //LayerFlyMenuItem.Visible = true; +// } +// +// LayerSelectableMenuItem.Visible = true; +// LayerEditableMenuItem.Visible = true; +// SaveLayerMenuItem.Visible = true; +// LayerFlyMenuItem.Visible = true; +// 导出CADToolStripMenuItem1.Visible = true; +// +// layerNodeContexMenu.Show(layerTree, e.X, e.Y); +// layerNodeContexMenu.Tag = e.Node; +// GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(e.Node.Tag.ToString().Split('|')[1]); +// if (layer != null) +// { +// LayerSelectableMenuItem.Checked = layer.Selectable; +// LayerEditableMenuItem.Checked = layer.Editable; +// } +// } +// else +// { +// if (e.Node.Tag is GSOLayer && e.Node.Parent != null && e.Node.Parent.Text.Trim() == "临时图层") +// { +// contextMenuStripDeleteLayerNode.Show(layerTree, e.X, e.Y); +// contextMenuStripDeleteLayerNode.Tag = e.Node; +// } +// else if (e.Node.Tag is GSOFeature && e.Node.Parent != null && e.Node.Parent.Text.Trim() == "我的地标") +// { +// contextMenuStripDeleteLayerNode.Show(layerTree, e.X, e.Y); +// contextMenuStripDeleteLayerNode.Tag = e.Node; +// } +// } +// } private void layerTree_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) { if (e.Button != MouseButtons.Right) return; layerTree.SelectedNode = e.Node; if (e.Node.Tag == null) return; - if (e.Button == MouseButtons.Right && e.Node.Tag.ToString().Contains("|")) + if (e.Button == MouseButtons.Right) { - - if (e.Node.Tag.ToString().Split('|')[0] == "locaserver") - { - - foreach (ToolStripItem item in layerNodeContexMenu.Items) - { - item.Visible = false; - } - return; - - } - - if (e.Node.Tag.ToString().Split('|')[0] == "new") - { - LayerEditableMenuItem.Enabled = true; - foreach (ToolStripItem item in layerNodeContexMenu.Items) - { - item.Visible = false; - } - //LayerSelectableMenuItem.Visible = true; - //LayerEditableMenuItem.Visible = true; - RemoveLayer.Visible = true; - RefreshLayerFeatureListMenuItem.Visible = true; - //SaveLayerMenuItem.Visible = true; - //LayerFlyMenuItem.Visible = true; - } + //来自locaserver的数据,直接返回就行了,目前只有一个180fd,暂时单独处理 + GSOLayer gsoLayer = e.Node.Tag as GSOLayer; + if (gsoLayer==null||gsoLayer.Caption.Equals(Utility.roadLayerName)) return; + //搜遍宇宙角角落落没有发现呐,故注释掉了 +// if (e.Node.Tag.ToString().Split('|')[0] == "new") +// { +// LayerEditableMenuItem.Enabled = true; +// foreach (ToolStripItem item in layerNodeContexMenu.Items) +// { +// item.Visible = false; +// } +// //LayerSelectableMenuItem.Visible = true; +// //LayerEditableMenuItem.Visible = true; +// RemoveLayer.Visible = true; +// RefreshLayerFeatureListMenuItem.Visible = true; +// //SaveLayerMenuItem.Visible = true; +// //LayerFlyMenuItem.Visible = true; +// } LayerSelectableMenuItem.Visible = true; LayerEditableMenuItem.Visible = true; SaveLayerMenuItem.Visible = true; LayerFlyMenuItem.Visible = true; 导出CADToolStripMenuItem1.Visible = true; - layerNodeContexMenu.Show(layerTree, e.X, e.Y); layerNodeContexMenu.Tag = e.Node; - GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(e.Node.Tag.ToString().Split('|')[1]); - if (layer != null) - { - LayerSelectableMenuItem.Checked = layer.Selectable; - LayerEditableMenuItem.Checked = layer.Editable; - } + LayerSelectableMenuItem.Checked = gsoLayer.Selectable; + LayerEditableMenuItem.Checked = gsoLayer.Editable; } else { - if (e.Node.Tag is GSOLayer && e.Node.Parent != null && e.Node.Parent.Text.Trim() == "临时图层") - { - contextMenuStripDeleteLayerNode.Show(layerTree, e.X, e.Y); - contextMenuStripDeleteLayerNode.Tag = e.Node; - } - else if (e.Node.Tag is GSOFeature && e.Node.Parent != null && e.Node.Parent.Text.Trim() == "我的地标") + if (e.Node.Parent != null && ( + (e.Node.Tag is GSOLayer && e.Node.Parent.Text.Trim() == "临时图层") || + (e.Node.Tag is GSOFeature && e.Node.Parent.Text.Trim() == "我的地标"))) { contextMenuStripDeleteLayerNode.Show(layerTree, e.X, e.Y); contextMenuStripDeleteLayerNode.Tag = e.Node; @@ -1653,51 +1699,42 @@ private void 删除ToolStripMenuItem2_Click(object sender, EventArgs e) { TreeNode node = layerTree.SelectedNode; - if (node != null && node.Parent != null && node.Parent.Text.Trim() == "临时图层") + if (node == null || node.Parent == null) return; + if (node.Parent.Text.Trim() == "临时图层") { - if (node.Tag is GSOLayer) - { - GSOLayer layer = node.Tag as GSOLayer; + if (!(node.Tag is GSOLayer)) return; + GSOLayer layer = node.Tag as GSOLayer; - for (int i = globeControl1.Globe.Layers.Count - 1; i >= 0; i--) - { - if (globeControl1.Globe.Layers[i].Caption == layer.Caption) - { - globeControl1.Globe.Layers.Remove(globeControl1.Globe.Layers[i]); - } - } - - globeControl1.Globe.Refresh(); - - node.Remove(); - } - } - if (node != null && node.Parent != null && node.Parent.Text.Trim() == "我的地标") +// for (int i = globeControl1.Globe.Layers.Count - 1; i >= 0; i--) +// { +// if (globeControl1.Globe.Layers[i].Caption == layer.Caption) +// { +// globeControl1.Globe.Layers.Remove(globeControl1.Globe.Layers[i]); +// } +// } + globeControl1.Globe.Layers.Remove(layer);//wxl? 上面为何不直接移除呢? + globeControl1.Globe.Refresh(); + node.Remove(); + }else if (node.Parent.Text.Trim() == "我的地标") { - if (node.Tag is GSOFeature) - { - GSOFeature f = node.Tag as GSOFeature; - f.Delete(); - globeControl1.Globe.Refresh(); - - node.Remove(); - } + if (!(node.Tag is GSOFeature)) return; + GSOFeature f = node.Tag as GSOFeature; + f.Delete(); + globeControl1.Globe.Refresh(); + node.Remove(); } + } private void 可编辑ToolStripMenuItem_Click(object sender, EventArgs e) { TreeNode node = layerTree.SelectedNode; - if (node != null && node.Parent != null && node.Parent.Text.Trim() == "临时图层") - { - if (node.Tag is GSOLayer) - { - GSOLayer layer = node.Tag as GSOLayer; - - 可编辑ToolStripMenuItem.Checked = !可编辑ToolStripMenuItem.Checked; - layer.Editable = 可编辑ToolStripMenuItem.Checked; - } - } + if (node == null || + node.Parent == null || + node.Parent.Text.Trim() != "临时图层" || !(node.Tag is GSOLayer)) return; + GSOLayer layer = node.Tag as GSOLayer; + 可编辑ToolStripMenuItem.Checked = !可编辑ToolStripMenuItem.Checked; + layer.Editable = 可编辑ToolStripMenuItem.Checked; } private void 保存ToolStripMenuItem_Click(object sender, EventArgs e) @@ -1705,12 +1742,11 @@ //TreeNode node = layerNodeContexMenu.Tag as TreeNode; TreeNode node = contextMenuStripDeleteLayerNode.Tag as TreeNode; - Int32 nIndex = node.Index; string layerCaption = node.Text;//.Split('|')[1]; GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(layerCaption); layer.Dataset.Save(); } - + //TODO LIST: wxl? Tag更正 private void 定位ToolStripMenuItem_Click(object sender, EventArgs e) { TreeNode node = layerTree.SelectedNode; @@ -1721,7 +1757,7 @@ GSOLayer lsLayer = globeControl1.Globe.Layers.GetLayerByCaption(node.Text); double x = lsLayer.LatLonBounds.Center.X; double y = lsLayer.LatLonBounds.Center.Y; - if (x == 0 && y == 0) + if (x.Equals(0) && y.Equals(0)) { x = lsLayer.Bounds.Center.X; y = lsLayer.Bounds.Center.Y; @@ -1731,8 +1767,8 @@ } else { - GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(node.Tag.ToString().Split('|')[1]); - +// GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(node.Tag.ToString().Split('|')[1]); + GSOLayer layer = node.Tag as GSOLayer; if (layer == null) return; if (layer.Caption == "红线") { @@ -1755,55 +1791,56 @@ } } } - + //TODO LIST: wxl? Tag更正 private void layerTree_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e) { - if (layerTree.SelectedNode == null) return; - if (layerTree.SelectedNode.Tag.ToString().Contains("|")) + TreeNode node = layerTree.SelectedNode; + if (node == null) return; +// GSOLayer layer = node.Tag as GSOLayer; +// if (layerTree.SelectedNode.Tag.ToString().Contains("|")) +// { +// string nodeTag = layerTree.SelectedNode.Tag.ToString().Split('|')[1]; +// GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(nodeTag); +// if (layer != null) +// { +// if (layer.Caption == "红线") +// { +// globeControl1.Globe.FlyToPosition(new GSOPoint3d(120.610963, 31.188121, 50), EnumAltitudeMode.Absolute, -4, 50, 1000); +// globeControl1.Globe.FlyToPointSpeed = 10000000; +// globeControl1.Globe.Action = EnumAction3D.SelectObject; +// +// GSOLayer redLayer = globeControl1.Globe.Layers.GetLayerByCaption("红线"); +// if (redLayer != null) +// { +// redLayer.Visible = true; +// } +// globeControl1.Refresh(); +// } +// else +// { +// double x = layer.LatLonBounds.Center.X; +// double y = layer.LatLonBounds.Center.Y; +// globeControl1.Globe.FlyToPosition(new GSOPoint3d(x, y, 0), EnumAltitudeMode.Absolute); +// } +// } +// } + if (node.Tag is GSOLayer) { - string nodeTag = layerTree.SelectedNode.Tag.ToString().Split('|')[1]; - GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(nodeTag); - if (layer != null) + GSOLayer layer = node.Tag as GSOLayer; + if (layer.GetAllFeatures().Length <= 0) return; + GSOFeature feature = layer.GetAt(0); + if (feature != null && feature.Geometry != null) { - if (layer.Caption == "红线") - { - globeControl1.Globe.FlyToPosition(new GSOPoint3d(120.610963, 31.188121, 50), EnumAltitudeMode.Absolute, -4, 50, 1000); - globeControl1.Globe.FlyToPointSpeed = 10000000; - globeControl1.Globe.Action = EnumAction3D.SelectObject; - - GSOLayer redLayer = globeControl1.Globe.Layers.GetLayerByCaption("红线"); - if (redLayer != null) - { - redLayer.Visible = true; - } - globeControl1.Refresh(); - } - else - { - double x = layer.LatLonBounds.Center.X; - double y = layer.LatLonBounds.Center.Y; - globeControl1.Globe.FlyToPosition(new GSOPoint3d(x, y, 0), EnumAltitudeMode.Absolute); - } + globeControl1.Globe.FlyToPosition(feature.Geometry.GeoCenterPoint, EnumAltitudeMode.Absolute);//, 0, 0, 1000); + } + else + { + globeControl1.Globe.FlyToFeature(feature); } } - if (layerTree.SelectedNode.Tag is GSOLayer) + else if (node.Tag is GSOFeature) { - GSOLayer layer = layerTree.SelectedNode.Tag as GSOLayer; - if (layer.GetAllFeatures().Length > 0) - { - GSOFeature feature = layer.GetAt(0); - if (feature != null && feature.Geometry != null) - { - globeControl1.Globe.FlyToPosition(feature.Geometry.GeoCenterPoint, EnumAltitudeMode.Absolute);//, 0, 0, 1000); - } - else - { - globeControl1.Globe.FlyToFeature(feature); - } - } - } else if (layerTree.SelectedNode.Tag is GSOFeature) - { - GSOFeature feature = layerTree.SelectedNode.Tag as GSOFeature; + GSOFeature feature = node.Tag as GSOFeature; if (feature.Geometry != null) { globeControl1.Globe.FlyToPosition(feature.Geometry.GeoCenterPoint, EnumAltitudeMode.Absolute, 0, 0, 10); @@ -2144,15 +2181,7 @@ int idx = dataGridViewX2.Rows.Add(); dataGridViewX2.Rows[idx].Tag = feat; dataGridViewX2.Rows[idx].Cells[0].Value = resLayer.Caption; - string featureName; - if (isFeatureContainsBianhao(feat)) - { - featureName = feat.GetValue(featureIDFieldName).ToString(); - } - else - { - featureName = feat.Name; - } + var featureName = isFeatureContainsBianhao(feat) ? feat.GetValue(featureIDFieldName).ToString() : feat.Name; dataGridViewX2.Rows[idx].Cells[1].Value = featureName; } } @@ -2174,15 +2203,7 @@ int idx = dataGridViewLineList.Rows.Add(); dataGridViewLineList.Rows[idx].Tag = feat; dataGridViewLineList.Rows[idx].Cells[0].Value = resLayer.Caption; - string featureName; - if (isFeatureContainsBianhao(feat)) - { - featureName = feat.GetValue(featureIDFieldName).ToString(); - } - else - { - featureName = feat.Name; - } + var featureName = isFeatureContainsBianhao(feat) ? feat.GetValue(featureIDFieldName).ToString() : feat.Name; dataGridViewLineList.Rows[idx].Cells[1].Value = featureName; } } @@ -2204,15 +2225,7 @@ int idx = dataGridViewX8.Rows.Add(); dataGridViewX8.Rows[idx].Tag = feat; dataGridViewX8.Rows[idx].Cells[0].Value = resLayer.Caption; - string featureName; - if (isFeatureContainsBianhao(feat)) - { - featureName = feat.GetValue(featureIDFieldName).ToString(); - } - else - { - featureName = feat.Name; - } + var featureName = isFeatureContainsBianhao(feat) ? feat.GetValue(featureIDFieldName).ToString() : feat.Name; dataGridViewX8.Rows[idx].Cells[1].Value = featureName; } } @@ -2234,15 +2247,7 @@ int idx = dataGridViewX4.Rows.Add(); dataGridViewX4.Rows[idx].Tag = feat; dataGridViewX4.Rows[idx].Cells[0].Value = resLayer.Caption; - string featureName; - if (isFeatureContainsBianhao(feat)) - { - featureName = feat.GetValue(featureIDFieldName).ToString(); - } - else - { - featureName = feat.Name; - } + var featureName = isFeatureContainsBianhao(feat) ? feat.GetValue(featureIDFieldName).ToString() : feat.Name; dataGridViewX4.Rows[idx].Cells[1].Value = featureName; } @@ -2266,15 +2271,7 @@ int idx = dataGridViewX6.Rows.Add(); dataGridViewX6.Rows[idx].Tag = feat; dataGridViewX6.Rows[idx].Cells[0].Value = resLayer.Caption; - string featureName; - if (isFeatureContainsBianhao(feat)) - { - featureName = feat.GetValue(featureIDFieldName).ToString(); - } - else - { - featureName = feat.Name; - } + var featureName = isFeatureContainsBianhao(feat) ? feat.GetValue(featureIDFieldName).ToString() : feat.Name; dataGridViewX6.Rows[idx].Cells[1].Value = featureName; } } @@ -2649,9 +2646,6 @@ return str; } - //string filename = Utility.filename; - //List g1layername = new List(); - /// /// 获取目标图层 /// @@ -2661,9 +2655,9 @@ TreeNode featureAddPipeFitTreenode = GetDestLayerFeatureAddTreeNode(); GSOLayer featureAddLayer = globeControl1.Globe.Layers.GetLayerByCaption(featureAddPipeFitTreenode.Tag.ToString().Split('|')[1]); - return featureAddLayer != null ? featureAddLayer : null; + return featureAddLayer; } - + //TODO LIST: wxl11? 待更正,Node的Tag现在都已经统一为gsolayer对象了 private TreeNode GetDestLayerFeatureAddTreeNode() { for (int i = 0; i < layerTree.Nodes.Count; i++) @@ -3134,6 +3128,7 @@ } } } + //TODO LIST: wxl? Tag更正 /// /// 图层目录树 右键菜单中的 目标图层 菜单 /// @@ -3141,14 +3136,15 @@ /// private void FeatureAddLayerMenuItem_Click(object sender, EventArgs e) { - if (!FeatureAddLayerMenuItem.Checked) - { - TreeNode node = layerNodeContexMenu.Tag as TreeNode; - FeatureAddLayerMenuItem.Checked = true; - GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(node.Tag.ToString().Split('|')[1]); - globeControl1.Globe.DestLayerFeatureAdd = layer; - } + if (FeatureAddLayerMenuItem.Checked) return; + TreeNode node = layerNodeContexMenu.Tag as TreeNode; + FeatureAddLayerMenuItem.Checked = true; +// GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(node.Tag.ToString().Split('|')[1]); + if (node == null) return; + GSOLayer layer = node.Tag as GSOLayer; + globeControl1.Globe.DestLayerFeatureAdd = layer; } + //TODO LIST: wxl? Tag更正 /// /// 图层目录树 右键菜单中的 可选择 菜单 /// @@ -3157,11 +3153,13 @@ private void LayerSelectableMenuItem_Click(object sender, EventArgs e) { TreeNode node = layerNodeContexMenu.Tag as TreeNode; - Int32 nIndex = node.Index; - GSOLayer layer = globeControl1.Globe.Layers[nIndex]; +// GSOLayer layer = globeControl1.Globe.Layers[nIndex]; + if (node == null) return; + GSOLayer layer = node.Tag as GSOLayer; LayerSelectableMenuItem.Checked = !LayerSelectableMenuItem.Checked; - layer.Selectable = LayerSelectableMenuItem.Checked; + if (layer != null) layer.Selectable = LayerSelectableMenuItem.Checked; } + //TODO LIST: wxl? Tag更正 /// /// 图层目录树 右键菜单中的 可编辑 菜单 /// @@ -3170,22 +3168,27 @@ private void LayerEditableMenuItem_Click(object sender, EventArgs e) { TreeNode node = layerNodeContexMenu.Tag as TreeNode; - GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(node.Tag.ToString().Split('|')[1]); +// GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(node.Tag.ToString().Split('|')[1]); + if (node == null) return; + GSOLayer layer = node.Tag as GSOLayer; LayerEditableMenuItem.Checked = !LayerEditableMenuItem.Checked; - layer.Editable = LayerEditableMenuItem.Checked; + if (layer != null) layer.Editable = LayerEditableMenuItem.Checked; } /// /// 图层目录树 右键菜单中的 保存 菜单 /// /// /// + //TODO LIST: wxl? Tag更正 private void SaveLayerMenuItem_Click(object sender, EventArgs e) { TreeNode node = layerNodeContexMenu.Tag as TreeNode; - string layerCaption = node.Tag.ToString().Split('|')[1]; - GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(layerCaption); - layer.Dataset.Save(); +// string layerCaption = node.Tag.ToString().Split('|')[1]; +// GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(layerCaption); + if (node == null) return; + GSOLayer layer = node.Tag as GSOLayer; + if (layer != null) layer.Dataset.Save(); } #region wxl feature的公共方法 diff --git a/bin/x86/Debug/Cyberpipe.exe b/bin/x86/Debug/Cyberpipe.exe index 5030278..a971672 100644 --- a/bin/x86/Debug/Cyberpipe.exe +++ b/bin/x86/Debug/Cyberpipe.exe Binary files differ diff --git a/bin/x86/Debug/Cyberpipe.pdb b/bin/x86/Debug/Cyberpipe.pdb index f364c19..b343c0d 100644 --- a/bin/x86/Debug/Cyberpipe.pdb +++ b/bin/x86/Debug/Cyberpipe.pdb Binary files differ