ClosedLoop
Espacio de nombres: Digi21.DigiNG.Topology
Ensamblado: Digi21.DigiNG.Topology
Anillo cerrado que forman una o varias líneas de una topología. TopologyAnalyzer.AnalyzeTopology devuelve los polígonos como ClosedLoopWithHoles, que hereda de esta clase, y los huecos de cada polígono como ClosedLoop.
public class ClosedLoop
Constructores
public ClosedLoop()
Crea un anillo vacío: Polygon y Centroid valen null y Entities es una lista vacía. Los anillos con datos los crea TopologyAnalyzer.AnalyzeTopology.
Propiedades
| Propiedad | Descripción |
|---|---|
Polygon Polygon |
Polygon nuevo con los vértices del anillo. Tiene un solo código, de nombre vacío (""), y no pertenece a ningún archivo de dibujo. En un ClosedLoopWithHoles, el polígono incluye también los huecos. |
ReadOnlyText Centroid |
Texto asignado como centroide por TopologyAnalyzer.AnalyzeCentroids, o null. Después de AnalyzeTopology vale null. |
List<Tuple<ReadOnlyLine, bool>> Entities |
Líneas (arcos) que forman el anillo, en el orden en que se recorren. Item1 es la línea, la misma instancia que se pasó a AnalyzeTopology. Item2 es true si el anillo recorre la línea de su primer a su último vértice y false si la recorre al revés. |
Ejemplo
Este programa forma la topología de un archivo .bin y muestra las líneas que forman cada polígono y el sentido en que se recorren:
using Digi21.DigiNG.IO.Bin;
using Digi21.DigiNG.Topology;
using Digi21.Math;
if (args.Length != 1)
{
Console.WriteLine("Uso: Arcos <archivo.bin>");
return 1;
}
using var archivo = new Bin(args[0], 2, new Point3D(0, 0, 0), true);
foreach (var polígono in archivo.AnalyzeTopology(analyzePolygonRelationship: false))
{
Console.WriteLine($"Polígono de {polígono.Polygon.Area:F2} m²:");
foreach (var (línea, directa) in polígono.Entities)
{
var códigos = string.Join(", ", línea.Codes.Select(código => código.Name));
Console.WriteLine($" {códigos}: {línea.Points.Count} vértices, {(directa ? "en su sentido" : "al revés")}");
}
}
return 0;