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
gcontiene la geometría que se está evaluando. Es un objeto Geometry cuyo tipo concreto esPoint,Text,Line,PolygonoComplex. - 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, usag.codes[0].attributes.get('campo'), que devuelveNonesi el campo no existe. - La expresión debe devolver
TrueoFalse. También se aceptaNone(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