DrawingView
Módulo: digi3d
Representa la ventana de dibujo de Digi3D.AI. Es el objeto central de un guion en el panel: da acceso a las geometrías cargadas, las órdenes, la configuración de dibujo y los servicios de la vista.
Se obtiene con current_view():
import digi3d
view = digi3d.current_view()
Acceso a las geometrías
La ventana se comporta como una secuencia con todas las geometrías de todos los archivos de dibujo cargados:
| Operación | Descripción |
|---|---|
len(view) |
Número total de geometrías. |
view[i] |
Geometría en la posición i. |
for geometry in view: |
Recorre todas las geometrías. |
Las geometrías que devuelve son propiedad de la aplicación: no se pueden reasignar (
view[i] = ...lanzaTypeError).
Geometrías de cada archivo
view.files es la lista de archivos cargados: el primero es el archivo de dibujo y los demás son los
archivos de referencia. La propiedad file de cada geometría
devuelve el archivo que la contiene. Para trabajar con las geometrías de un archivo, recorre view y
filtra por g.file.
No recorras un view.files[i] para obtener sus geometrías: la iteración de
DrawingFile lee el archivo desde el disco y solo sirve para un archivo
abierto con digi21.io.
import collections
import digi3d
view = digi3d.current_view()
# Número de geometrías de cada archivo cargado
por_archivo = collections.Counter(g.file.path for g in view if g.file is not None)
for ruta, cantidad in por_archivo.items():
print(f"{ruta}: {cantidad} geometrías")
# Geometrías de un archivo de referencia concreto
referencia = view.files[1]
geometrias = [g for g in view if g.file is not None and g.file.path == referencia.path]
print(len(geometrias))
Ejemplo: localizar en qué archivo están las geometrías alejadas de la zona de trabajo, que hacen que el zoom extendido muestre la cartografía como un punto.
import math
import statistics
import digi3d
view = digi3d.current_view()
geometrias = [g for g in view if not g.deleted]
# Centro de la zona de trabajo: la mediana de los centros de las geometrías
cx = statistics.median((g.min[0] + g.max[0]) / 2 for g in geometrias)
cy = statistics.median((g.min[1] + g.max[1]) / 2 for g in geometrias)
for g in geometrias:
distancia = math.hypot((g.min[0] + g.max[0]) / 2 - cx, (g.min[1] + g.max[1]) / 2 - cy)
if distancia > 20000:
archivo = g.file.path if g.file is not None else "(sin archivo)"
print(f"{distancia / 1000:.1f} km {[c.code for c in g.codes]} {archivo}")
Geometrías: añadir, borrar y recuperar
| Método | Descripción |
|---|---|
add(geometry) |
Añade una geometría al archivo de dibujo activo. Lanza error si ya pertenece a un archivo. |
add(geometries) |
Añade una lista de geometrías. |
delete(geometry) |
Borra una geometría. |
delete(geometries) |
Borra un iterable o una lista de geometrías. |
recover(geometry) |
Recupera una geometría borrada. |
recover(geometries) |
Recupera un iterable o una lista de geometrías borradas. |
En Digi3D.AI borrar no elimina realmente la geometría: solo la marca como borrada (lo indica la propiedad
deletedde la geometría). Por eso se puede recuperar conrecover. Pasar una lista adelete/recoveres bastante más rápido que llamarlos de una en una.
linea = digi3d.Line(["CARR"], [(0, 0, 0), (10, 0, 0)])
view.add(linea)
# Borrar en bloque, y poder deshacerlo si hace falta
seleccion = [g for g in view if g.has_code("020123")]
view.delete(seleccion)
# ... si algo va mal:
view.recover(seleccion)
Tabla de códigos
La ventana da acceso a la tabla de códigos (digi.tab) del proyecto con la propiedad
digitab (la tabla como secuencia de
DigiTabNode) y con digi_tab (un diccionario
{código: DigiTabNode}).
| Método | Devuelve | Descripción |
|---|---|---|
find_codes(concept) |
list[str] |
Códigos cuyo código, descripción, etiquetas o alias contienen el concepto (sin distinguir mayúsculas ni acentos). |
find_codes es la forma cómoda de localizar geometrías por concepto sin conocer sus códigos
de antemano:
# Zoom al primer edificio del dibujo
codigos = view.find_codes("edificio") # p. ej. ['050146', '050147', ...]
for g in view:
if any(c.code in codigos for c in g.codes):
view.zoom_geometry(g)
break
find_codesconsulta la tabla de códigos del proyecto (el catálogo). Que un código exista no implica que haya geometrías que lo usen en el dibujo cargado.
Órdenes
| Miembro | Tipo | Descripción |
|---|---|---|
run_command(command) |
método | Ejecuta una orden por su nombre. |
add_command(command) |
método | Ejecuta una orden (PythonCommand) y la inicializa. |
command_push(command, send_on_lost_event_to_current_command=True) |
método | Apila una orden (Command) en el tope de la pila. Acepta también el nombre de la orden (str). |
command_pop() |
método (bool) |
Quita la orden activa de la pila devuelve True si queda otra. |
command_top |
propiedad (L) | La orden actual (Command). |
Transformación de coordenadas
| Método | Devuelve | Descripción |
|---|---|---|
to_geo(coordinates) |
tuple |
Transforma unas coordenadas del sistema de la ventana a geográficas (EPSG:4326) devuelve (longitud, latitud). |
project(coordinates) |
float | None |
Proyecta las coordenadas sobre el terreno y devuelve la z resultante (o None si no se puede). Acepta (x, y, z), (x, y) o x, y. |
lon, lat = view.to_geo((430000, 4480000, 700))
z = view.project((430000, 4480000))
Zoom y redibujado
| Método | Descripción |
|---|---|
redraw() |
Fuerza a regenerar la ventana de dibujo. |
zoom_extents() |
Hace un zoom a la extensión total. |
zoom_geometry(geometry) |
Hace un zoom a la geometría indicada. |
Diálogos
| Método | Devuelve | Descripción |
|---|---|---|
ask_code(title, allow_multiple_selection=False) |
tuple[str] |
Muestra el diálogo de selección de código y devuelve los códigos elegidos. |
Propiedades de información
| Propiedad | Tipo | Descripción |
|---|---|---|
min |
tuple |
Coordenadas mínimas (x, y, z) de la ventana. |
max |
tuple |
Coordenadas máximas (x, y, z) de la ventana. |
cursor_coordinates |
tuple |
Coordenadas (x, y, z) del cursor. |
wkt |
str |
Cadena WKT del sistema de coordenadas de la ventana. |
epsg_codes |
tuple |
(epsg_horizontal, epsg_vertical). |
files |
iterable | Archivos de referencia cargados (DrawingFile). |
drawing_file |
DrawingFile |
Archivo de dibujo activo. |
digitab |
DigiTab | Tabla de códigos activa del proyecto (secuencia de DigiTabNode) la posición de cada nodo coincide con el digitab_index de los códigos de las geometrías. |
digi_tab |
dict |
Diccionario {código: DigiTabNode} de la tabla activa. |
geographic_calculator |
GeographicCalculator | Calculadora geográfica de la ventana. |
topologies |
dict |
Diccionario {nombre: [Topology]} de las topologías cargadas. |
camera |
Camera | Cámara activa (lectura/escritura). |
epsilon |
float |
Valor de epsilon configurado. |
Valores activos de dibujo
| Propiedad | Tipo | Descripción |
|---|---|---|
codes |
list[str] |
Códigos activos. |
active_scale |
tuple |
Factor de escala (x, y, z) de inserción de bloques. |
active_distance |
float |
Distancia activa. |
secondary_active_distance |
float |
Distancia activa secundaria. |
text_height |
float |
Altura de texto activa. |
active_angle |
float |
Ángulo activo. |
equidistance |
float |
Equidistancia. |
drawing_scale |
tuple |
Escala de dibujo para la representación de símbolos y patrones. |
Visualización
| Propiedad | Tipo | Descripción |
|---|---|---|
background_color |
int |
Color de fondo. |
unknown_color |
int |
Color de las geometrías con código desconocido. |
show_solid_polygons |
bool |
Activa/desactiva el relleno de geometrías cerradas. |
blending |
bool |
Activa/desactiva la mezcla de colores. |
show_deleted |
bool |
Muestra las geometrías marcadas como eliminadas. |
show_pattern |
bool |
Muestra los patrones. |
cursor_size |
int |
Tamaño del cursor. |
decimal_count |
int |
Número de decimales a mostrar en las coordenadas. |
lock_coordinate_z |
bool |
Bloquea/desbloquea la coordenada Z. |
Modos de búsqueda y tentativo
| Propiedad | Tipo | Descripción |
|---|---|---|
search_mode |
int |
Modo de búsqueda activo. |
auto_search_mode |
bool |
Modo de búsqueda automático. |
exhaustive_auto_search_mode |
bool |
Modo de búsqueda automático exhaustivo. |
verify_snap |
bool |
Verificación de tentativo. |
goto_snap |
bool |
Ir al tentativo. |
finalize_line_when_snap |
bool |
Finaliza la línea al tentativar. |
cut_lines_when_snap |
bool |
Corta las líneas al tentativar. |
insert_vertex_when_snap |
bool |
Inserta vértice al tentativar. |
Al finalizar una línea
| Propiedad | Tipo | Descripción |
|---|---|---|
close_line_when_finish_line |
bool |
Cierra la línea al finalizar. |
generalize_line_when_finish_line |
bool |
Generaliza la línea al finalizar. |
parallelize_line_when_finish_line |
bool |
Paraleliza la línea al finalizar. |
smooth_line_when_finish_line |
bool |
Suaviza la línea al finalizar. |
generalization_tolerance |
float |
Tolerancia de generalización. |
angular_tolerance |
float |
Tolerancia angular de generalización. |
Otras opciones
| Propiedad | Tipo | Descripción |
|---|---|---|
fixed_xy |
bool |
Bloquea las coordenadas X, Y. |
fixed_z |
bool |
Bloquea la coordenada Z. |
continuous_mode_increment |
float |
Distancia para el modo continuo. |
input_device |
InputDevice | Dispositivo de entrada. |
auto_panning_mouse |
bool |
Zoom centrado automático con el ratón. |
auto_panning_photogrammetric_window |
bool |
Zoom centrado automático en la ventana fotogramétrica. |
overlap |
float |
Porcentaje de solape en el zoom centrado automático. |
automatic_mode |
bool |
Modo automático. |
repeat |
bool |
Repetición automática de comandos. |
block_repeat |
bool |
Bloquea el mecanismo de repetición. |
Otros métodos
| Método | Descripción |
|---|---|
close() |
Cierra la ventana de dibujo y sus archivos, igual que cuando la cierra el usuario. Las geometrías ya están guardadas en los archivos, así que no se pierde nada. Devuelve False si la ventana sigue abierta porque el usuario ha cancelado el aviso de geometrías borradas. Después de cerrarla, no uses este objeto. |
Véase también
- Funciones del módulo —
current_view. - Referencia: Geometrías