Expresiones

Editor de tablas de códigos mostrando la pestaña Expresiones

Esta pestaña, Expresiones, define selecciones con nombre. Cada selección es una expresión Python que se evalúa con cada geometría de los archivos de dibujo. Selecciona las geometrías para las que la expresión es verdadera.

Cada selección tiene un nombre y una expresión. La lista de la pestaña muestra una fila por selección, con las columnas Nombre y Expresión Python. El nombre no puede repetirse: al añadir una selección con un nombre que ya existe, el editor avisa y no la añade.

Botones

Botón Acción
Añadir Abre el cuadro de diálogo Nueva selección, donde se escriben el nombre y la expresión.
Modificar Abre el mismo cuadro con el nombre y la expresión de la fila seleccionada.
Eliminar Elimina la fila seleccionada.

Modificar y Eliminar se habilitan al seleccionar una fila. Los cambios de esta pestaña se aplican a la tabla de códigos al pulsar Aplicar o Aceptar.

Dónde se usan las selecciones

Las selecciones modifican la interfaz de Digi3D.AI. Los nombres de las selecciones de la tabla de códigos activa aparecen como opciones en dos menús:

  • Ver/(selecciones de la tabla de códigos): ejecuta ON_SOLO_EXPRESIÓN_PYTHON con la expresión de la selección.
  • Inmediato/Selecciona por expresión Python.../(selecciones de la tabla de códigos): ejecuta SELECCIONA_EXPRESION_PYTHON con la expresión de la selección.

Las órdenes ON_EXPRESIÓN_PYTHON, OFF_EXPRESIÓN_PYTHON y ON_SOLO_EXPRESIÓN_PYTHON también admiten el nombre de una selección como parámetro, precedido de #:

ON_EXPRESION_PYTHON=#Edificios

La expresión

  • Es una única expresión de Python, no un guion: no admite import, asignaciones ni bloques.
  • La variable g contiene la geometría que se está evaluando. Es un objeto Geometry cuyo tipo concreto es Point, Text, Line, Polygon o Complex.
  • No se crea ninguna variable por atributo de base de datos. Los atributos del primer código están en el diccionario g.codes[0].attributes (nombre del campo → valor). Para leer un campo, usa g.codes[0].attributes.get('campo'), que devuelve None si el campo no existe.
  • La expresión debe devolver True o False. También se acepta None (falso) o un número (verdadero si es distinto de 0). Una cadena, una lista u otro tipo produce un error.
  • La expresión puede llamar a las funciones definidas en el entorno Python de la tabla de códigos.
Expresión Significado
g.codes[0].code Primer código de la geometría.
g.has_code('02*') La geometría tiene un código que cumple el patrón. Admite los comodines * y ?.
len(g) Número de vértices.
g[0] Coordenadas (x, y, z) del primer vértice.
type(g).__name__ Tipo de la geometría: 'Point', 'Text', 'Line', 'Polygon' o 'Complex'.
g.area, g.perimeter_2d Área y perímetro en planta. Solo en líneas y polígonos.
g.closed Indica si la geometría está cerrada. Solo en líneas, polígonos y complejos.
g.text Cadena de un texto. Solo en textos.

Si la expresión falla con alguna geometría, por ejemplo con g.area en un punto, Digi3D.AI muestra el error de Python. Comprueba antes el tipo: type(g).__name__ == 'Line' and g.area > 100.

Cuadro de diálogo Nueva selección

El cuadro tiene estos controles:

  • Nombre: nombre de la selección.
  • Campo que sigue a return: expresión Python.
  • Fragmentos de código y Añadir fragmento: añaden al final de la expresión el fragmento elegido en el desplegable.

El desplegable ofrece operadores (==, !=, <, >, <=, >=, and, and not, not, True, False) y estos fragmentos de la geometría g:

Fragmento Significado
type(g).__name__ == 'Point' Comprueba el tipo de la geometría. Hay uno por cada tipo: Point, Line, Text, Polygon y Complex.
g.has_code('code') La geometría tiene un código que cumple el patrón.
len(g) Número de vértices.
g[0] Coordenadas del primer vértice.
g.codes[0].attributes.get('field') Valor de un campo de base de datos del primer código.
g.area Área.
g.perimeter_2d Perímetro en planta.
g.closed Indica si la geometría está cerrada.
g.text Cadena de un texto.

Sustituye code y field por el código o el campo que necesites.

Ejemplos

Todas las geometrías:

True

La expresión se evalúa con cada geometría y devuelve siempre verdadero, así que selecciona todas.

Geometrías cuyo primer código es 020400:

g.codes[0].code == '020400'

Geometrías con 3 vértices:

len(g) == 3

Geometrías cuyo campo Plantas es 3:

g.codes[0].attributes.get('Plantas') == 3

Combinación de condiciones:

g.codes[0].attributes.get('Propietario') == 'Dylan' and g.codes[0].attributes.get('Plantas') > 3 and g.codes[0].code == '010101' and len(g) == 7