Guía de Dynamo BIM. Programación visual para la automatización del diseño

En la era del diseño BIM, la capacidad de automatizar tareas rutinarias ya no es una ventaja competitiva: es una habilidad obligatoria.

A continuación, presentamos una guía completa de Dynamo BIM que te llevará desde los conceptos básicos hasta las aplicaciones prácticas, permitiéndote:

  • Entender cómo funciona Dynamo.
  • Escribir tus propios scripts.
  • Trabajar con listas de cualquier complejidad.
  • Automatizar tareas en Revit y otros softwares.
  • Comprender cuándo es mejor usar C# y una aplicación completa.

Introducción al mundo de Dynamo

Dynamo es un entorno de programación visual de código abierto que se utiliza principalmente como una extensión para Autodesk Revit, aunque también está disponible para Civil 3D, FormIt, ALIAS, Advance Steel y como una versión independiente (Dynamo Sandbox).

Dynamo soft 1

En el diseño BIM tradicional, los usuarios están limitados a las herramientas proporcionadas por los desarrolladores de software. Por ejemplo, en Autodesk Revit, si necesitas renumerar 500 puertas según un algoritmo específico, tendrías que hacerlo manualmente en el Revit estándar. Dynamo te permite crear tu propia herramienta para esta tarea conectando varios bloques funcionales, comúnmente llamados nodos.

Dynamo soft 2

Teoría de la programación visual

La programación visual es un método para crear lógica mediante la manipulación de elementos gráficos en lugar de escribir texto. En lugar de líneas de código, utilizas nodos y conexiones (cables) entre ellos.

El pensamiento algorítmico es la clave para dominar Dynamo. Cualquier tarea en Dynamo suele desglosarse en tres etapas:

  • Entrada (Recolección de datos): Seleccionar elementos en el modelo de Revit (por ejemplo, todas las paredes del segundo piso).
  • Proceso (Procesamiento): Realizar operaciones (filtrar, calcular áreas, cambiar parámetros).
  • Salida (Resultado): Escribir los datos de vuelta en el modelo o crear nueva geometría.

Dynamo ejemplo

Flujo de datos (Dataflow)

A diferencia de la programación clásica, donde la computadora ejecuta instrucciones estrictamente en orden:

  1. Paso 1
  2. Paso 2
  3. Paso 3

En la programación visual, el programa es un grafo dirigido.

Tan pronto como los datos entran en un puerto de entrada de un nodo, el nodo "se activa", realiza su función asignada e instantáneamente pasa el resultado más adelante en la cadena. Si cambias un valor al principio del grafo, toda la cadena se recalcula automáticamente.


Principales ventajas y desventajas de la programación visual

Ventajas

  • Baja barrera de entrada (Accesibilidad): Un ingeniero no necesita memorizar la sintaxis de un lenguaje. El enfoque principal está en la lógica del proceso, no en las reglas de escritura de código. Generalmente, no necesitas ser un programador profesional.
  • Retroalimentación visual instantánea: En Dynamo, la geometría se crea en paralelo con el ensamblaje del script. Puedes ver inmediatamente en 3D cómo el cambio de un control deslizante altera la forma de toda una fachada o la posición de cientos de elementos.
  • Transparencia de la lógica: Un script bien estructurado parece un diagrama de flujo. Es más fácil para un colega que no participó en el desarrollo "leerlo" que interpretar 500 líneas de texto en C#.
  • Modularidad: Puedes reemplazar fácilmente partes del algoritmo simplemente reconectando "cables", lo que facilita el prototipado rápido y la experimentación.
  • Gran comunidad: Siempre puedes encontrar un paquete listo para usar o una respuesta en el foro (Dynamo BIM Forum).

Desventajas

  • Problemas de escalabilidad ("Código Espagueti"): Cuando un algoritmo se vuelve realmente complejo (cientos de nodos), el mapa visual se convierte en una maraña de conexiones. Mantener y depurar tales scripts se vuelve físicamente difícil.
  • Conjunto de herramientas limitado: Estás limitado al conjunto de nodos disponibles en la biblioteca. Si falta una función específica, aún debes bajar un nivel a la programación textual (PythonScript).
  • Rendimiento: La interfaz visual consume recursos. Renderizar cada nodo y su estado en tiempo real hace que Dynamo sea más lento que el código C# compilado, especialmente con conjuntos de datos masivos.
  • Dificultad de depuración: En el código textual, puedes avanzar línea por línea. En un grafo visual, es más difícil rastrear exactamente en qué etapa y por qué falló un elemento específico dentro de una lista larga.
  • Problemas de versiones: Un script escrito en Dynamo 2.0 podría no abrirse correctamente en la versión 3.0.
  • Dependencia de paquetes: Si usas un nodo de un paquete de terceros, el script no funcionará para otro usuario si no tiene ese paquete instalado.

Dynamo big project example

Este trasfondo teórico ayuda a explicar por qué Dynamo es tan popular entre los arquitectos: habla el lenguaje de los diagramas e imágenes mientras sigue siendo una poderosa herramienta computacional.


