Funciones del módulo

Módulo: digi3d

Funciones disponibles directamente en el módulo digi3d.

current_view

current_view() -> DrawingView

Devuelve la DrawingView activa (o None si no hay ninguna). Es el punto de entrada habitual de un guion. Si la ventana activa es la ventana fotogramétrica, devuelve la ventana de dibujo abierta.

Abrir un dibujo

open_drawing(path, code_table=None, scale=None, register_increment=None, equidistance=None,
             text_height=None, tolerance=None, z_correction=None, sigma=None, crs_wkt=None,
             references=None) -> DrawingView

Abre un archivo de dibujo en una ventana de dibujo nueva y devuelve su DrawingView. Hace lo mismo que el cuadro de abrir dibujo, sin mostrarlo. Si el archivo no existe, el formato lo crea.

Digi3D.AI abre un solo dibujo a la vez: si ya hay uno abierto, la función lanza RuntimeError. Ciérralo antes con DrawingView.close().

Argumento Tipo Descripción
path str Ruta del archivo de dibujo. La carpeta tiene que existir.
code_table str Ruta de la tabla de códigos. El archivo tiene que existir.
scale float Escala de visualización de los patrones.
register_increment float Incremento de registro.
equidistance float Equidistancia entre curvas de nivel.
text_height float Altura de los textos.
tolerance float Tolerancia de generalización.
z_correction float Corrección de Z.
sigma float Sigma.
crs_wkt str Sistema de coordenadas de la ventana de dibujo, en WKT.
references list[str] Archivos de referencia que se cargan. Si no se indica, se cargan los archivos de referencia guardados con el dibujo. Un archivo que no estaba guardado queda guardado con el dibujo, igual que cuando lo carga el usuario.

Los argumentos que no se pasan toman los últimos valores usados en el cuadro de abrir dibujo. Los que se pasan quedan como últimos valores usados, igual que con el cuadro; si el dibujo no se puede abrir, Digi3D.AI restaura los valores anteriores. Las opciones del formato son las últimas que se usaron con ese formato.

open_drawing, open_project, load_model y open_photogrammetric_file no muestran ningún cuadro de diálogo, para que un guion o un cliente MCP no se quede esperando a que el usuario conteste. Cuando Digi3D.AI preguntaría algo al usuario, la función toma la respuesta prudente y escribe un aviso que empieza por Warning: en la salida del guion:

Situación Respuesta
Un archivo de referencia no existe. No se carga; el resto del dibujo se abre.
La tabla de códigos no se puede cargar. El dibujo no se abre.
Hay que elegir la transformación entre dos sistemas de coordenadas y no hay ninguna guardada. El archivo no se carga. Ábrelo una vez desde Digi3D.AI para elegirla; después se usa la guardada.
Varios formatos pueden leer el archivo. El archivo no se carga.
El archivo no tiene sistema de coordenadas. Lo mismo que cancelar el cuadro de selección del sistema de coordenadas.
Hay que elegir las capas o tablas del archivo. El archivo no se carga.
El proyecto fotogramétrico no tiene sistema de coordenadas. Se carga con un sistema local, sin crear el archivo .prj.
Cualquier otro mensaje con botones. No, cancelar o abortar, según los botones del mensaje.

Si open_drawing falla, el mensaje de la excepción incluye los avisos. Las órdenes de inicio que ejecutan la tabla de códigos y el dibujo al abrir la ventana también reciben las respuestas prudentes.

Algunos cuadros no se pueden evitar todavía y siguen esperando al usuario: el aviso de licencia, la petición del sistema de coordenadas de un modelo de cámara cónica cuya aerotriangulación no lo tiene y la elección del sistema de coordenadas de un GeoPackage que tiene varios.

import digi3d

view = digi3d.current_view()
if view is not None:
    view.close()
view = digi3d.open_drawing(r"C:\Proyectos\hoja2.bin", code_table=r"C:\Proyectos\tabla.tab")

Ventana fotogramétrica y proyectos

photogrammetric_view

photogrammetric_view() -> PhotogrammetricView | None

Devuelve la ventana fotogramétrica activa, o None si no hay ninguna.

open_photogrammetric_file

open_photogrammetric_file(path) -> PhotogrammetricView

