DigiTab
Espacio de nombres: Digi21.DigiNG.DigiTab
Ensamblado: Digi21.DigiNG
Tabla de códigos en memoria.
public sealed class DigiTab : IDisposable
Implementa: IDisposable.
La clase no tiene constructores públicos. Una DigiTab se obtiene de dos formas:
| Origen | Modificable |
|---|---|
| DigiTab.Load, que carga un archivo de tabla de códigos. | Sí. |
La propiedad estática DigiTab de la clase DigiNG, que devuelve la tabla de códigos de la ventana de dibujo activa. |
No. |
En una tabla de códigos no modificable, AddCode y las asignaciones a las propiedades de sus NodeDigiTab lanzan InvalidOperationException.
Los cambios se hacen en memoria. Para guardarlos, llama a Write.
Dispose libera la tabla de códigos nativa. Después de Dispose, la instancia no se puede usar: sus miembros no comprueban si la instancia está liberada y no lanzan ObjectDisposedException.
Propiedades
| Propiedad | Descripción |
|---|---|
| string Path | Ruta del archivo del que se cargó la tabla de códigos. |
| IEnumerable<NodeDigiTab> Codes | Códigos de la tabla. |
| NodeDigiTab this[string name] | Código con el nombre o el alias indicado. Lanza ArgumentOutOfRangeException si no existe. |
| IDictionary<string, IList<Tuple<string, Type>>> Tables | Tablas de base de datos que define la tabla de códigos, con sus campos. |
Métodos estáticos
| Método | Descripción |
|---|---|
| DigiTab Load(string path) | Carga una tabla de códigos de un archivo. |
Métodos
| Método | Descripción |
|---|---|
| bool HasCode(string name) | Indica si la tabla tiene un código o un alias con ese nombre exacto. |
| bool HasCode(string name, bool allowWildcards) | Igual, con comodines * y ? si allowWildcards es true. |
| void AddCode(NodeDigiTab code) | Añade un código a la tabla. |
| void Write(string path) | Guarda la tabla de códigos en un archivo. Lanza InvalidOperationException si la tabla está cifrada e IOException si no se puede escribir. |
void Dispose() |
Libera la tabla de códigos nativa. |
Ejemplo
Este programa muestra el nombre, el tipo de geometría y la descripción de cada código de una tabla de códigos, las tablas de base de datos con sus campos, y si algún código empieza por 0204:
using Digi21.DigiNG.DigiTab;
if (args.Length != 1)
{
Console.WriteLine("Uso: ListaCodigos <tabla.tab.xml>");
return 1;
}
using var tabla = DigiTab.Load(args[0]);
foreach (var código in tabla.Codes)
{
// Type.ToString() devuelve el nombre del valor que tiene el ensamblado instalado.
Console.WriteLine($"{código.Name}\t{código.Type.ToString()}\t{código.Description}");
}
foreach (var (nombreTabla, campos) in tabla.Tables)
Console.WriteLine($"{nombreTabla}: {string.Join(", ", campos.Select(c => $"{c.Item1} ({c.Item2?.Name})"))}");
Console.WriteLine(tabla.HasCode("0204*", true)
? "Hay códigos que empiezan por 0204."
: "Ningún código empieza por 0204.");
return 0;
El motivo de usar Type.ToString() se explica en GeometryType.