Conceptos básicos e interfaz de Dynamo

La interfaz de Dynamo es intuitiva, pero oculta herramientas poderosas en su interior.

El espacio de trabajo se divide en cuatro zonas clave:

  • Biblioteca: Ubicada a la izquierda. Contiene todos los nodos, categorizados en: Dictionary, Display, Geometry, ImportExport, Input, List, Math, Script, String. Una sección separada está dedicada a Revit, con nodos para trabajar con elementos del modelo.
  • Lienzo (Canvas): El campo principal donde colocas los nodos y los conectas con "cables".
  • Barra de ejecución: En la esquina inferior izquierda. Aquí eliges el modo de ejecución: Automático (el script se activa con cualquier cambio) o Manual (el botón "Ejecutar").
  • Navegación 3D: Dynamo permite cambiar entre el modo de edición de nodos y el modo de vista de geometría (Ctrl+B). Puedes rotar puntos y líneas creados directamente "detrás" de tus algoritmos.

Dynamo UI

Nodos

Un nodo es una "caja" que realiza una función específica. Tiene puertos de entrada (izquierda) y puertos de salida (derecha). Casi todos los nodos se dividen en tres categorías principales:

  • Create (Crear): Crea geometría o datos (Point.ByCoordinates).
  • Action (Acción): Realiza una acción (Element.SetParameterByName).
  • Query (Consulta): Solicita información (Element.GetParameterValueByName).

El color y la indicación de los nodos señalan su estado actual:

  • Gris: El nodo funciona normalmente.
  • Gris oscuro: El nodo está seleccionado (activo).
  • Amarillo (Advertencia): Hay un error de lógica (ej. intentar sumar un número y texto). Seguirá funcionando, pero el resultado podría ser incorrecto.
  • Rojo (Error): Un error crítico; la ejecución del script se detuvo.
  • Congelar (Freeze): Puedes "congelar" un nodo mediante el menú del botón derecho. Todo lo que le siga en la cadena dejará de ejecutarse. Útil para depurar scripts pesados.

Advertencia de Nodos

Biblioteca

A la izquierda hay una lista en forma de árbol de todos los nodos disponibles. Aquí también se encuentran los Paquetes (Packages) personalizados: conjuntos de nodos creados por la comunidad (ej. los legendarios LunchBox, Clockwork o Springs).

Lienzo

Es un lienzo infinito. Es importante mantener la "higiene del script": agrupar nodos, etiquetarlos y evitar cruzar cables para que tu algoritmo no se convierta en "código espagueti".


Dynamo Player: Una interfaz para todo el equipo

Si Dynamo es el "taller de ensamblaje", el Dynamo Player (Reproductor de Dynamo) es el panel de control amigable. Fue creado para que los diseñadores usen la automatización sin ver la maraña de nodos y sin riesgo de cambios accidentales.

Jugador Dynamo

¿Por qué usar el Player?

Muchos ingenieros se estresan al ver cientos de nodos. Dynamo Player resuelve tres problemas:

  • Seguridad: El script se ejecuta en un modo "protegido", evitando el borrado accidental de nodos.
  • Simplicidad: El usuario solo ve los parámetros que el autor del script permitió cambiar.
  • Velocidad: No necesitas esperar a que cargue la pesada interfaz de Dynamo para ejecutar una automatización.

Interfaz moderna (2024–2026)

A partir de Revit 2023, el Player recibió una actualización global. Ahora es un catálogo completo de herramientas.

  • Tarjetas de script: Cada script puede tener su propio icono (vista previa) y descripción corta.
  • Información del autor y enlaces: Puedes incluir el nombre del desarrollador y un enlace a las instrucciones en la tarjeta.
  • Estado de ejecución: El Player muestra claramente el resultado: una marca de verificación verde (éxito), una señal amarilla (completado con advertencias) o rojo (error).

Versiones de Dynamo y características del flujo de trabajo

El desarrollo de Dynamo no ha sido lineal, y la transición entre versiones a menudo causó dolores de cabeza.

Sobre Dynamo

El problema de Python: IronPython 2.7 vs. CPython 3

Durante mucho tiempo, Dynamo usó el motor IronPython 2.7, que permitía un acceso fácil a las bibliotecas .NET pero se volvió obsoleto. A partir de la versión 2.7, Dynamo introdujo soporte para CPython3.

  • Problema: Los scripts escritos en Python 2 a menudo no funcionan en Python 3 debido a diferencias sintácticas (ej. print "hola" vs. print("hola")).
  • Solución: Las nuevas versiones de Dynamo tienen un "Asistente de migración" integrado.
  • Alternativa: Instalar el paquete de emulación de IronPython 2.7.

Python

Dynamo Sandbox vs. Versiones integradas

  • Dynamo para Revit: Un "plugin" que tiene acceso a las bibliotecas de la API de Revit. No funciona sin Revit abierto.
  • Dynamo Sandbox: Versión independiente. No puede ver Revit, paredes o ventanas. Se usa para matemáticas puras, geometría o lógica de desarrollo.

