diff --git a/Cyberpipe.csproj b/Cyberpipe.csproj
index 90b9430..e2296fd 100644
--- a/Cyberpipe.csproj
+++ b/Cyberpipe.csproj
@@ -1755,7 +1755,6 @@
Reference.cs
-
diff --git a/Cyberpipe.csproj b/Cyberpipe.csproj
index 90b9430..e2296fd 100644
--- a/Cyberpipe.csproj
+++ b/Cyberpipe.csproj
@@ -1755,7 +1755,6 @@
Reference.cs
-
diff --git a/Cyberpipe.suo b/Cyberpipe.suo
index 5051375..79cd7cf 100644
--- a/Cyberpipe.suo
+++ b/Cyberpipe.suo
Binary files differ
diff --git a/Cyberpipe.csproj b/Cyberpipe.csproj
index 90b9430..e2296fd 100644
--- a/Cyberpipe.csproj
+++ b/Cyberpipe.csproj
@@ -1755,7 +1755,6 @@
Reference.cs
-
diff --git a/Cyberpipe.suo b/Cyberpipe.suo
index 5051375..79cd7cf 100644
--- a/Cyberpipe.suo
+++ b/Cyberpipe.suo
Binary files differ
diff --git a/MainFrm.cs b/MainFrm.cs
index a99f2e1..fa00b8f 100644
--- a/MainFrm.cs
+++ b/MainFrm.cs
@@ -1348,73 +1348,6 @@
}
}
- private void VisitFeature3Ds(GSOFeatures feature3ds, TreeNode node)
- {
- for (int i = 0; i < feature3ds.Length; i++)
- {
- GSOFeature feature = feature3ds[i];
- if (feature.Type == EnumFeatureType.FeatureFolder)
- {
- TreeNode tempnode = new TreeNode();
- tempnode.Text = feature.Name;
- tempnode.ImageIndex = 1;
- tempnode.SelectedImageIndex = 1;
- tempnode.Checked = node.Checked && feature.Visible;
- tempnode.Tag = feature;
- node.Nodes.Add(tempnode);
- GSOFeatureFolder featureFolder = (GSOFeatureFolder)feature;
- VisitFeature3Ds(featureFolder.Features, tempnode);
- }
- else
- {
- TreeNode tempnode = new TreeNode { Text = feature.Name };
- if (feature.Geometry != null)
- {
- switch (feature.Geometry.Type)
- {
- case EnumGeometryType.GeoPoint3D:
- case EnumGeometryType.GeoMarker:
- tempnode.ImageIndex = 3;
- tempnode.SelectedImageIndex = 3;
- break;
- case EnumGeometryType.GeoPolyline3D:
- tempnode.ImageIndex = 4;
- tempnode.SelectedImageIndex = 4;
- break;
- case EnumGeometryType.GeoPolygon3D:
- tempnode.ImageIndex = 5;
- tempnode.SelectedImageIndex = 5;
- break;
- case EnumGeometryType.GeoModel:
- case EnumGeometryType.GeoEntity:
- case EnumGeometryType.GeoGroupEntity:
- case EnumGeometryType.GeoSphereEntity:
- case EnumGeometryType.GeoBoxEntity:
- case EnumGeometryType.GeoEllipsoidEntity:
- case EnumGeometryType.GeoCylinderEntity:
- case EnumGeometryType.GeoFrustumEntity:
- case EnumGeometryType.GeoEllipCylinderEntity:
- case EnumGeometryType.GeoEllipFrustumEntity:
- case EnumGeometryType.GeoRangeEllipsoidEntity:
- case EnumGeometryType.GeoRangeEllipCylinderEntity:
- case EnumGeometryType.GeoRangeEllipFrustumEntity:
- tempnode.ImageIndex = 6;
- tempnode.SelectedImageIndex = 6;
- break;
- case EnumGeometryType.GeoGroundOverlay:
- tempnode.ImageIndex = 7;
- tempnode.SelectedImageIndex = 7;
- break;
- }
- }
-
- tempnode.Checked = node.Checked && feature.Visible;
- tempnode.Tag = feature;
- node.Nodes.Add(tempnode);
- }
- }
- }
-
///
/// 检查数据集是否有坐标系信息(待完善)
///
@@ -4857,7 +4790,7 @@
objRes = layer;
if (layer == null) return objRes;
CheckDatasetGeoReference(layer.Dataset, strDataPath);
- CheckDatasetGeoReference(layer.Dataset, strDataPath);
+// CheckDatasetGeoReference(layer.Dataset, strDataPath);
TreeNode node = new TreeNode();
node.Tag = layer;
node.Text = layer.Dataset.Caption;
@@ -4914,17 +4847,17 @@
{
if (layer == null) return;
CheckDatasetGeoReference(layer.Dataset, "");
-
- TreeNode node = new TreeNode();
- node.Tag = layer;
- node.Text = layer.Dataset.Caption;
- node.ImageIndex = 0;
- node.SelectedImageIndex = 0;
- node.Checked = layer.Visible;
-
- if (layerManagerNode.Nodes.Contains(node)) return;
- layerManagerNode.Nodes.Insert(0, node);
- layerManagerNode.Expand();
+ TreeUtils.AddNodeToManagerNode(layerManagerNode,layer);
+// TreeNode node = new TreeNode();
+// node.Tag = layer;
+// node.Text = layer.Dataset.Caption;
+// node.ImageIndex = 0;
+// node.SelectedImageIndex = 0;
+// node.Checked = layer.Visible;
+//
+// if (layerManagerNode.Nodes.Contains(node)) return;
+// layerManagerNode.Nodes.Insert(0, node);
+// layerManagerNode.Expand();
}
///
@@ -4977,22 +4910,13 @@
if (parentNode.Text.Equals("标注管理") || parentNode.Text.Equals("传感器管理"))
{
- RefreshTreeNodeLayerFeatureList(node);
- }
- }
-
- ///
- /// 给指定的图层节点添加代表feature对象的子节点
- ///
- ///
- private void RefreshTreeNodeLayerFeatureList(TreeNode layerTreeNode)
- {
- layerTreeNode.Nodes.Clear();
- GSOLayer layer = (GSOLayer)layerTreeNode.Tag;
- // 只将类型为内存数据集的图层列出,如果是其它类型的数据集可能数据量太大,没发显示在树控件中
- if (layer.Dataset is GSOFeatureDataset)
- {
- VisitFeature3Ds(layer.GetAllFeatures(), layerTreeNode);
+ node.Nodes.Clear();
+ GSOLayer layer = (GSOLayer)node.Tag;
+ // 只将类型为内存数据集的图层列出,如果是其它类型的数据集可能数据量太大,没发显示在树控件中
+ if (layer.Dataset is GSOFeatureDataset)
+ {
+ TreeUtils.AddNodesMatchFeatures(node,layer.GetAllFeatures());
+ }
}
}
diff --git a/Cyberpipe.csproj b/Cyberpipe.csproj
index 90b9430..e2296fd 100644
--- a/Cyberpipe.csproj
+++ b/Cyberpipe.csproj
@@ -1755,7 +1755,6 @@
Reference.cs
-
diff --git a/Cyberpipe.suo b/Cyberpipe.suo
index 5051375..79cd7cf 100644
--- a/Cyberpipe.suo
+++ b/Cyberpipe.suo
Binary files differ
diff --git a/MainFrm.cs b/MainFrm.cs
index a99f2e1..fa00b8f 100644
--- a/MainFrm.cs
+++ b/MainFrm.cs
@@ -1348,73 +1348,6 @@
}
}
- private void VisitFeature3Ds(GSOFeatures feature3ds, TreeNode node)
- {
- for (int i = 0; i < feature3ds.Length; i++)
- {
- GSOFeature feature = feature3ds[i];
- if (feature.Type == EnumFeatureType.FeatureFolder)
- {
- TreeNode tempnode = new TreeNode();
- tempnode.Text = feature.Name;
- tempnode.ImageIndex = 1;
- tempnode.SelectedImageIndex = 1;
- tempnode.Checked = node.Checked && feature.Visible;
- tempnode.Tag = feature;
- node.Nodes.Add(tempnode);
- GSOFeatureFolder featureFolder = (GSOFeatureFolder)feature;
- VisitFeature3Ds(featureFolder.Features, tempnode);
- }
- else
- {
- TreeNode tempnode = new TreeNode { Text = feature.Name };
- if (feature.Geometry != null)
- {
- switch (feature.Geometry.Type)
- {
- case EnumGeometryType.GeoPoint3D:
- case EnumGeometryType.GeoMarker:
- tempnode.ImageIndex = 3;
- tempnode.SelectedImageIndex = 3;
- break;
- case EnumGeometryType.GeoPolyline3D:
- tempnode.ImageIndex = 4;
- tempnode.SelectedImageIndex = 4;
- break;
- case EnumGeometryType.GeoPolygon3D:
- tempnode.ImageIndex = 5;
- tempnode.SelectedImageIndex = 5;
- break;
- case EnumGeometryType.GeoModel:
- case EnumGeometryType.GeoEntity:
- case EnumGeometryType.GeoGroupEntity:
- case EnumGeometryType.GeoSphereEntity:
- case EnumGeometryType.GeoBoxEntity:
- case EnumGeometryType.GeoEllipsoidEntity:
- case EnumGeometryType.GeoCylinderEntity:
- case EnumGeometryType.GeoFrustumEntity:
- case EnumGeometryType.GeoEllipCylinderEntity:
- case EnumGeometryType.GeoEllipFrustumEntity:
- case EnumGeometryType.GeoRangeEllipsoidEntity:
- case EnumGeometryType.GeoRangeEllipCylinderEntity:
- case EnumGeometryType.GeoRangeEllipFrustumEntity:
- tempnode.ImageIndex = 6;
- tempnode.SelectedImageIndex = 6;
- break;
- case EnumGeometryType.GeoGroundOverlay:
- tempnode.ImageIndex = 7;
- tempnode.SelectedImageIndex = 7;
- break;
- }
- }
-
- tempnode.Checked = node.Checked && feature.Visible;
- tempnode.Tag = feature;
- node.Nodes.Add(tempnode);
- }
- }
- }
-
///
/// 检查数据集是否有坐标系信息(待完善)
///
@@ -4857,7 +4790,7 @@
objRes = layer;
if (layer == null) return objRes;
CheckDatasetGeoReference(layer.Dataset, strDataPath);
- CheckDatasetGeoReference(layer.Dataset, strDataPath);
+// CheckDatasetGeoReference(layer.Dataset, strDataPath);
TreeNode node = new TreeNode();
node.Tag = layer;
node.Text = layer.Dataset.Caption;
@@ -4914,17 +4847,17 @@
{
if (layer == null) return;
CheckDatasetGeoReference(layer.Dataset, "");
-
- TreeNode node = new TreeNode();
- node.Tag = layer;
- node.Text = layer.Dataset.Caption;
- node.ImageIndex = 0;
- node.SelectedImageIndex = 0;
- node.Checked = layer.Visible;
-
- if (layerManagerNode.Nodes.Contains(node)) return;
- layerManagerNode.Nodes.Insert(0, node);
- layerManagerNode.Expand();
+ TreeUtils.AddNodeToManagerNode(layerManagerNode,layer);
+// TreeNode node = new TreeNode();
+// node.Tag = layer;
+// node.Text = layer.Dataset.Caption;
+// node.ImageIndex = 0;
+// node.SelectedImageIndex = 0;
+// node.Checked = layer.Visible;
+//
+// if (layerManagerNode.Nodes.Contains(node)) return;
+// layerManagerNode.Nodes.Insert(0, node);
+// layerManagerNode.Expand();
}
///
@@ -4977,22 +4910,13 @@
if (parentNode.Text.Equals("标注管理") || parentNode.Text.Equals("传感器管理"))
{
- RefreshTreeNodeLayerFeatureList(node);
- }
- }
-
- ///
- /// 给指定的图层节点添加代表feature对象的子节点
- ///
- ///
- private void RefreshTreeNodeLayerFeatureList(TreeNode layerTreeNode)
- {
- layerTreeNode.Nodes.Clear();
- GSOLayer layer = (GSOLayer)layerTreeNode.Tag;
- // 只将类型为内存数据集的图层列出,如果是其它类型的数据集可能数据量太大,没发显示在树控件中
- if (layer.Dataset is GSOFeatureDataset)
- {
- VisitFeature3Ds(layer.GetAllFeatures(), layerTreeNode);
+ node.Nodes.Clear();
+ GSOLayer layer = (GSOLayer)node.Tag;
+ // 只将类型为内存数据集的图层列出,如果是其它类型的数据集可能数据量太大,没发显示在树控件中
+ if (layer.Dataset is GSOFeatureDataset)
+ {
+ TreeUtils.AddNodesMatchFeatures(node,layer.GetAllFeatures());
+ }
}
}
diff --git a/TreeUtils.cs b/TreeUtils.cs
index d394a2d..dde986c 100644
--- a/TreeUtils.cs
+++ b/TreeUtils.cs
@@ -180,16 +180,85 @@
{
managerLayerList.Add(tempNode.Nodes[i].Text);
}
- if (!managerLayerList.Contains(layer.Dataset.Caption))
+ if (managerLayerList.Contains(layer.Dataset.Caption)) return;
+ TreeNode node = new TreeNode();
+ node.Tag = layer;
+ node.Text = layer.Dataset.Caption;
+ node.ImageIndex = 0;
+ node.SelectedImageIndex = 0;
+ node.Checked = layer.Visible;
+ tempNode.Nodes.Insert(0, node);
+ tempNode.Expand();
+ }
+ ///
+ /// 创建features对应的树节点,并挂载到node下。标注管理树形图使用
+ ///
+ /// 父节点
+ /// 要素集合
+ public static void AddNodesMatchFeatures(TreeNode node, GSOFeatures features)
+ {
+ for (int i = 0; i < features.Length; i++)
{
- TreeNode node = new TreeNode();
- node.Tag = layer;
- node.Text = layer.Dataset.Caption;
- node.ImageIndex = 0;
- node.SelectedImageIndex = 0;
- node.Checked = layer.Visible;
- tempNode.Nodes.Insert(0, node);
- tempNode.Expand();
+ GSOFeature feature = features[i];
+ if (feature.Type == EnumFeatureType.FeatureFolder)
+ {
+ TreeNode tempnode = new TreeNode();
+ tempnode.Text = feature.Name;
+ tempnode.ImageIndex = 1;
+ tempnode.SelectedImageIndex = 1;
+ tempnode.Checked = node.Checked && feature.Visible;
+ tempnode.Tag = feature;
+ node.Nodes.Add(tempnode);
+ GSOFeatureFolder featureFolder = (GSOFeatureFolder)feature;
+ AddNodesMatchFeatures(tempnode, featureFolder.Features);
+ }
+ else
+ {
+ TreeNode tempnode = new TreeNode { Text = feature.Name };
+ if (feature.Geometry != null)
+ {
+ switch (feature.Geometry.Type)
+ {
+ case EnumGeometryType.GeoPoint3D:
+ case EnumGeometryType.GeoMarker:
+ tempnode.ImageIndex = 3;
+ tempnode.SelectedImageIndex = 3;
+ break;
+ case EnumGeometryType.GeoPolyline3D:
+ tempnode.ImageIndex = 4;
+ tempnode.SelectedImageIndex = 4;
+ break;
+ case EnumGeometryType.GeoPolygon3D:
+ tempnode.ImageIndex = 5;
+ tempnode.SelectedImageIndex = 5;
+ break;
+ case EnumGeometryType.GeoModel:
+ case EnumGeometryType.GeoEntity:
+ case EnumGeometryType.GeoGroupEntity:
+ case EnumGeometryType.GeoSphereEntity:
+ case EnumGeometryType.GeoBoxEntity:
+ case EnumGeometryType.GeoEllipsoidEntity:
+ case EnumGeometryType.GeoCylinderEntity:
+ case EnumGeometryType.GeoFrustumEntity:
+ case EnumGeometryType.GeoEllipCylinderEntity:
+ case EnumGeometryType.GeoEllipFrustumEntity:
+ case EnumGeometryType.GeoRangeEllipsoidEntity:
+ case EnumGeometryType.GeoRangeEllipCylinderEntity:
+ case EnumGeometryType.GeoRangeEllipFrustumEntity:
+ tempnode.ImageIndex = 6;
+ tempnode.SelectedImageIndex = 6;
+ break;
+ case EnumGeometryType.GeoGroundOverlay:
+ tempnode.ImageIndex = 7;
+ tempnode.SelectedImageIndex = 7;
+ break;
+ }
+ }
+
+ tempnode.Checked = node.Checked && feature.Visible;
+ tempnode.Tag = feature;
+ node.Nodes.Add(tempnode);
+ }
}
}
}
diff --git a/Cyberpipe.csproj b/Cyberpipe.csproj
index 90b9430..e2296fd 100644
--- a/Cyberpipe.csproj
+++ b/Cyberpipe.csproj
@@ -1755,7 +1755,6 @@
Reference.cs
-
diff --git a/Cyberpipe.suo b/Cyberpipe.suo
index 5051375..79cd7cf 100644
--- a/Cyberpipe.suo
+++ b/Cyberpipe.suo
Binary files differ
diff --git a/MainFrm.cs b/MainFrm.cs
index a99f2e1..fa00b8f 100644
--- a/MainFrm.cs
+++ b/MainFrm.cs
@@ -1348,73 +1348,6 @@
}
}
- private void VisitFeature3Ds(GSOFeatures feature3ds, TreeNode node)
- {
- for (int i = 0; i < feature3ds.Length; i++)
- {
- GSOFeature feature = feature3ds[i];
- if (feature.Type == EnumFeatureType.FeatureFolder)
- {
- TreeNode tempnode = new TreeNode();
- tempnode.Text = feature.Name;
- tempnode.ImageIndex = 1;
- tempnode.SelectedImageIndex = 1;
- tempnode.Checked = node.Checked && feature.Visible;
- tempnode.Tag = feature;
- node.Nodes.Add(tempnode);
- GSOFeatureFolder featureFolder = (GSOFeatureFolder)feature;
- VisitFeature3Ds(featureFolder.Features, tempnode);
- }
- else
- {
- TreeNode tempnode = new TreeNode { Text = feature.Name };
- if (feature.Geometry != null)
- {
- switch (feature.Geometry.Type)
- {
- case EnumGeometryType.GeoPoint3D:
- case EnumGeometryType.GeoMarker:
- tempnode.ImageIndex = 3;
- tempnode.SelectedImageIndex = 3;
- break;
- case EnumGeometryType.GeoPolyline3D:
- tempnode.ImageIndex = 4;
- tempnode.SelectedImageIndex = 4;
- break;
- case EnumGeometryType.GeoPolygon3D:
- tempnode.ImageIndex = 5;
- tempnode.SelectedImageIndex = 5;
- break;
- case EnumGeometryType.GeoModel:
- case EnumGeometryType.GeoEntity:
- case EnumGeometryType.GeoGroupEntity:
- case EnumGeometryType.GeoSphereEntity:
- case EnumGeometryType.GeoBoxEntity:
- case EnumGeometryType.GeoEllipsoidEntity:
- case EnumGeometryType.GeoCylinderEntity:
- case EnumGeometryType.GeoFrustumEntity:
- case EnumGeometryType.GeoEllipCylinderEntity:
- case EnumGeometryType.GeoEllipFrustumEntity:
- case EnumGeometryType.GeoRangeEllipsoidEntity:
- case EnumGeometryType.GeoRangeEllipCylinderEntity:
- case EnumGeometryType.GeoRangeEllipFrustumEntity:
- tempnode.ImageIndex = 6;
- tempnode.SelectedImageIndex = 6;
- break;
- case EnumGeometryType.GeoGroundOverlay:
- tempnode.ImageIndex = 7;
- tempnode.SelectedImageIndex = 7;
- break;
- }
- }
-
- tempnode.Checked = node.Checked && feature.Visible;
- tempnode.Tag = feature;
- node.Nodes.Add(tempnode);
- }
- }
- }
-
///
/// 检查数据集是否有坐标系信息(待完善)
///
@@ -4857,7 +4790,7 @@
objRes = layer;
if (layer == null) return objRes;
CheckDatasetGeoReference(layer.Dataset, strDataPath);
- CheckDatasetGeoReference(layer.Dataset, strDataPath);
+// CheckDatasetGeoReference(layer.Dataset, strDataPath);
TreeNode node = new TreeNode();
node.Tag = layer;
node.Text = layer.Dataset.Caption;
@@ -4914,17 +4847,17 @@
{
if (layer == null) return;
CheckDatasetGeoReference(layer.Dataset, "");
-
- TreeNode node = new TreeNode();
- node.Tag = layer;
- node.Text = layer.Dataset.Caption;
- node.ImageIndex = 0;
- node.SelectedImageIndex = 0;
- node.Checked = layer.Visible;
-
- if (layerManagerNode.Nodes.Contains(node)) return;
- layerManagerNode.Nodes.Insert(0, node);
- layerManagerNode.Expand();
+ TreeUtils.AddNodeToManagerNode(layerManagerNode,layer);
+// TreeNode node = new TreeNode();
+// node.Tag = layer;
+// node.Text = layer.Dataset.Caption;
+// node.ImageIndex = 0;
+// node.SelectedImageIndex = 0;
+// node.Checked = layer.Visible;
+//
+// if (layerManagerNode.Nodes.Contains(node)) return;
+// layerManagerNode.Nodes.Insert(0, node);
+// layerManagerNode.Expand();
}
///
@@ -4977,22 +4910,13 @@
if (parentNode.Text.Equals("标注管理") || parentNode.Text.Equals("传感器管理"))
{
- RefreshTreeNodeLayerFeatureList(node);
- }
- }
-
- ///
- /// 给指定的图层节点添加代表feature对象的子节点
- ///
- ///
- private void RefreshTreeNodeLayerFeatureList(TreeNode layerTreeNode)
- {
- layerTreeNode.Nodes.Clear();
- GSOLayer layer = (GSOLayer)layerTreeNode.Tag;
- // 只将类型为内存数据集的图层列出,如果是其它类型的数据集可能数据量太大,没发显示在树控件中
- if (layer.Dataset is GSOFeatureDataset)
- {
- VisitFeature3Ds(layer.GetAllFeatures(), layerTreeNode);
+ node.Nodes.Clear();
+ GSOLayer layer = (GSOLayer)node.Tag;
+ // 只将类型为内存数据集的图层列出,如果是其它类型的数据集可能数据量太大,没发显示在树控件中
+ if (layer.Dataset is GSOFeatureDataset)
+ {
+ TreeUtils.AddNodesMatchFeatures(node,layer.GetAllFeatures());
+ }
}
}
diff --git a/TreeUtils.cs b/TreeUtils.cs
index d394a2d..dde986c 100644
--- a/TreeUtils.cs
+++ b/TreeUtils.cs
@@ -180,16 +180,85 @@
{
managerLayerList.Add(tempNode.Nodes[i].Text);
}
- if (!managerLayerList.Contains(layer.Dataset.Caption))
+ if (managerLayerList.Contains(layer.Dataset.Caption)) return;
+ TreeNode node = new TreeNode();
+ node.Tag = layer;
+ node.Text = layer.Dataset.Caption;
+ node.ImageIndex = 0;
+ node.SelectedImageIndex = 0;
+ node.Checked = layer.Visible;
+ tempNode.Nodes.Insert(0, node);
+ tempNode.Expand();
+ }
+ ///
+ /// 创建features对应的树节点,并挂载到node下。标注管理树形图使用
+ ///
+ /// 父节点
+ /// 要素集合
+ public static void AddNodesMatchFeatures(TreeNode node, GSOFeatures features)
+ {
+ for (int i = 0; i < features.Length; i++)
{
- TreeNode node = new TreeNode();
- node.Tag = layer;
- node.Text = layer.Dataset.Caption;
- node.ImageIndex = 0;
- node.SelectedImageIndex = 0;
- node.Checked = layer.Visible;
- tempNode.Nodes.Insert(0, node);
- tempNode.Expand();
+ GSOFeature feature = features[i];
+ if (feature.Type == EnumFeatureType.FeatureFolder)
+ {
+ TreeNode tempnode = new TreeNode();
+ tempnode.Text = feature.Name;
+ tempnode.ImageIndex = 1;
+ tempnode.SelectedImageIndex = 1;
+ tempnode.Checked = node.Checked && feature.Visible;
+ tempnode.Tag = feature;
+ node.Nodes.Add(tempnode);
+ GSOFeatureFolder featureFolder = (GSOFeatureFolder)feature;
+ AddNodesMatchFeatures(tempnode, featureFolder.Features);
+ }
+ else
+ {
+ TreeNode tempnode = new TreeNode { Text = feature.Name };
+ if (feature.Geometry != null)
+ {
+ switch (feature.Geometry.Type)
+ {
+ case EnumGeometryType.GeoPoint3D:
+ case EnumGeometryType.GeoMarker:
+ tempnode.ImageIndex = 3;
+ tempnode.SelectedImageIndex = 3;
+ break;
+ case EnumGeometryType.GeoPolyline3D:
+ tempnode.ImageIndex = 4;
+ tempnode.SelectedImageIndex = 4;
+ break;
+ case EnumGeometryType.GeoPolygon3D:
+ tempnode.ImageIndex = 5;
+ tempnode.SelectedImageIndex = 5;
+ break;
+ case EnumGeometryType.GeoModel:
+ case EnumGeometryType.GeoEntity:
+ case EnumGeometryType.GeoGroupEntity:
+ case EnumGeometryType.GeoSphereEntity:
+ case EnumGeometryType.GeoBoxEntity:
+ case EnumGeometryType.GeoEllipsoidEntity:
+ case EnumGeometryType.GeoCylinderEntity:
+ case EnumGeometryType.GeoFrustumEntity:
+ case EnumGeometryType.GeoEllipCylinderEntity:
+ case EnumGeometryType.GeoEllipFrustumEntity:
+ case EnumGeometryType.GeoRangeEllipsoidEntity:
+ case EnumGeometryType.GeoRangeEllipCylinderEntity:
+ case EnumGeometryType.GeoRangeEllipFrustumEntity:
+ tempnode.ImageIndex = 6;
+ tempnode.SelectedImageIndex = 6;
+ break;
+ case EnumGeometryType.GeoGroundOverlay:
+ tempnode.ImageIndex = 7;
+ tempnode.SelectedImageIndex = 7;
+ break;
+ }
+ }
+
+ tempnode.Checked = node.Checked && feature.Visible;
+ tempnode.Tag = feature;
+ node.Nodes.Add(tempnode);
+ }
}
}
}
diff --git a/bin/x86/Debug/LocaLog.txt b/bin/x86/Debug/LocaLog.txt
index 3b69f42..94fbaab 100644
--- a/bin/x86/Debug/LocaLog.txt
+++ b/bin/x86/Debug/LocaLog.txt
Binary files differ
diff --git a/Cyberpipe.csproj b/Cyberpipe.csproj
index 90b9430..e2296fd 100644
--- a/Cyberpipe.csproj
+++ b/Cyberpipe.csproj
@@ -1755,7 +1755,6 @@
Reference.cs
-
diff --git a/Cyberpipe.suo b/Cyberpipe.suo
index 5051375..79cd7cf 100644
--- a/Cyberpipe.suo
+++ b/Cyberpipe.suo
Binary files differ
diff --git a/MainFrm.cs b/MainFrm.cs
index a99f2e1..fa00b8f 100644
--- a/MainFrm.cs
+++ b/MainFrm.cs
@@ -1348,73 +1348,6 @@
}
}
- private void VisitFeature3Ds(GSOFeatures feature3ds, TreeNode node)
- {
- for (int i = 0; i < feature3ds.Length; i++)
- {
- GSOFeature feature = feature3ds[i];
- if (feature.Type == EnumFeatureType.FeatureFolder)
- {
- TreeNode tempnode = new TreeNode();
- tempnode.Text = feature.Name;
- tempnode.ImageIndex = 1;
- tempnode.SelectedImageIndex = 1;
- tempnode.Checked = node.Checked && feature.Visible;
- tempnode.Tag = feature;
- node.Nodes.Add(tempnode);
- GSOFeatureFolder featureFolder = (GSOFeatureFolder)feature;
- VisitFeature3Ds(featureFolder.Features, tempnode);
- }
- else
- {
- TreeNode tempnode = new TreeNode { Text = feature.Name };
- if (feature.Geometry != null)
- {
- switch (feature.Geometry.Type)
- {
- case EnumGeometryType.GeoPoint3D:
- case EnumGeometryType.GeoMarker:
- tempnode.ImageIndex = 3;
- tempnode.SelectedImageIndex = 3;
- break;
- case EnumGeometryType.GeoPolyline3D:
- tempnode.ImageIndex = 4;
- tempnode.SelectedImageIndex = 4;
- break;
- case EnumGeometryType.GeoPolygon3D:
- tempnode.ImageIndex = 5;
- tempnode.SelectedImageIndex = 5;
- break;
- case EnumGeometryType.GeoModel:
- case EnumGeometryType.GeoEntity:
- case EnumGeometryType.GeoGroupEntity:
- case EnumGeometryType.GeoSphereEntity:
- case EnumGeometryType.GeoBoxEntity:
- case EnumGeometryType.GeoEllipsoidEntity:
- case EnumGeometryType.GeoCylinderEntity:
- case EnumGeometryType.GeoFrustumEntity:
- case EnumGeometryType.GeoEllipCylinderEntity:
- case EnumGeometryType.GeoEllipFrustumEntity:
- case EnumGeometryType.GeoRangeEllipsoidEntity:
- case EnumGeometryType.GeoRangeEllipCylinderEntity:
- case EnumGeometryType.GeoRangeEllipFrustumEntity:
- tempnode.ImageIndex = 6;
- tempnode.SelectedImageIndex = 6;
- break;
- case EnumGeometryType.GeoGroundOverlay:
- tempnode.ImageIndex = 7;
- tempnode.SelectedImageIndex = 7;
- break;
- }
- }
-
- tempnode.Checked = node.Checked && feature.Visible;
- tempnode.Tag = feature;
- node.Nodes.Add(tempnode);
- }
- }
- }
-
///
/// 检查数据集是否有坐标系信息(待完善)
///
@@ -4857,7 +4790,7 @@
objRes = layer;
if (layer == null) return objRes;
CheckDatasetGeoReference(layer.Dataset, strDataPath);
- CheckDatasetGeoReference(layer.Dataset, strDataPath);
+// CheckDatasetGeoReference(layer.Dataset, strDataPath);
TreeNode node = new TreeNode();
node.Tag = layer;
node.Text = layer.Dataset.Caption;
@@ -4914,17 +4847,17 @@
{
if (layer == null) return;
CheckDatasetGeoReference(layer.Dataset, "");
-
- TreeNode node = new TreeNode();
- node.Tag = layer;
- node.Text = layer.Dataset.Caption;
- node.ImageIndex = 0;
- node.SelectedImageIndex = 0;
- node.Checked = layer.Visible;
-
- if (layerManagerNode.Nodes.Contains(node)) return;
- layerManagerNode.Nodes.Insert(0, node);
- layerManagerNode.Expand();
+ TreeUtils.AddNodeToManagerNode(layerManagerNode,layer);
+// TreeNode node = new TreeNode();
+// node.Tag = layer;
+// node.Text = layer.Dataset.Caption;
+// node.ImageIndex = 0;
+// node.SelectedImageIndex = 0;
+// node.Checked = layer.Visible;
+//
+// if (layerManagerNode.Nodes.Contains(node)) return;
+// layerManagerNode.Nodes.Insert(0, node);
+// layerManagerNode.Expand();
}
///
@@ -4977,22 +4910,13 @@
if (parentNode.Text.Equals("标注管理") || parentNode.Text.Equals("传感器管理"))
{
- RefreshTreeNodeLayerFeatureList(node);
- }
- }
-
- ///
- /// 给指定的图层节点添加代表feature对象的子节点
- ///
- ///
- private void RefreshTreeNodeLayerFeatureList(TreeNode layerTreeNode)
- {
- layerTreeNode.Nodes.Clear();
- GSOLayer layer = (GSOLayer)layerTreeNode.Tag;
- // 只将类型为内存数据集的图层列出,如果是其它类型的数据集可能数据量太大,没发显示在树控件中
- if (layer.Dataset is GSOFeatureDataset)
- {
- VisitFeature3Ds(layer.GetAllFeatures(), layerTreeNode);
+ node.Nodes.Clear();
+ GSOLayer layer = (GSOLayer)node.Tag;
+ // 只将类型为内存数据集的图层列出,如果是其它类型的数据集可能数据量太大,没发显示在树控件中
+ if (layer.Dataset is GSOFeatureDataset)
+ {
+ TreeUtils.AddNodesMatchFeatures(node,layer.GetAllFeatures());
+ }
}
}
diff --git a/TreeUtils.cs b/TreeUtils.cs
index d394a2d..dde986c 100644
--- a/TreeUtils.cs
+++ b/TreeUtils.cs
@@ -180,16 +180,85 @@
{
managerLayerList.Add(tempNode.Nodes[i].Text);
}
- if (!managerLayerList.Contains(layer.Dataset.Caption))
+ if (managerLayerList.Contains(layer.Dataset.Caption)) return;
+ TreeNode node = new TreeNode();
+ node.Tag = layer;
+ node.Text = layer.Dataset.Caption;
+ node.ImageIndex = 0;
+ node.SelectedImageIndex = 0;
+ node.Checked = layer.Visible;
+ tempNode.Nodes.Insert(0, node);
+ tempNode.Expand();
+ }
+ ///
+ /// 创建features对应的树节点,并挂载到node下。标注管理树形图使用
+ ///
+ /// 父节点
+ /// 要素集合
+ public static void AddNodesMatchFeatures(TreeNode node, GSOFeatures features)
+ {
+ for (int i = 0; i < features.Length; i++)
{
- TreeNode node = new TreeNode();
- node.Tag = layer;
- node.Text = layer.Dataset.Caption;
- node.ImageIndex = 0;
- node.SelectedImageIndex = 0;
- node.Checked = layer.Visible;
- tempNode.Nodes.Insert(0, node);
- tempNode.Expand();
+ GSOFeature feature = features[i];
+ if (feature.Type == EnumFeatureType.FeatureFolder)
+ {
+ TreeNode tempnode = new TreeNode();
+ tempnode.Text = feature.Name;
+ tempnode.ImageIndex = 1;
+ tempnode.SelectedImageIndex = 1;
+ tempnode.Checked = node.Checked && feature.Visible;
+ tempnode.Tag = feature;
+ node.Nodes.Add(tempnode);
+ GSOFeatureFolder featureFolder = (GSOFeatureFolder)feature;
+ AddNodesMatchFeatures(tempnode, featureFolder.Features);
+ }
+ else
+ {
+ TreeNode tempnode = new TreeNode { Text = feature.Name };
+ if (feature.Geometry != null)
+ {
+ switch (feature.Geometry.Type)
+ {
+ case EnumGeometryType.GeoPoint3D:
+ case EnumGeometryType.GeoMarker:
+ tempnode.ImageIndex = 3;
+ tempnode.SelectedImageIndex = 3;
+ break;
+ case EnumGeometryType.GeoPolyline3D:
+ tempnode.ImageIndex = 4;
+ tempnode.SelectedImageIndex = 4;
+ break;
+ case EnumGeometryType.GeoPolygon3D:
+ tempnode.ImageIndex = 5;
+ tempnode.SelectedImageIndex = 5;
+ break;
+ case EnumGeometryType.GeoModel:
+ case EnumGeometryType.GeoEntity:
+ case EnumGeometryType.GeoGroupEntity:
+ case EnumGeometryType.GeoSphereEntity:
+ case EnumGeometryType.GeoBoxEntity:
+ case EnumGeometryType.GeoEllipsoidEntity:
+ case EnumGeometryType.GeoCylinderEntity:
+ case EnumGeometryType.GeoFrustumEntity:
+ case EnumGeometryType.GeoEllipCylinderEntity:
+ case EnumGeometryType.GeoEllipFrustumEntity:
+ case EnumGeometryType.GeoRangeEllipsoidEntity:
+ case EnumGeometryType.GeoRangeEllipCylinderEntity:
+ case EnumGeometryType.GeoRangeEllipFrustumEntity:
+ tempnode.ImageIndex = 6;
+ tempnode.SelectedImageIndex = 6;
+ break;
+ case EnumGeometryType.GeoGroundOverlay:
+ tempnode.ImageIndex = 7;
+ tempnode.SelectedImageIndex = 7;
+ break;
+ }
+ }
+
+ tempnode.Checked = node.Checked && feature.Visible;
+ tempnode.Tag = feature;
+ node.Nodes.Add(tempnode);
+ }
}
}
}
diff --git a/bin/x86/Debug/LocaLog.txt b/bin/x86/Debug/LocaLog.txt
index 3b69f42..94fbaab 100644
--- a/bin/x86/Debug/LocaLog.txt
+++ b/bin/x86/Debug/LocaLog.txt
Binary files differ
diff --git "a/\345\211\257\346\234\254 app.config" "b/\345\211\257\346\234\254 app.config"
deleted file mode 100644
index f4cbe66..0000000
--- "a/\345\211\257\346\234\254 app.config"
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-