符号库分组类。该类主要为管理符号库中的子分组和符号对象提供一种逻辑化的组织结构形式,从而实现结构化,层次化的清晰管理模式,该类不能获取系统符号也并不负责符号对象的添加与删除以及符号对象的导入与导出操作,这类操作主要由符号库基类(SymbolLibrary类)提供,详细内容参见 SymbolLibrary 类。

命名空间:  SuperMap.Data
程序集:  SuperMap.Data (in SuperMap.Data)
版本: dll

语法

C#
public class SymbolGroup

备注

如下图所示,结合 SuperMap Object .NET 的接口,利用图示帮助理解符号库的组织结构,该结构适用于点状符号库、线型符号库和填充符号库。

符号库的组织结构类似于 Windows 资源管理器的组织结构,磁盘的根目录下下可以存在零个或多个文件夹以及零个或多个文件,每个文件夹中又可以有零个或多个子文件夹以及零个或多个文件,以此类推层层嵌套;符号库的根组就相当于这个磁盘的根目录,文件夹可以看做符号库的子分组,文件就好比各种符号,一个符号库只能存在一个根组,根组中可以有零个或多个子分组以及零个或多个符号,每个子分组下还可以有零个或多个子分组以及零个或多个符号,以此类推。

如下图所示,红色虚线框所示是符号库的根组,根组也是分组,对应 SymbolGroup 类对象,根组是符号库的最高分组层次,根组中可以包含零个或多个子分组以及零个或多个符号,子分组也是分组,同样对应 SymbolGroup 类对象,其中所有子分组又构成一个子分组集合,对应 SymbolGroups 类对象,根组中至多有一个分组集合,即 SymbolGroups 类对象,SymbolGroups 类对象是 SymbolGroup 类对象的集合,用来管理根组中的各子分组,通过 SymbolGroups 类对象来完成根组中子分组的创建与移除。当子分组(例如下图绿色框所示)中还包含有零个或多个子分组以及零个或多个符号,那么这些子分组和符号又构成了的一个分组(下图蓝色虚线框所示), 而这个绿色框标识的子分组称为蓝色虚线框所示的这个分组的父分组,并且,蓝色虚线框中的所有子分组构成了一个子分组集合,对应一个 SymbolGroups 类对象,同样该蓝色虚线框所示的分组中也至多有一个子分组集合,通过这个子分组集合对象来完成该蓝色虚线框所示的分组中的子分组的创建与移除。以此类推,下图中的黄色框所示的子分组对应一个 SymbolGroup 类对象,粉色虚线框内的子分组又构成一个分组对象(此分组对象中包含零个符号和三个子分组),即对应一个 SymbolGroup 类对象,因此,黄色框所示的分组是粉色虚线框所示分组的父分组,同样粉色虚线框所示分组中也包含了一个子分组集合。总之,符号库呈现一种树形组织结构。

注:所谓的分组和子分组是符号库的逻辑组织形式,都是使用户可以将类别相同的符号放在一个组中,从而方便管理和使用。

综上所述,一个符号库(SymbolLibrary)包含有唯一的一个根组(SymbolGroup 类对象),每个 SymbolGroup 类对象至多包含有一个 SymbolGroups 类对象,但却可以包含有零个或多个 Symbol 类对象,其中 SymbolGroups 类对象是 SymbolGroup 类对象的集合,以此实现符号库的树形管理结构。

示例

以下代码示范如何新建分组集合的子分组,如何将根组的符号移到子分组中,以及如何获取根组的符号以及子分组指定索引的符号对象。 假设打开一个工作空间 workspace
CopyC#
public void SymbolGroupExamples(Workspace workspace,Datasource datasource)
{
    // 获取资源库,从资源库获取填充符号库,取出该符号库的根组
    Resources resources = workspace.Resources;
    SymbolLibrary symbolLibrary = resources.FillLibrary;
    SymbolGroup symbolGroup = symbolLibrary.RootGroup;

    // 获取根组的分组集合
    SymbolGroups symbolGroups = symbolGroup.ChildGroups;
    Console.WriteLine("分组个数为:"+symbolGroups.Count); // 没有子分组,分组个数为0

    // 新建分组集合中的一个子分组 symbolGroup1
    SymbolGroup symbolGroup1 = symbolGroups.Create("del_sg1");
    Console.WriteLine("分组个数为:"+symbolGroups.Count); // 创建子分组后,分组个数为1
    Console.WriteLine("符号个数为:"+symbolGroup1.Count); // 没有符号,符号个数为0

     if (symbolGroup1.Count== 0)
     {
            symbolLibrary.MoveTo(8, symbolGroup1);
     } 
    // 获取根组的第一个符号以及子分组指定索引的符号对象
    Symbol symbol = symbolGroup[0];
    Int32 index = symbolGroup1.IndexOf(8);
    Symbol symbol1 = symbolGroup1[index];
    Console.WriteLine(symbol.ID); // 根组符号对象的 ID 为9
    Console.WriteLine(symbol1.ID); // 子分组符号对象的 ID 为8
    if (symbolGroups.Contains("del_sg1")) // 判断是否含有此子分组
    {   
         symbolGroups.Remove("del_sg1"); // 删除此子分组
    }
    Console.WriteLine(symbolGroups.Count); // 删除子分组后,分组个数为0
}

继承层次

System..::.Object
  SuperMap.Data..::.SymbolGroup

请参见