Text
Espacio de nombres: Digi21.DigiNG.Entities
Ensamblado: Digi21.DigiNG
Texto de lectura y escritura: una cadena, una coordenada de inserción, una altura, una rotación, una orientación en el espacio y una justificación.
public class Text : ReadOnlyText, IDesplazable
Herencia: Object → Entity → ReadOnlyText → Text
Implementa: IDesplazable y, por herencia, ISnapable, IWindow3D, ICloneable e IDisposable.
Un Text 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 texto guardado, modifica la copia que devuelve Clone.
Un Text nuevo tiene la cadena vacía, la coordenada (0, 0, 0), la altura 0, la rotación 0, la orientación Quaternion.Identity y la justificación SouthWest, 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 desplaza el texto y recalcula las coordenadas mínimas y máximas. Los métodos Offset desplazan el texto y también las recalculan, junto con las de cada entidad que contiene el texto, por ejemplo el complejo del que forma parte.
Rotation está en grados sexagesimales, como Point.Rotation. En versiones anteriores estaba en centésimas de grado: lee Rotation.
El resto de miembros (códigos, colores, atributos, Clone, Dispose…) se heredan de Entity y de ReadOnlyText.
Constructores
| Miembro | Descripción |
|---|---|
Text(Code code) |
Crea un texto con un código. |
Text(IEnumerable<Code> codes) |
Crea un texto con varios códigos, en el orden de la enumeración. |
Propiedades
| Miembro | Descripción |
|---|---|
string Txt { get; set; } |
Cadena del texto. |
Point3D Coordinate { get; set; } |
Coordenada de inserción. |
double TextHeight { get; set; } |
Altura del texto. |
double Rotation { get; set; } |
Rotación, en grados sexagesimales, en sentido antihorario desde el eje X, alrededor del eje Z del mundo. |
Quaternion Orientation { get; set; } |
Orientación en el espacio: un cuaternión que se aplica antes de Rotation, en el sistema local del texto. El cuaternión se normaliza al asignar la propiedad. |
TextJustification Justification { get; set; } |
Posición del punto de inserción respecto al texto. |
Métodos
| Miembro | Descripción |
|---|---|
void Offset(Point2D offset) |
Suma offset.X y offset.Y a la coordenada de inserción. La Z no cambia. |
void Offset(Point3D offset) |
Suma offset a la coordenada de inserción. |
void Offset(double x, double y) |
Suma x e y a la coordenada de inserción. La Z no cambia. |
void Offset(double x, double y, double z) |
Suma x, y y z a la coordenada de inserción. |
Los cuatro métodos Offset lanzan InvalidOperationException si el texto es de solo lectura (ReadOnly es true).
Ejemplo
Este programa escribe en un archivo .bind un texto por cada valor de TextJustification, con el nombre del valor como cadena:
using Digi21.DigiNG.Entities;
using Digi21.DigiNG.IO.BinDouble;
using Digi21.Math;
if (args.Length != 1)
{
Console.WriteLine("Uso: Textos <salida.bind>");
return 1;
}
using var archivo = new BinDouble(args[0]);
// Un rótulo por cada valor de TextJustification, todos con el mismo punto de inserción en X.
var y = 4480000.0;
foreach (var justificación in Enum.GetValues<TextJustification>())
{
var rótulo = new Text(new Code("080101"))
{
Txt = justificación.ToString(),
Coordinate = new Point3D(450000.0, y, 0.0),
TextHeight = 2.5,
Rotation = 0.0,
Justification = justificación,
};
ReadOnlyText guardado = archivo.Add(rótulo);
Console.WriteLine($"{guardado.Txt}: {(int)guardado.Justification}");
y += 5.0;
}
return 0;