IReadOnlyDrawingFileExtension

Espacio de nombres: Digi21.Utilities
Ensamblado: Digi21.Utilities

Añade a IReadOnlyDrawingFile el método Contains, que indica si una entidad pertenece al archivo de dibujo.

public static class IReadOnlyDrawingFileExtension

Métodos estáticos

Contains

public static bool Contains(this IReadOnlyDrawingFile file, Entity entity)

Devuelve true si entity.Owner es el objeto file. La comparación es de referencias: no se recorren las entidades del archivo.

Parámetro Descripción
file Archivo de dibujo.
entity Entidad.

Lanza NullReferenceException si entity es null.

Entity.Owner es de tipo IDrawingFile. Por eso Contains devuelve siempre false con un archivo que solo implementa IReadOnlyDrawingFile, como los archivos de referencia de DigiNG.ReferenceFiles. También devuelve false con un MemoryDrawingFile: el Owner de sus entidades es el archivo de dibujo que envuelve.

Dentro del espacio de nombres Digi21.Utilities, o con using Digi21.Utilities;, la llamada archivo.Contains(entidad) usa este método y no Enumerable.Contains de LINQ, que recorre el archivo y compara las entidades una a una.

Ejemplo

Este programa lee un archivo .bin y comprueba que la primera entidad pertenece a ese archivo y no a otro:

using Digi21.DigiNG.IO.Bin;
using Digi21.Math;
using Digi21.Utilities;

if (args.Length != 2)
{
    Console.WriteLine("Uso: Pertenece <a.bin> <b.bin>");
    return 1;
}

using var a = new Bin(args[0], 2, new Point3D(0, 0, 0), true);
using var b = new Bin(args[1], 2, new Point3D(0, 0, 0), true);

var primera = a.FirstOrDefault();
if (primera is null)
{
    Console.WriteLine("El archivo está vacío.");
    return 1;
}

Console.WriteLine($"¿Pertenece a {a.Path}? {a.Contains(primera)}"); // True
Console.WriteLine($"¿Pertenece a {b.Path}? {b.Contains(primera)}"); // False
return 0;