Dynamo es un entorno de programación visual integrado en Revit que permite automatizar procesos, validar información y generar contenido paramétrico. Esta guía resume lo esencial para trabajar con enfoque profesional, incluyendo Python y Revit API cuando haga falta.
Contenido
¿Qué es Dynamo para Revit?
Es un sistema de nodos y conexiones (cables) que ejecuta lógica para leer/escribir parámetros, crear/editar elementos, y analizar datos del modelo. Para ingeniería BIM, es clave para automatizar tareas repetitivas y estandarizar información.
Beneficios
- Automatización reproducible y auditable.
- Interoperabilidad (Excel/CSV/JSON/IFC).
- Iteración rápida y validación de reglas.
Limitaciones
- Dependencia de paquetes y versiones.
- Rendimiento inferior a C# en flujos masivos.
- Curva de aprendizaje con listas/levels.
Arquitectura y versiones
Dynamo corre embebido en Revit. Incluye Workspace, librerías de nodos, motor de geometría (Shape Manager) y puente a Revit API. Las versiones de Dynamo se acoplan a la versión de Revit.
Instalación & compatibilidad
En Revit 2021–2025, Dynamo viene incluido. Verifica versión desde Manage → Dynamo. Para ambientes controlados (obra/producción), define rutas de paquetes centralizadas.
Rutas sugeridas de paquetes
- Red compartida (solo lectura en producción).
- Repositorio Git para custom nodes.
Nodos, tipos de datos y librerías
Conoce bien string, number, boolean, list,
dictionary y tipos Revit (Element, Category, Parameter). Evita errores de niveles con
List.Map y el control de lacing.
Conversión típica
Element ⇄ ElementId, unidades internas (pies) vs unidades de proyecto.
Bibliotecas clave
Core, Revit, Geometry, List, Math; y paquetes según necesidad.
Flujo de trabajo profesional
- Definir objetivo: regla/validación/extracción/generación.
- Entradas: categorías, filtros, parámetros, Excel/JSON.
- Proceso: transformar, validar, limpiar duplicados.
- Salida: escribir parámetros, crear/editar elementos, reportes.
- Registro: log de cambios y tiempos por etapa.
Python & Revit API
El nodo Python permite operaciones transaccionales complejas, recorridos MEP, y control preciso de filtros. Úsalo para lotes grandes, manejo de excepciones y rendimiento.
try/finally.
Rendimiento y escalabilidad
- Evita recálculos con nodos Freeze y booleans de activación.
- Usa FilteredElementCollector en Python con filtros por categoría/param.
- Divide grandes lotes (chunking) y registra a archivo en vez de usar Watch pesados.
Buenas prácticas BIM
- Nombres claros y grupos por etapa; colores de guía.
- Validación previa antes de modificar el modelo.
- Subgrafos / custom nodes por responsabilidad única.
- Encabezado del grafo con objetivo, alcance y versión.
Paquetes y versionado
Recomendados: Clockwork, Data-Shapes, Genius Loci, SteamNodes, Orchid (según compatibilidad de tu Revit).
Seguridad y robustez
- Valida tipos/rangos de entrada antes de escribir.
- Transacciones controladas y reversibles.
- Backups y pruebas en vistas/elementos duplicados cuando sea viable.
Casos de uso
Normalización de parámetros
Estandariza nombres/tipos/valores; reporta cumplimiento.
Auditoría MEP
Conectividad, detección de elementos desconectados, verificación de pendientes.
Generación paramétrica
Creación y acomodación masiva de elementos bajo reglas.
Tabla comparativa
| Aspecto | Dynamo (Nodos) | Dynamo (Python) | C# Add-in |
|---|---|---|---|
| Velocidad | Media | Media–Alta | Alta |
| Mantenimiento | Visual | Medio | Formal/IDE |
| Acceso a API | Indirecto | Directo | Directo |
| Despliegue | Script | Script | ADDIN/Instalador |
| Casos ideales | Rápidos | Avanzados puntuales | Soluciones robustas |
Troubleshooting
- List levels: alinea profundidades con
List.Mapy lacing. - Unidades: confirma conversiones (pies internos ↔ proyecto).
- Paquetes: congela versiones; si falla un nodo crítico, reemplázalo por Python.
Recursos
- Documentación oficial de Dynamo.
- Foros de Revit API.
- Repos de ejemplo y guías internas de tu organización.