Compatibilidad de versiones de Revit

Desde 2020, Dynamo viene integrado en Revit. Ya no puedes instalar cualquier versión de Dynamo en cualquier versión de Revit.

  • Revit 2022 usa Dynamo 2.10–2.12.
  • Revit 2024 funciona con Dynamo 2.17+.
  • Revit 2025 pasó a Dynamo 3.0+.

Trabajando con datos: Listas y Lacing

Este es el tema más difícil para los principiantes. Dynamo trabaja con listas de datos. Si ingresas una lista de 5 puntos y 5 radios para crear círculos, es sencillo. ¿Pero qué pasa si hay 5 puntos y solo un radio? ¿O 10?

Niveles de lista (List Levels)

Permiten trabajar con estructuras anidadas (listas dentro de listas). Los niveles @L1, @L2, @L3 ayudan a especificar en qué nivel de la estructura debe operar el nodo.

Lacing (Entrelazado)

Determina cómo se emparejan los elementos de diferentes listas:

  • Shortest (Más corto): Funciona hasta que se agota la lista más corta.
  • Longest (Más largo): El último elemento de la lista corta se repite hasta que termina la larga.
  • Cross Product (Producto vectorial): Cada elemento de la primera lista interactúa con cada elemento de la segunda. Crea matrices de datos.

List


Python en Dynamo: Desbloqueando la API de Revit

Si los nodos estándar y los paquetes de terceros no son suficientes, abres el nodo Python Script. Aquí es donde comienza la verdadera magia.

Python Script

¿Por qué usar Python?

  • Acceso directo a la API de Revit: Muchas funciones de Revit no están expuestas como nodos estándar.
  • Bucles y condiciones complejas: Escribir ramas if-else o bucles for en texto es mucho más conveniente que construir laberintos de nodos.
  • Rendimiento: El procesamiento de grandes conjuntos de datos en Python suele ser más rápido.

Dynamo vs. Programación en C#

Muchos se preguntan: "¿Debo seguir trabajando en Dynamo o es hora de cambiar a C# y escribir plugins completos?"

CriterioDynamo BIMC# (Revit API / Add-ins)
Barrera de entradaBaja. Intuitivo para diseñadoresAlta. Requiere entender POO y Visual Studio
Velocidad de desarrolloMuy alta para tareas simplesMedia. Requiere compilación y depuración
RendimientoMedio. Gasta recursos en gráficosMáximo. Trabaja directo con la memoria
Interfaz (UI)Limitada al Dynamo PlayerLibertad total (WPF, formularios, cinta de Revit)
Protección de códigoCasi ninguna; el script se abre fácilAlta (el código se compila en una .dll)

Dynamo es ideal para tareas operativas y diseño generativo. C# es necesario para estándares corporativos y herramientas complejas con interfaces únicas.


Ejemplos prácticos de implementación

Ejemplo 1: Numeración automática de habitaciones a lo largo de una línea

  • Lógica: El script selecciona una línea de modelo, encuentra las habitaciones que intersecta, las ordena según el vector de la línea y les asigna números (101, 102, etc.).
  • Resultado: Ahorra horas de trabajo manual y elimina errores de numeración.

Ejemplo 2: Transferencia de datos de Excel a parámetros de Revit

  • Lógica: Dynamo lee un Excel, busca los IDs de los elementos en el modelo y escribe los valores (ej. números de artículo) en el parámetro correcto.
  • Resultado: Actualización instantánea de parámetros en tablas de planificación.

Ejemplo 3: Creación de aperturas en intersecciones de tuberías y muros

  • Lógica: Encuentra interferencias (Clash Detection) entre tuberías y muros. En el punto de intersección, inserta una familia de "Hueco/Apertura" con dimensiones basadas en el diámetro del tubo.
  • Resultado: Automatización total de tareas para estructuras y ahorro masivo de tiempo.

Dynamo AR and MEP example


Conclusión

Dynamo es una herramienta poderosa que te permite pasar del trabajo manual en Revit a la automatización y al pensamiento algorítmico. Es excelente para tareas repetitivas y para crear scripts rápidamente.

El camino óptimo de desarrollo es usar Dynamo para automatización y prototipado, dominar gradualmente Python y, si es necesario, pasar al desarrollo completo con la API de Revit. ¡Empieza con tareas simples y pronto crearás algoritmos complejos que te harán destacar en el mercado BIM moderno!

Puede que le guste esto

Qué es el Diseño y Construcción Virtual
BIM

Qué es el Diseño y Construcción Virtual

15 Feb, 2026
263
BIM debe ayudar, no obstaculizar
BIM

BIM debe ayudar, no obstaculizar

13 Jan, 2026
244
Todo lo que Debe Saber Sobre el Nivel de Detalle en BIM
BIM

Todo lo que Debe Saber Sobre el Nivel de Detalle en BIM

21 May, 2023
299