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