UtilidadesSecuenciaReadOnlyFile
Espacio de nombres: Digi21.Utilities
Ensamblado: Digi21.Utilities
Métodos de extensión que concatenan las entidades de una secuencia de archivos de dibujo (IReadOnlyDrawingFile).
public static class UtilidadesSecuenciaReadOnlyFile
Métodos estáticos
| Método | Descripción |
|---|---|
IEnumerable<Entity> EnumeraEntidades(this IEnumerable<IReadOnlyDrawingFile> archivos) |
Devuelve las entidades de cada archivo, archivo a archivo y en el orden de archivos. Incluye las entidades eliminadas. |
IEnumerable<T> EnumeraEntidades<T>(this IEnumerable<IReadOnlyDrawingFile> archivos) where T : class |
Igual, pero solo las entidades que son de tipo T, por ejemplo ReadOnlyLine. |
La secuencia se evalúa al recorrerla, y cada recorrido recorre otra vez los archivos. Un archivo que solo se puede recorrer una vez, como un Bin, lanza InvalidOperationException en el segundo recorrido; envuélvelo en un MemoryDrawingFile si lo necesitas.
Ejemplo
Este programa cuenta las líneas no eliminadas de varios archivos .bin:
using Digi21.DigiNG.Entities;
using Digi21.DigiNG.IO;
using Digi21.DigiNG.IO.Bin;
using Digi21.Math;
using Digi21.Utilities;
if (args.Length == 0)
{
Console.WriteLine("Uso: CuentaLíneas <archivo.bin> [<archivo.bin> ...]");
return 1;
}
var archivos = args.Select(ruta => new Bin(ruta, 2, new Point3D(0, 0, 0), true)).ToList();
try
{
var líneas = archivos.Cast<IReadOnlyDrawingFile>()
.EnumeraEntidades<ReadOnlyLine>()
.Count(línea => !línea.Deleted);
Console.WriteLine($"{líneas} líneas en {archivos.Count} archivos.");
}
finally
{
foreach (var archivo in archivos)
archivo.Dispose();
}
return 0;