This page has not been translated yet and is shown in Spanish.

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. El programa 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 3, no un guion: no admite import, asignaciones ni bloques. Python 3 no admite el operador <>: usa !=. Para leer el texto del primer código, sustituye el nombre de .NET g.Codes[0].Name por g.codes[0].code, de la interfaz de programación de aplicaciones (API) de Python.
  • 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 usar las funciones integradas de Python (como len o type) y los nombres que define el entorno Python de la tabla de códigos, incluidas sus funciones. Si la evaluación de la expresión consulta un nombre que no está definido en el módulo __main__ (la variable g y los nombres del entorno) ni entre los nombres integrados de Python, Python lanza un error NameError. Para usar Text sin el prefijo digi3d., el entorno debe importar ese nombre con una línea como from digi3d import Text. La página de ON_EXPRESIÓN_PYTHON detalla qué nombres puede usar la expresión.
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 el tipo de g antes de leer g.area: type(g).__name__ == 'Line' and g.area > 100. El apartado Errores de ON_EXPRESIÓN_PYTHON describe qué ocurre cuando la expresión falla.

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