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 lanzaInvalidOperationException. - 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;