Point
Espacio de nombres: Digi21.DigiNG.Entities
Ensamblado: Digi21.DigiNG
Punto de lectura y escritura: una coordenada de inserción y una rotación.
public class Point : ReadOnlyPoint, IDesplazable
Herencia: Object → Entity → ReadOnlyPoint → Point
Implementa: IDesplazable y, por herencia, ISnapable, IWindow3D, ICloneable e IDisposable.
Un Point creado con sus constructores no pertenece a ningún archivo de dibujo (Owner es null) y se puede modificar. Al añadirlo a un archivo de dibujo con IDrawingFile.Add, Owner pasa a ser ese archivo y la entidad pasa a ser de solo lectura: los descriptores set y los métodos Offset lanzan InvalidOperationException. Para modificar un punto guardado, modifica la copia que devuelve Clone.
Un Point nuevo tiene la coordenada (0, 0, 0) y la rotación 0, y sus coordenadas mínimas y máximas (IWindow3D) están sin calcular: Valid vale false, Xmin vale null, y Width, Center, Color, Weight y FillColor lanzan InvalidOperationException. Asignar Coordinate y llamar a cualquiera de los métodos Offset recalculan las coordenadas mínimas y máximas. Offset recalcula además las de cada entidad que contiene el punto, por ejemplo el complejo del que forma parte.
El resto de miembros (códigos, colores, atributos, Clone, Dispose…) se heredan de Entity y de ReadOnlyPoint.
Constructores
| Miembro | Descripción |
|---|---|
Point(Code code) |
Crea un punto con un código. |
Point(IEnumerable<Code> codes) |
Crea un punto con varios códigos, en el orden de la enumeración. |
Propiedades
| Miembro | Descripción |
|---|---|
Point3D Coordinate { get; set; } |
Coordenada de inserción. |
double Rotation { get; set; } |
Rotación del símbolo, en radianes. |
Métodos
| Miembro | Descripción |
|---|---|
void Offset(Point2D offset) |
Suma offset.X y offset.Y a la coordenada. La Z no cambia. |
void Offset(Point3D offset) |
Suma offset a la coordenada. |
void Offset(double x, double y) |
Suma x e y a la coordenada. La Z no cambia. |
void Offset(double x, double y, double z) |
Suma x, y y z a la coordenada. |
Los cuatro métodos Offset lanzan InvalidOperationException si el punto es de solo lectura (ReadOnly es true).
Ejemplo
Este programa crea un punto con rotación, lo guarda en un archivo .bind y guarda una copia desplazada 10 unidades en X:
using Digi21.DigiNG.Entities;
using Digi21.DigiNG.IO.BinDouble;
using Digi21.Math;
if (args.Length != 1)
{
Console.WriteLine("Uso: Puntos <salida.bind>");
return 1;
}
using var archivo = new BinDouble(args[0]);
var vértice = new Point(new Code("030101"))
{
Coordinate = new Point3D(450000.0, 4480000.0, 650.0),
Rotation = Math.PI / 4, // 45 grados, en radianes
};
// Add devuelve la misma instancia como ReadOnlyPoint: a partir de aquí es de solo lectura.
ReadOnlyPoint guardado = archivo.Add(vértice);
Console.WriteLine($"{guardado.Coordinate} rotación {guardado.Rotation} rad, ReadOnly = {guardado.ReadOnly}");
// Para modificar un punto guardado se trabaja sobre una copia.
Point copia = guardado.Clone();
copia.Offset(10.0, 0.0);
archivo.Add(copia);
return 0;