NodeDigiTab

Espacio de nombres: Digi21.DigiNG.DigiTab
Ensamblado: Digi21.DigiNG

Código de una tabla de códigos DigiTab.

public sealed class NodeDigiTab : IDisposable

Implementa: IDisposable. El ensamblado de referencia del paquete NuGet declara public sealed class NodeDigiTab, sin IDisposable: con el paquete no se puede usar using ni llamar a Dispose, y el código nativo se libera cuando el recolector de elementos no utilizados finaliza el objeto.

Un NodeDigiTab se obtiene de dos formas:

  • Con Codes o con el indizador this[string] de una DigiTab. El objeto no es una copia: asignar una propiedad cambia el código en la tabla de códigos, en memoria. Si la tabla de códigos no es modificable, la asignación lanza InvalidOperationException.
  • Con el constructor, para añadirlo después a una tabla con AddCode. Después de AddCode, ese objeto es de solo lectura.

Las asignaciones de un objeto de solo lectura lanzan InvalidOperationException.

Constructores

Constructor Descripción
NodeDigiTab(string name) Crea un código lineal con el nombre indicado.

Propiedades

Propiedad Descripción
string Name Nombre del código. Solo lectura.
string Description Descripción del código.
GeometryType Type Tipo de geometría: punto, línea o virtual.
int Priority Prioridad del código.
string Color Color en la ventana de dibujo.
string ColorPhotogrammetric Color en la ventana fotogramétrica.
IEnumerable<string> Tags Etiquetas del código.
IEnumerable<string> Alias Alias del código.
string Table Tabla de base de datos vinculada al código.
Dictionary<string, string> Values Valores del código. Solo lectura.

Métodos

Método Descripción
void Dispose() Libera el código nativo. Después de Dispose, el objeto no se puede usar. No existe en el ensamblado de referencia del paquete NuGet.

Ejemplo

Este programa añade el código de punto PUNTO_CONTROL a una tabla de códigos y la guarda en otro archivo:

using Digi21.DigiNG.DigiTab;

if (args.Length != 2)
{
    Console.WriteLine("Uso: AnadeCodigo <entrada.tab.xml> <salida.tab.xml>");
    return 1;
}

using var tabla = DigiTab.Load(args[0]);

if (tabla.HasCode("PUNTO_CONTROL"))
{
    Console.WriteLine("La tabla ya tiene el código PUNTO_CONTROL.");
    return 1;
}

var código = new NodeDigiTab("PUNTO_CONTROL")
{
    Description = "Punto de control",
    Color = "#FF0000FF",
    ColorPhotogrammetric = "#FFFF00FF",
    Priority = 10,
    Tags = ["control", "topografía"],
    // Enum.Parse obtiene el número del ensamblado instalado; lee la página de GeometryType.
    Type = Enum.Parse<GeometryType>("Point"),
};

// Después de AddCode, las propiedades de 'código' son de solo lectura.
tabla.AddCode(código);
tabla.Write(args[1]);

Console.WriteLine($"{tabla.Codes.Count()} códigos escritos en {args[1]}.");
return 0;