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;