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 @@ - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -