Repositorio de controles de calidad en Python
El repositorio público Guiones-Control-Calidad-Python-Digi3D contiene un único archivo, guiones.py, con dos grupos de funciones:
- Controles de calidad: funciones con el decorador
@quality_control()que se asignan a un código en la tabla de códigos. La página Controles de calidad explica cómo se declaran y cómo comunican los errores. - Reglas de representación dinámica: funciones con el decorador
@dynamic_representation_rule()que cambian el color, el color de relleno o el grosor con el que se dibuja una geometría.
El archivo usa el módulo digi3d, que solo existe dentro de Digi3D.AI.
Instalar el archivo en una tabla de códigos
Digi3D.AI carga el contenido de la pestaña
Entorno Python de la tabla de
códigos cada vez que la tabla cambia. Para instalar guiones.py:
- Abre la tabla de códigos con el Editor de tablas de códigos.
- Selecciona la pestaña Entorno Python.
- Pulsa Descargar de GitHub la última versión. El editor descarga
guiones.pyde la ramamainy sustituye todo el contenido de la pestaña. - Pulsa Aceptar.
Sin conexión a Internet, descarga guiones.py desde GitHub (botón Download raw file), copia su
contenido y pégalo en el editor de la pestaña Entorno Python.
El paso 3 borra las funciones propias que hubiera en la pestaña. Cópialas antes y pégalas después al final del contenido descargado. Las tablas de códigos de versiones anteriores de Digi3D se actualizan con el procedimiento de Actualizar los controles de calidad Python de una tabla de códigos.
Asignar un control de calidad a un código
- En la pestaña de códigos del editor, selecciona el código.
- Pulsa el botón de la propiedad Controles de calidad a aplicar. Se abre el cuadro Controles de calidad.
- Selecciona el control en Controles de calidad disponibles y pulsa Añadir.
- Si el control tiene parámetros, escribe sus valores en el cuadro Parámetros del control de calidad y pulsa Aceptar.
- Pulsa Aceptar en el cuadro Controles de calidad y en el editor.
Digi3D.AI ejecuta los controles asignados al ejecutar las órdenes CONTROL_CALIDAD_COD, CONTROL_CALIDAD_ENTIDADES_VISIBLES y CONTROL_CALIDAD_SELECCION. Si están activadas la variable CONTROL_CALIDAD_AL_FINALIZAR_ENTIDAD y la propiedad Analizar control de calidad al digitalizar del código, Digi3D.AI ejecuta también los controles al terminar de digitalizar cada geometría, antes de guardarla en el archivo de dibujo.
Cómo se escriben los parámetros
El cuadro Parámetros del control de calidad guarda los valores como un diccionario de Python. Un número
entero sin ceros a la izquierda, un valor formado solo por ceros (0, 00) o un número con punto decimal
(0.5, .5, 020.) se guarda como número; el resto se guarda como texto. La regla completa está en
Cuadro de diálogo Parámetros del control de calidad.
Un código formado solo por cifras y sin cero a la izquierda, como 120400, se guarda por tanto como número.
Los controles convierten a texto el parámetro antes de buscar códigos, así que 120400 funciona igual que
un código guardado como texto. Un código con cero a la izquierda, como 020123, se guarda como texto y no
cambia. La conversión escribe el número tal como lo escribe Python, que puede ser distinto del código
original: 00 se guarda como 0, 12. como 12.0, .5 como 0.5 y 1.10 como 1.1. Esos códigos no
coinciden con el texto que se escribió.
Códigos, comodines y etiquetas
Los parámetros cuyo nombre empieza por código_o_etiqueta admiten una o varias palabras separadas por
espacios. La geometría cumple la condición si alguno de sus códigos coincide con alguna de las palabras:
?sustituye a un carácter:0201?3coincide con020123y con020133.*acepta el resto del código a partir de su posición:0201*coincide con020123y con0201ABC, pero no con0201, porque la comparación exige al menos un carácter en la posición del*.- Una palabra que empieza por
#es una etiqueta:#edificioscoincide con los códigos que tienen la etiquetaedificiosen la tabla de códigos activa.
La función que hace la comparación es compara_codigos_con_comodines:
def compara_codigos_con_comodines(codigo_a, codigo_b):
tamanoCodigoA = len(codigo_a)
tamanoCodigoB = len(codigo_b)
for i in range(min(tamanoCodigoA, tamanoCodigoB)):
if codigo_a[i] == '*' or codigo_b[i] == '*':
return True
if codigo_a[i] == '?' or codigo_b[i] == '?':
continue
if codigo_a[i] != codigo_b[i]:
return False
if tamanoCodigoA == tamanoCodigoB:
return True
return False
La geometría analizada no se compara consigo misma
Los controles de relación entre geometrías recorren las geometrías no borradas de todos los archivos
cargados (el archivo de dibujo y los archivos de referencia) con la función auxiliar alguna_geometria,
que salta la geometría analizada:
for g in no_eliminadas(digi3d.current_view()):
# No contamos la geometría que se está analizando
if g == geometría_analizando:
continue
Con las órdenes de control de calidad, la geometría analizada ya está en el archivo de dibujo. Aunque su
código coincida con el parámetro código_o_etiqueta_..., el control no la compara consigo misma. Por
ejemplo, si_es_punto_debe_estar_separado_de_punto con el mismo código del punto analizado solo da error
si otro punto con ese código no está separado de él.
Páginas de esta sección
- Controles de relación entre geometrías: áreas, líneas y puntos que deben tocarse, cruzarse, contenerse o estar separados.
- Controles de tipo y medidas: tipo de geometría, área, perímetro, dimensiones y distancia entre puntos.
- Controles de coordenada Z: Z constante, creciente o decreciente, curvas maestras y finas, diferencia con el MDT y diferencia de Z en las intersecciones.
- Controles de atributos: atributos de la geometría y de base de datos.
- Reglas de representación dinámica: color, color de relleno y grosor según el código, los atributos o las medidas de la geometría.
Véase también
- Controles de calidad
- Excepciones:
GeometryError,GeometryRelationError,GeometryWarningyDatabaseFieldError. - Pestaña Entorno Python