diff --git a/Cyberpipe.suo b/Cyberpipe.suo index 14fb638..f12e10e 100644 --- a/Cyberpipe.suo +++ b/Cyberpipe.suo Binary files differ diff --git a/Cyberpipe.suo b/Cyberpipe.suo index 14fb638..f12e10e 100644 --- a/Cyberpipe.suo +++ b/Cyberpipe.suo Binary files differ diff --git a/MainFrm.cs b/MainFrm.cs index d78e97b..77d2e86 100644 --- a/MainFrm.cs +++ b/MainFrm.cs @@ -2,7 +2,6 @@ using System.Collections; using System.Collections.Generic; using System.Data; -using System.Data.OracleClient; using System.Diagnostics; using System.Drawing; using System.Drawing.Imaging; @@ -13,7 +12,6 @@ using System.Text; using System.Threading; using System.Windows.Forms; -using System.Xml; using Cyberpipe.Forms; using DevComponents.DotNetBar; using GeoScene.Data; @@ -2650,70 +2648,100 @@ /// 获取目标图层 /// /// +// private GSOLayer TreeNodeFeatureLayer() +// { +// TreeNode featureAddPipeFitTreenode = GetDestLayerFeatureAddTreeNode(); +// GSOLayer featureAddLayer = globeControl1.Globe.Layers.GetLayerByCaption(featureAddPipeFitTreenode.Tag.ToString().Split('|')[1]); +// +// return featureAddLayer; +// } + //TODO LIST: wxl11? 待更正,Node的Tag现在都已经统一为gsolayer对象了 +// private TreeNode GetDestLayerFeatureAddTreeNode() +// { +// for (int i = 0; i < layerTree.Nodes.Count; i++) +// { +// TreeNode tempNode = layerTree.Nodes[i]; +// for (int j = 0; j < tempNode.Nodes.Count; j++) +// { +// TreeNode tempChildNode = tempNode.Nodes[j]; +// if (tempChildNode.Tag.ToString().Split('|').Length > 1) // Config配置文件配置的图层 +// {//本层节点Tag记录layer +// GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(tempChildNode.Tag.ToString().Split('|')[1]); +// if (layer == null) +// { +// continue; +// } +// if (tempChildNode.Tag != null && layer.IsDestLayerFeatureAdd()) +// { +// return tempChildNode; +// } +// } +// else //临时添加的本地图层 +// {//子层节点的Tag记录layer +// for (int m = 0; m < tempChildNode.Nodes.Count; m++) +// { +// TreeNode tempChildNode1 = tempChildNode.Nodes[m]; +// if (tempChildNode1.Tag.ToString().Split('|').Length > 1) +// { +// GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(tempChildNode1.Tag.ToString().Split('|')[1]); +// if (layer == null) +// { +// continue; +// } +// if (tempChildNode1.Tag != null && layer.IsDestLayerFeatureAdd()) +// { +// return tempChildNode1; +// } +// } +// else +// { +// for (int n = 0; n < tempChildNode1.Nodes.Count; n++) +// { +// TreeNode tempChildNode2 = tempChildNode1.Nodes[n]; +// if (tempChildNode2.Tag.ToString().Split('|').Length <= 1) continue; +// GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(tempChildNode2.Tag.ToString().Split('|')[1]); +// if (layer == null) +// { +// continue; +// } +// if (tempChildNode2.Tag != null && layer.IsDestLayerFeatureAdd()) +// { +// return tempChildNode2; +// } +// } +// } +// } +// } +// } +// } +// return null; +// } private GSOLayer TreeNodeFeatureLayer() { TreeNode featureAddPipeFitTreenode = GetDestLayerFeatureAddTreeNode(); - GSOLayer featureAddLayer = globeControl1.Globe.Layers.GetLayerByCaption(featureAddPipeFitTreenode.Tag.ToString().Split('|')[1]); - + if (featureAddPipeFitTreenode == null) return null; + GSOLayer featureAddLayer = featureAddPipeFitTreenode.Tag as GSOLayer; return featureAddLayer; } - //TODO LIST: wxl11? 待更正,Node的Tag现在都已经统一为gsolayer对象了 + //遍历最深三层找到目标node. private TreeNode GetDestLayerFeatureAddTreeNode() { - for (int i = 0; i < layerTree.Nodes.Count; i++) + + foreach (TreeNode layerTreeNode in layerTree.Nodes) { - TreeNode tempNode = layerTree.Nodes[i]; - for (int j = 0; j < tempNode.Nodes.Count; j++) + if (layerTreeNode.Tag == null && layerTreeNode.Nodes.Count > 0) { - TreeNode tempChildNode = tempNode.Nodes[j]; - if (tempChildNode.Tag.ToString().Split('|').Length > 1) // Config配置文件配置的图层 + foreach (TreeNode node in layerTreeNode.Nodes) { - GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(tempChildNode.Tag.ToString().Split('|')[1]); - if (layer == null) - { - continue; - } - if (tempChildNode.Tag != null && layer.IsDestLayerFeatureAdd()) - { - return tempChildNode; - } + GSOLayer gsoLayer = node.Tag as GSOLayer; + if (gsoLayer != null && gsoLayer.IsDestLayerFeatureAdd()) return node; + } - else //临时添加的本地图层 - { - for (int m = 0; m < tempChildNode.Nodes.Count; m++) - { - TreeNode tempChildNode1 = tempChildNode.Nodes[m]; - if (tempChildNode1.Tag.ToString().Split('|').Length > 1) - { - GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(tempChildNode1.Tag.ToString().Split('|')[1]); - if (layer == null) - { - continue; - } - if (tempChildNode1.Tag != null && layer.IsDestLayerFeatureAdd()) - { - return tempChildNode1; - } - } - else - { - for (int n = 0; n < tempChildNode1.Nodes.Count; n++) - { - TreeNode tempChildNode2 = tempChildNode1.Nodes[n]; - if (tempChildNode2.Tag.ToString().Split('|').Length <= 1) continue; - GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(tempChildNode2.Tag.ToString().Split('|')[1]); - if (layer == null) - { - continue; - } - if (tempChildNode2.Tag != null && layer.IsDestLayerFeatureAdd()) - { - return tempChildNode2; - } - } - } - } - } + } + else + { + GSOLayer gsoLayer = layerTreeNode.Tag as GSOLayer; + if (gsoLayer != null && gsoLayer.IsDestLayerFeatureAdd()) return layerTreeNode; } } return null; diff --git a/Cyberpipe.suo b/Cyberpipe.suo index 14fb638..f12e10e 100644 --- a/Cyberpipe.suo +++ b/Cyberpipe.suo Binary files differ diff --git a/MainFrm.cs b/MainFrm.cs index d78e97b..77d2e86 100644 --- a/MainFrm.cs +++ b/MainFrm.cs @@ -2,7 +2,6 @@ using System.Collections; using System.Collections.Generic; using System.Data; -using System.Data.OracleClient; using System.Diagnostics; using System.Drawing; using System.Drawing.Imaging; @@ -13,7 +12,6 @@ using System.Text; using System.Threading; using System.Windows.Forms; -using System.Xml; using Cyberpipe.Forms; using DevComponents.DotNetBar; using GeoScene.Data; @@ -2650,70 +2648,100 @@ /// 获取目标图层 /// /// +// private GSOLayer TreeNodeFeatureLayer() +// { +// TreeNode featureAddPipeFitTreenode = GetDestLayerFeatureAddTreeNode(); +// GSOLayer featureAddLayer = globeControl1.Globe.Layers.GetLayerByCaption(featureAddPipeFitTreenode.Tag.ToString().Split('|')[1]); +// +// return featureAddLayer; +// } + //TODO LIST: wxl11? 待更正,Node的Tag现在都已经统一为gsolayer对象了 +// private TreeNode GetDestLayerFeatureAddTreeNode() +// { +// for (int i = 0; i < layerTree.Nodes.Count; i++) +// { +// TreeNode tempNode = layerTree.Nodes[i]; +// for (int j = 0; j < tempNode.Nodes.Count; j++) +// { +// TreeNode tempChildNode = tempNode.Nodes[j]; +// if (tempChildNode.Tag.ToString().Split('|').Length > 1) // Config配置文件配置的图层 +// {//本层节点Tag记录layer +// GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(tempChildNode.Tag.ToString().Split('|')[1]); +// if (layer == null) +// { +// continue; +// } +// if (tempChildNode.Tag != null && layer.IsDestLayerFeatureAdd()) +// { +// return tempChildNode; +// } +// } +// else //临时添加的本地图层 +// {//子层节点的Tag记录layer +// for (int m = 0; m < tempChildNode.Nodes.Count; m++) +// { +// TreeNode tempChildNode1 = tempChildNode.Nodes[m]; +// if (tempChildNode1.Tag.ToString().Split('|').Length > 1) +// { +// GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(tempChildNode1.Tag.ToString().Split('|')[1]); +// if (layer == null) +// { +// continue; +// } +// if (tempChildNode1.Tag != null && layer.IsDestLayerFeatureAdd()) +// { +// return tempChildNode1; +// } +// } +// else +// { +// for (int n = 0; n < tempChildNode1.Nodes.Count; n++) +// { +// TreeNode tempChildNode2 = tempChildNode1.Nodes[n]; +// if (tempChildNode2.Tag.ToString().Split('|').Length <= 1) continue; +// GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(tempChildNode2.Tag.ToString().Split('|')[1]); +// if (layer == null) +// { +// continue; +// } +// if (tempChildNode2.Tag != null && layer.IsDestLayerFeatureAdd()) +// { +// return tempChildNode2; +// } +// } +// } +// } +// } +// } +// } +// return null; +// } private GSOLayer TreeNodeFeatureLayer() { TreeNode featureAddPipeFitTreenode = GetDestLayerFeatureAddTreeNode(); - GSOLayer featureAddLayer = globeControl1.Globe.Layers.GetLayerByCaption(featureAddPipeFitTreenode.Tag.ToString().Split('|')[1]); - + if (featureAddPipeFitTreenode == null) return null; + GSOLayer featureAddLayer = featureAddPipeFitTreenode.Tag as GSOLayer; return featureAddLayer; } - //TODO LIST: wxl11? 待更正,Node的Tag现在都已经统一为gsolayer对象了 + //遍历最深三层找到目标node. private TreeNode GetDestLayerFeatureAddTreeNode() { - for (int i = 0; i < layerTree.Nodes.Count; i++) + + foreach (TreeNode layerTreeNode in layerTree.Nodes) { - TreeNode tempNode = layerTree.Nodes[i]; - for (int j = 0; j < tempNode.Nodes.Count; j++) + if (layerTreeNode.Tag == null && layerTreeNode.Nodes.Count > 0) { - TreeNode tempChildNode = tempNode.Nodes[j]; - if (tempChildNode.Tag.ToString().Split('|').Length > 1) // Config配置文件配置的图层 + foreach (TreeNode node in layerTreeNode.Nodes) { - GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(tempChildNode.Tag.ToString().Split('|')[1]); - if (layer == null) - { - continue; - } - if (tempChildNode.Tag != null && layer.IsDestLayerFeatureAdd()) - { - return tempChildNode; - } + GSOLayer gsoLayer = node.Tag as GSOLayer; + if (gsoLayer != null && gsoLayer.IsDestLayerFeatureAdd()) return node; + } - else //临时添加的本地图层 - { - for (int m = 0; m < tempChildNode.Nodes.Count; m++) - { - TreeNode tempChildNode1 = tempChildNode.Nodes[m]; - if (tempChildNode1.Tag.ToString().Split('|').Length > 1) - { - GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(tempChildNode1.Tag.ToString().Split('|')[1]); - if (layer == null) - { - continue; - } - if (tempChildNode1.Tag != null && layer.IsDestLayerFeatureAdd()) - { - return tempChildNode1; - } - } - else - { - for (int n = 0; n < tempChildNode1.Nodes.Count; n++) - { - TreeNode tempChildNode2 = tempChildNode1.Nodes[n]; - if (tempChildNode2.Tag.ToString().Split('|').Length <= 1) continue; - GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(tempChildNode2.Tag.ToString().Split('|')[1]); - if (layer == null) - { - continue; - } - if (tempChildNode2.Tag != null && layer.IsDestLayerFeatureAdd()) - { - return tempChildNode2; - } - } - } - } - } + } + else + { + GSOLayer gsoLayer = layerTreeNode.Tag as GSOLayer; + if (gsoLayer != null && gsoLayer.IsDestLayerFeatureAdd()) return layerTreeNode; } } return null; diff --git a/TreeUtils.cs b/TreeUtils.cs index 68c8b1d..571fa7c 100644 --- a/TreeUtils.cs +++ b/TreeUtils.cs @@ -3,6 +3,7 @@ using System.Linq; using System.Text; using System.Windows.Forms; +using GeoScene.Data; using GeoScene.Globe; namespace Cyberpipe @@ -18,7 +19,7 @@ public static void InitLayerTree(GSOGlobeControl gsoGlobeControl, TreeView treeView, string viewDatasrc) { // treeView.Nodes.Clear(); - LayerConfig layerConfig = Utility.layerConfig; + LayerConfig layerConfig = Utility.layerConfig;//layertree所在的配置文件 List datasrcs = layerConfig.datasrcs; foreach (DataSrc datasrc in datasrcs) { @@ -69,17 +70,22 @@ { if (node.Tag != null) { - if (node.Tag is GSOLayer) + if (node.Tag is GSOLayer)//图层 { GSOLayer layer = node.Tag as GSOLayer; layer.Visible = node.Checked; globeControl.Globe.Refresh(); } - else if (node.Tag is GSOTerrain) + else if (node.Tag is GSOTerrain)//地形 { GSOTerrain feat = node.Tag as GSOTerrain; feat.Visible = node.Checked; globeControl.Globe.Refresh(); + }else if (node.Tag is GSOFeature)//特征点 + { + GSOFeature feature = node.Tag as GSOFeature; + feature.Visible = node.Checked; + globeControl.Globe.Refresh(); } } @@ -110,6 +116,12 @@ feat.Visible = isChecked; globeControl.Globe.Refresh(); } + else if (childNode.Tag is GSOFeature) + { + GSOFeature feature = childNode.Tag as GSOFeature; + feature.Visible = childNode.Checked; + globeControl.Globe.Refresh(); + } if (childNode.Nodes.Count > 0) CheckChildrenNode(globeControl, childNode, isChecked); } diff --git a/Cyberpipe.suo b/Cyberpipe.suo index 14fb638..f12e10e 100644 --- a/Cyberpipe.suo +++ b/Cyberpipe.suo Binary files differ diff --git a/MainFrm.cs b/MainFrm.cs index d78e97b..77d2e86 100644 --- a/MainFrm.cs +++ b/MainFrm.cs @@ -2,7 +2,6 @@ using System.Collections; using System.Collections.Generic; using System.Data; -using System.Data.OracleClient; using System.Diagnostics; using System.Drawing; using System.Drawing.Imaging; @@ -13,7 +12,6 @@ using System.Text; using System.Threading; using System.Windows.Forms; -using System.Xml; using Cyberpipe.Forms; using DevComponents.DotNetBar; using GeoScene.Data; @@ -2650,70 +2648,100 @@ /// 获取目标图层 /// /// +// private GSOLayer TreeNodeFeatureLayer() +// { +// TreeNode featureAddPipeFitTreenode = GetDestLayerFeatureAddTreeNode(); +// GSOLayer featureAddLayer = globeControl1.Globe.Layers.GetLayerByCaption(featureAddPipeFitTreenode.Tag.ToString().Split('|')[1]); +// +// return featureAddLayer; +// } + //TODO LIST: wxl11? 待更正,Node的Tag现在都已经统一为gsolayer对象了 +// private TreeNode GetDestLayerFeatureAddTreeNode() +// { +// for (int i = 0; i < layerTree.Nodes.Count; i++) +// { +// TreeNode tempNode = layerTree.Nodes[i]; +// for (int j = 0; j < tempNode.Nodes.Count; j++) +// { +// TreeNode tempChildNode = tempNode.Nodes[j]; +// if (tempChildNode.Tag.ToString().Split('|').Length > 1) // Config配置文件配置的图层 +// {//本层节点Tag记录layer +// GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(tempChildNode.Tag.ToString().Split('|')[1]); +// if (layer == null) +// { +// continue; +// } +// if (tempChildNode.Tag != null && layer.IsDestLayerFeatureAdd()) +// { +// return tempChildNode; +// } +// } +// else //临时添加的本地图层 +// {//子层节点的Tag记录layer +// for (int m = 0; m < tempChildNode.Nodes.Count; m++) +// { +// TreeNode tempChildNode1 = tempChildNode.Nodes[m]; +// if (tempChildNode1.Tag.ToString().Split('|').Length > 1) +// { +// GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(tempChildNode1.Tag.ToString().Split('|')[1]); +// if (layer == null) +// { +// continue; +// } +// if (tempChildNode1.Tag != null && layer.IsDestLayerFeatureAdd()) +// { +// return tempChildNode1; +// } +// } +// else +// { +// for (int n = 0; n < tempChildNode1.Nodes.Count; n++) +// { +// TreeNode tempChildNode2 = tempChildNode1.Nodes[n]; +// if (tempChildNode2.Tag.ToString().Split('|').Length <= 1) continue; +// GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(tempChildNode2.Tag.ToString().Split('|')[1]); +// if (layer == null) +// { +// continue; +// } +// if (tempChildNode2.Tag != null && layer.IsDestLayerFeatureAdd()) +// { +// return tempChildNode2; +// } +// } +// } +// } +// } +// } +// } +// return null; +// } private GSOLayer TreeNodeFeatureLayer() { TreeNode featureAddPipeFitTreenode = GetDestLayerFeatureAddTreeNode(); - GSOLayer featureAddLayer = globeControl1.Globe.Layers.GetLayerByCaption(featureAddPipeFitTreenode.Tag.ToString().Split('|')[1]); - + if (featureAddPipeFitTreenode == null) return null; + GSOLayer featureAddLayer = featureAddPipeFitTreenode.Tag as GSOLayer; return featureAddLayer; } - //TODO LIST: wxl11? 待更正,Node的Tag现在都已经统一为gsolayer对象了 + //遍历最深三层找到目标node. private TreeNode GetDestLayerFeatureAddTreeNode() { - for (int i = 0; i < layerTree.Nodes.Count; i++) + + foreach (TreeNode layerTreeNode in layerTree.Nodes) { - TreeNode tempNode = layerTree.Nodes[i]; - for (int j = 0; j < tempNode.Nodes.Count; j++) + if (layerTreeNode.Tag == null && layerTreeNode.Nodes.Count > 0) { - TreeNode tempChildNode = tempNode.Nodes[j]; - if (tempChildNode.Tag.ToString().Split('|').Length > 1) // Config配置文件配置的图层 + foreach (TreeNode node in layerTreeNode.Nodes) { - GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(tempChildNode.Tag.ToString().Split('|')[1]); - if (layer == null) - { - continue; - } - if (tempChildNode.Tag != null && layer.IsDestLayerFeatureAdd()) - { - return tempChildNode; - } + GSOLayer gsoLayer = node.Tag as GSOLayer; + if (gsoLayer != null && gsoLayer.IsDestLayerFeatureAdd()) return node; + } - else //临时添加的本地图层 - { - for (int m = 0; m < tempChildNode.Nodes.Count; m++) - { - TreeNode tempChildNode1 = tempChildNode.Nodes[m]; - if (tempChildNode1.Tag.ToString().Split('|').Length > 1) - { - GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(tempChildNode1.Tag.ToString().Split('|')[1]); - if (layer == null) - { - continue; - } - if (tempChildNode1.Tag != null && layer.IsDestLayerFeatureAdd()) - { - return tempChildNode1; - } - } - else - { - for (int n = 0; n < tempChildNode1.Nodes.Count; n++) - { - TreeNode tempChildNode2 = tempChildNode1.Nodes[n]; - if (tempChildNode2.Tag.ToString().Split('|').Length <= 1) continue; - GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(tempChildNode2.Tag.ToString().Split('|')[1]); - if (layer == null) - { - continue; - } - if (tempChildNode2.Tag != null && layer.IsDestLayerFeatureAdd()) - { - return tempChildNode2; - } - } - } - } - } + } + else + { + GSOLayer gsoLayer = layerTreeNode.Tag as GSOLayer; + if (gsoLayer != null && gsoLayer.IsDestLayerFeatureAdd()) return layerTreeNode; } } return null; diff --git a/TreeUtils.cs b/TreeUtils.cs index 68c8b1d..571fa7c 100644 --- a/TreeUtils.cs +++ b/TreeUtils.cs @@ -3,6 +3,7 @@ using System.Linq; using System.Text; using System.Windows.Forms; +using GeoScene.Data; using GeoScene.Globe; namespace Cyberpipe @@ -18,7 +19,7 @@ public static void InitLayerTree(GSOGlobeControl gsoGlobeControl, TreeView treeView, string viewDatasrc) { // treeView.Nodes.Clear(); - LayerConfig layerConfig = Utility.layerConfig; + LayerConfig layerConfig = Utility.layerConfig;//layertree所在的配置文件 List datasrcs = layerConfig.datasrcs; foreach (DataSrc datasrc in datasrcs) { @@ -69,17 +70,22 @@ { if (node.Tag != null) { - if (node.Tag is GSOLayer) + if (node.Tag is GSOLayer)//图层 { GSOLayer layer = node.Tag as GSOLayer; layer.Visible = node.Checked; globeControl.Globe.Refresh(); } - else if (node.Tag is GSOTerrain) + else if (node.Tag is GSOTerrain)//地形 { GSOTerrain feat = node.Tag as GSOTerrain; feat.Visible = node.Checked; globeControl.Globe.Refresh(); + }else if (node.Tag is GSOFeature)//特征点 + { + GSOFeature feature = node.Tag as GSOFeature; + feature.Visible = node.Checked; + globeControl.Globe.Refresh(); } } @@ -110,6 +116,12 @@ feat.Visible = isChecked; globeControl.Globe.Refresh(); } + else if (childNode.Tag is GSOFeature) + { + GSOFeature feature = childNode.Tag as GSOFeature; + feature.Visible = childNode.Checked; + globeControl.Globe.Refresh(); + } if (childNode.Nodes.Count > 0) CheckChildrenNode(globeControl, childNode, isChecked); } diff --git a/bin/x86/Debug/Cyberpipe.exe b/bin/x86/Debug/Cyberpipe.exe index a971672..53a3047 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 14fb638..f12e10e 100644 --- a/Cyberpipe.suo +++ b/Cyberpipe.suo Binary files differ diff --git a/MainFrm.cs b/MainFrm.cs index d78e97b..77d2e86 100644 --- a/MainFrm.cs +++ b/MainFrm.cs @@ -2,7 +2,6 @@ using System.Collections; using System.Collections.Generic; using System.Data; -using System.Data.OracleClient; using System.Diagnostics; using System.Drawing; using System.Drawing.Imaging; @@ -13,7 +12,6 @@ using System.Text; using System.Threading; using System.Windows.Forms; -using System.Xml; using Cyberpipe.Forms; using DevComponents.DotNetBar; using GeoScene.Data; @@ -2650,70 +2648,100 @@ /// 获取目标图层 /// /// +// private GSOLayer TreeNodeFeatureLayer() +// { +// TreeNode featureAddPipeFitTreenode = GetDestLayerFeatureAddTreeNode(); +// GSOLayer featureAddLayer = globeControl1.Globe.Layers.GetLayerByCaption(featureAddPipeFitTreenode.Tag.ToString().Split('|')[1]); +// +// return featureAddLayer; +// } + //TODO LIST: wxl11? 待更正,Node的Tag现在都已经统一为gsolayer对象了 +// private TreeNode GetDestLayerFeatureAddTreeNode() +// { +// for (int i = 0; i < layerTree.Nodes.Count; i++) +// { +// TreeNode tempNode = layerTree.Nodes[i]; +// for (int j = 0; j < tempNode.Nodes.Count; j++) +// { +// TreeNode tempChildNode = tempNode.Nodes[j]; +// if (tempChildNode.Tag.ToString().Split('|').Length > 1) // Config配置文件配置的图层 +// {//本层节点Tag记录layer +// GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(tempChildNode.Tag.ToString().Split('|')[1]); +// if (layer == null) +// { +// continue; +// } +// if (tempChildNode.Tag != null && layer.IsDestLayerFeatureAdd()) +// { +// return tempChildNode; +// } +// } +// else //临时添加的本地图层 +// {//子层节点的Tag记录layer +// for (int m = 0; m < tempChildNode.Nodes.Count; m++) +// { +// TreeNode tempChildNode1 = tempChildNode.Nodes[m]; +// if (tempChildNode1.Tag.ToString().Split('|').Length > 1) +// { +// GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(tempChildNode1.Tag.ToString().Split('|')[1]); +// if (layer == null) +// { +// continue; +// } +// if (tempChildNode1.Tag != null && layer.IsDestLayerFeatureAdd()) +// { +// return tempChildNode1; +// } +// } +// else +// { +// for (int n = 0; n < tempChildNode1.Nodes.Count; n++) +// { +// TreeNode tempChildNode2 = tempChildNode1.Nodes[n]; +// if (tempChildNode2.Tag.ToString().Split('|').Length <= 1) continue; +// GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(tempChildNode2.Tag.ToString().Split('|')[1]); +// if (layer == null) +// { +// continue; +// } +// if (tempChildNode2.Tag != null && layer.IsDestLayerFeatureAdd()) +// { +// return tempChildNode2; +// } +// } +// } +// } +// } +// } +// } +// return null; +// } private GSOLayer TreeNodeFeatureLayer() { TreeNode featureAddPipeFitTreenode = GetDestLayerFeatureAddTreeNode(); - GSOLayer featureAddLayer = globeControl1.Globe.Layers.GetLayerByCaption(featureAddPipeFitTreenode.Tag.ToString().Split('|')[1]); - + if (featureAddPipeFitTreenode == null) return null; + GSOLayer featureAddLayer = featureAddPipeFitTreenode.Tag as GSOLayer; return featureAddLayer; } - //TODO LIST: wxl11? 待更正,Node的Tag现在都已经统一为gsolayer对象了 + //遍历最深三层找到目标node. private TreeNode GetDestLayerFeatureAddTreeNode() { - for (int i = 0; i < layerTree.Nodes.Count; i++) + + foreach (TreeNode layerTreeNode in layerTree.Nodes) { - TreeNode tempNode = layerTree.Nodes[i]; - for (int j = 0; j < tempNode.Nodes.Count; j++) + if (layerTreeNode.Tag == null && layerTreeNode.Nodes.Count > 0) { - TreeNode tempChildNode = tempNode.Nodes[j]; - if (tempChildNode.Tag.ToString().Split('|').Length > 1) // Config配置文件配置的图层 + foreach (TreeNode node in layerTreeNode.Nodes) { - GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(tempChildNode.Tag.ToString().Split('|')[1]); - if (layer == null) - { - continue; - } - if (tempChildNode.Tag != null && layer.IsDestLayerFeatureAdd()) - { - return tempChildNode; - } + GSOLayer gsoLayer = node.Tag as GSOLayer; + if (gsoLayer != null && gsoLayer.IsDestLayerFeatureAdd()) return node; + } - else //临时添加的本地图层 - { - for (int m = 0; m < tempChildNode.Nodes.Count; m++) - { - TreeNode tempChildNode1 = tempChildNode.Nodes[m]; - if (tempChildNode1.Tag.ToString().Split('|').Length > 1) - { - GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(tempChildNode1.Tag.ToString().Split('|')[1]); - if (layer == null) - { - continue; - } - if (tempChildNode1.Tag != null && layer.IsDestLayerFeatureAdd()) - { - return tempChildNode1; - } - } - else - { - for (int n = 0; n < tempChildNode1.Nodes.Count; n++) - { - TreeNode tempChildNode2 = tempChildNode1.Nodes[n]; - if (tempChildNode2.Tag.ToString().Split('|').Length <= 1) continue; - GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(tempChildNode2.Tag.ToString().Split('|')[1]); - if (layer == null) - { - continue; - } - if (tempChildNode2.Tag != null && layer.IsDestLayerFeatureAdd()) - { - return tempChildNode2; - } - } - } - } - } + } + else + { + GSOLayer gsoLayer = layerTreeNode.Tag as GSOLayer; + if (gsoLayer != null && gsoLayer.IsDestLayerFeatureAdd()) return layerTreeNode; } } return null; diff --git a/TreeUtils.cs b/TreeUtils.cs index 68c8b1d..571fa7c 100644 --- a/TreeUtils.cs +++ b/TreeUtils.cs @@ -3,6 +3,7 @@ using System.Linq; using System.Text; using System.Windows.Forms; +using GeoScene.Data; using GeoScene.Globe; namespace Cyberpipe @@ -18,7 +19,7 @@ public static void InitLayerTree(GSOGlobeControl gsoGlobeControl, TreeView treeView, string viewDatasrc) { // treeView.Nodes.Clear(); - LayerConfig layerConfig = Utility.layerConfig; + LayerConfig layerConfig = Utility.layerConfig;//layertree所在的配置文件 List datasrcs = layerConfig.datasrcs; foreach (DataSrc datasrc in datasrcs) { @@ -69,17 +70,22 @@ { if (node.Tag != null) { - if (node.Tag is GSOLayer) + if (node.Tag is GSOLayer)//图层 { GSOLayer layer = node.Tag as GSOLayer; layer.Visible = node.Checked; globeControl.Globe.Refresh(); } - else if (node.Tag is GSOTerrain) + else if (node.Tag is GSOTerrain)//地形 { GSOTerrain feat = node.Tag as GSOTerrain; feat.Visible = node.Checked; globeControl.Globe.Refresh(); + }else if (node.Tag is GSOFeature)//特征点 + { + GSOFeature feature = node.Tag as GSOFeature; + feature.Visible = node.Checked; + globeControl.Globe.Refresh(); } } @@ -110,6 +116,12 @@ feat.Visible = isChecked; globeControl.Globe.Refresh(); } + else if (childNode.Tag is GSOFeature) + { + GSOFeature feature = childNode.Tag as GSOFeature; + feature.Visible = childNode.Checked; + globeControl.Globe.Refresh(); + } if (childNode.Nodes.Count > 0) CheckChildrenNode(globeControl, childNode, isChecked); } diff --git a/bin/x86/Debug/Cyberpipe.exe b/bin/x86/Debug/Cyberpipe.exe index a971672..53a3047 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 b343c0d..ffbe36f 100644 --- a/bin/x86/Debug/Cyberpipe.pdb +++ b/bin/x86/Debug/Cyberpipe.pdb Binary files differ