Borrar el enlace a base de datos
Archivo: borra_atr.py · orden BORRA_ATR, sin parámetros. También se puede ejecutar desde el
panel de Guiones Python.
Recorre todas las geometrías del dibujo y las sustituye por clones cuyos códigos son nuevos, sin enlace a la base de datos (sin tabla, ni registro, ni atributos).
Cómo se usa
Escribe en la línea de comandos:
BORRA_ATR
El código
import digi3d
view = digi3d.current_view()
def creaClonSinAtributosBaseDatos(entidad):
"""Crea un clon de la entidad sustituyendo sus códigos por unos nuevos sin diccionario de BBDD.
Argumentos:
entidad: Entidad a clonar
Devuelve:
Entidad clonada sin enlace a base de datos
"""
clon = entidad.clone()
codes = []
for codigo in entidad.codes:
codes.append(digi3d.FeatureCode(codigo.code))
clon.codes = tuple(codes)
return clon
eliminar = []
anadir = []
for entidad in view:
anadir.append(creaClonSinAtributosBaseDatos(entidad))
eliminar.append(entidad)
view.add(anadir)
view.delete(eliminar)
view.redraw()
Cómo funciona
entidad.clone()crea una copia editable de la geometría (las geometrías de la vista son de solo lectura).- Los códigos se recrean a partir de su cadena: por cada código de la geometría, el guion toma solo
la cadena (
codigo.code) y construye un código nuevo condigi3d.FeatureCode(codigo.code).- El constructor
FeatureCode(code)recibe la cadena del código y crea un código sin tabla, ni identificador, ni atributos de base de datos. - Para conservar la tabla y el registro hay que copiar también las propiedades
.tablee.iddel código original, como hace el ejemplo renomcod.
- El constructor
clon.codes = tuple(codes)asigna la nueva lista de códigos al clon.- El guion acumula los clones en la lista
anadiry los originales en la listaeliminar, y aplica los cambios en bloque conview.add(...)yview.delete(...). - El bucle recorre todas las geometrías de la vista, también las borradas.
Véase también
- FeatureCode —
code,table,id,attributes - Geometry —
clone,codes