Abre un archivo de modelo fotogramétrico (.d3d) en una ventana fotogramétrica nueva y la devuelve. Lanza ValueError si el archivo no es .d3d y RuntimeError si Digi3D.AI no puede abrirlo.

open_project

open_project(path) -> bool

Carga un proyecto fotogramétrico en el panel de proyectos, igual que el botón Cargar del panel. Devuelve False si no se ha cargado; Digi3D.AI muestra el motivo al usuario. Si el proyecto no tiene sistema de coordenadas, Digi3D.AI se lo pide al usuario y la función espera la respuesta.

project

project() -> dict | None

Devuelve el proyecto cargado en el panel de proyectos, o None si no hay ninguno:

Clave Tipo Descripción
file str Ruta del archivo del proyecto.
viewpoint str Punto de vista seleccionado en el panel.
viewpoints list[str] Puntos de vista del proyecto.
models list[dict] En un proyecto de modelos, los modelos del punto de vista seleccionado: strip (pasada), name (nombre) y loadable (si se puede cargar).
photos list[str] En un proyecto de fotos, los nombres de las fotos.

load_model

load_model(name, new_window=False) -> bool

Carga un modelo del proyecto, igual que un clic en un modelo del panel de proyectos. En un proyecto de fotos, el nombre del modelo es izquierda-derecha, con los nombres de dos fotos distintas.

  • Si hay una ventana fotogramétrica abierta, el modelo sustituye al de esa ventana y se carga en segundo plano después de que termine el guion. Comprueba model_name en un guion posterior.
  • Si no hay ninguna ventana, o con new_window=True, abre una ventana fotogramétrica nueva antes de devolver.

Lanza RuntimeError si no hay ningún proyecto cargado y ValueError si el proyecto no tiene ese modelo en el punto de vista seleccionado o si el panel muestra el modelo deshabilitado. Devuelve False si no ha podido empezar la carga.

import digi3d

if digi3d.open_project(r"C:\Proyectos\vuelo.d3dprj"):
    modelos = digi3d.project()["models"]
    digi3d.load_model(modelos[0]["name"])

Mensajes y avisos

Función Descripción
music(type=MusicType.Beep) Hace sonar uno de los sonidos estándar (MusicType).
print_statusbar(message) Escribe un mensaje en la barra de estado.
show_ballon(title, body, icon=BallonType.Info, time=1000) Muestra un globo informativo temporal (BallonType).
progress(value=-1) Actualiza la barra de progreso (porcentaje).
ask_question(question) Muestra un diálogo modal Sí/No
devuelve True o False.
show_info(message) Muestra un diálogo modal con información para el usuario.

Paneles de resultados y tareas

Función Descripción
show_results(show=True) Muestra u oculta el panel de resultados.
clear_results() Limpia el panel de resultados.
add_result(message, scroll=True, update=True) Añade una línea al panel de resultados.
get_results() Devuelve el contenido del panel de resultados (str).
show_tasks(show=True) Muestra u oculta el panel de tareas.
clear_tasks() Limpia el panel de tareas.
add_task(task) Añade una tarea al panel de tareas.

Diálogo de archivo

ask_file(load, filetypes, title=None) -> str | None

Muestra un cuadro de diálogo de abrir/guardar archivo y devuelve la ruta elegida (o None si se cancela).

Argumento Tipo Descripción
load bool True para abrir, False para guardar.
filetypes list[tuple] Lista de pares (descripción, extensión), p. ej. [("AutoCAD DWG", "*.dwg")].
title str Título del diálogo (opcional).

Utilidades de geometría

Función Devuelve Descripción
same_coordinates(a, b) bool Indica si dos coordenadas son idénticas teniendo en cuenta el sigma activo. Acepta (x,y,z), (x,y) o un único valor.
non_connected(geometries) list Devuelve los extremos no conectados: lista de (geometría, índice_de_vértice) cuyo vértice inicial/final no comparte nodo con ningún otro.
get_intersections(geometry, geometries) dict Vértices de geometry que coinciden con vértices de otras geometrías: {(x, y): {geometría: índice_de_vértice}}.

Ejemplo

import digi3d

view = digi3d.current_view()

digi3d.show_results(True)
digi3d.add_result(f"La ventana tiene {len(view)} geometrías")

if digi3d.ask_question("¿Continuar?"):
    digi3d.music(digi3d.MusicType.End)

Véase también