Antes de que existiera Dynamo en mi oficina, teníamos una carpeta compartida en Google Drive llamada "Scripts Varios". Dentro: un archivo .dyn llamado "cosa_que_hace_algo.dyn" sin documentación, sin autor, sin explicación. Nadie sabía qué hacía. Todos le tenían miedo.
Esa experiencia me enseñó algo importante: tus scripts deben ser entendibles por cualquier persona de tu equipo. No por ti dentro de 3 meses, sino por el ingeniero nuevo que llega mañana.
Los tres scripts que te voy a mostrar son los que uso semanalmente. Son simples, están documentados, y cualquiera de mi equipo puede abrirlos y entender qué hacen.
Todos arrancamos con Dynamo sintiendo que mirábamos el tablero de una nave espacial alienígena cruzada con fideos espagueti desenroscados.
El mayor error para los arquitectos/ingenieros principiantes es intentar programar de primerizo la Torre Burj Khalifa algorítmica. Empieza resolviendo las tareas más estúpidas, manuales y aburridas que hagas día a día en la oficina de partes.
Guion 1: El "Upper Case" Supremo (Normalización de Texto)
¿Heredaste un modelo arquitectónico Revit hecho por un practicante que escribió en los títulos de vistas "plano De SOTANO-01", "plaNO 03 nivel"?
- Nodos clave a conectar:
Categories -> All Elements of Category (Seleccionando Views).
- Extrae sus valores con
Element.GetParameterValueByName buscando "View Name".
- Aplica un nodo nativo
String.ToUpper de Core > String.
- Escupelo de vuelta con
Element.SetParameterByName.
En 0.5 segundos todos los cientos de planos de tu proyecto están gloriosamente en Mayúscula técnica.
Guion 2: Nivelado y Centrado de Rejillas (Grids) 3D a la Piel
Nada luce más feo en un render transparente que las burbujas de ejes (Grids) proyectán
⚠️ Ojo en obra: Si estás en Lima, verifica que las especificaciones técnicas citen explícitamente la norma E.060 vigente. Hay proyectos que aún usan versiones desactualizadas sin saberlo.
dose al cielo a longitudes aleatorias, o peor, quedándose cortas tapadas en los sótanos.
Existen rutinas de 5 nodos para calcular la BoundingBox máxima (la caja de contorno extrema) que abarca absolutamente todo el bloque de tu proyecto 3D sólido, extraer sus niveles máximos/mínimos globales en Z y decirle a todas las Grids 2D que estiren sus curvas nativas 2 metros con
Geometry.Translate arriba y abajo de dicha envolvente.
Guion 3: Copiado de Propiedades Inter-Modelo
Tienes un modelo estructural gigantesco donde alguien colocó "Concreto 210 kg/cm2" en el campo de texto libre "Comentarios" de 200 columnas, pero lo necesitas obligatoriamente en el campo nativo de Revit paramétrico de "Material Punteado Funcional" para que salga en tus presupuestos automatizados 4D.
Extrae las cadenas, valídalas por lógica condicional y re-mápéalas todas de golpe hacia el parámetro correcto enlazando sus GUIDs.
No construyas maravillas desde el día uno, resuelve las pequeñas ineficiencias de tu flujo (la talacha diaria de oficina) con el List.Map. Ganarás tiempo real hoy, y ese tiempo te comprará paz mental para seguir estudiando.
📚 Fuentes y Referencias
Por qué tu primer script es el más difícil
El problema no es Dynamo. Es no saber qué automatizar primero. Después de enseñar Dynamo a más de 30 ingenieros, noté que todos quieren hacer algo complejo como su primer script y terminan frustrados.
Script 1: Normalizar nombres de vistas (5 minutos)
Problema: Vistas llamadas "Level 1", "nivel 1 ", "NIVEL 1". Necesitas "PLANTA-N01".
Nodos: Categories → All Elements of Category → Element.Name → String.Replace → Element.SetName
Resultado: 150 vistas renombradas en 2 segundos. Antes tomaba 30 minutos.
Problema: Necesitas saber cuántos kilos de acero hay en vigas, columnas y muros.
Nodos: Categories → Structural Framing → GetParameterValue "Volume" → GroupByKey → Sum → Export to Excel
Resultado: "Vigas: 2,340 kg | Columnas: 1,890 kg | Muros: 3,120 kg"
Script 3: Copiar parámetros entre modelos (10 minutos)
Problema: Copiar nombres de espacios del modelo de arquitectura al estructural.
Nodos: Document.Open → Categories "Rooms" → GetParameterValue → SetParameterByName → Transaction.End
Checklist para tu primer script exitoso
Errores de principiantes
- Intentar hacer todo en un solo script: Divide en scripts pequeños reutilizables.
- No probar con elementos de prueba primero: Prueba en un modelo vacío con 3-4 elementos.
- Ignorar los warnings de Dynamo: Te dicen exactamente qué nodo falla y por qué.
Preguntas frecuentes
📚 Artículos relacionados que te pueden interesar:
¿Necesito saber programar para usar Dynamo?
No. Si puedes conectar cables entre nodos y entender flujos de datos básicos, puedes usar Dynamo.
¿Funciona con cualquier versión de Revit?
Viene incluido con Revit 2021+. Para versiones anteriores, instálalo desde dynamobim.org.
Tu tercer script: Generador de tablas de metrados
Después de renombrar vistas, el siguiente script más útil es extraer cantidades de materiales.
Problema: Necesitas saber cuánto concreto hay en vigas, columnas y losas por separado.
Flujo en Dynamo:
- Categories → Structural Columns
- All Elements of Category
- Element.GetParameterValueByName → "Volume"
- Element.GetParameterValueByName → "Level"
- List.GroupByKey → Agrupar por nivel
- List.Sum → Sumar por grupo
- Watch → Ver resultado
Resultado:
- Nivel 1: 45.2 m³
- Nivel 2: 42.8 m³
- Nivel 3: 42.8 m³
- Nivel 4: 42.8 m³
- Nivel 5: 42.8 m³
- Total: 216.4 m³
Repites para vigas y losas. Exportas a Excel con un clic.
Checklist de scripts esenciales para ingenieros civiles
| Script | Tiempo manual | Tiempo Dynamo | Ahorro |
|---|
| Renombrar vistas | 4 horas | 30 segundos | 99.8% |
| Metrados de concreto | 2 días | 5 minutos | 99.6% |
| Metrados de acero | 3 días | 10 minutos | 99.7% |
| Crear planos | 1 día | 2 minutos | 99.9% |
| Verificar parámetros | 4 horas | 1 minuto | 99.9% |
Paquetes Dynamo recomendados
| Paquete | Función | Instalar desde |
|---|
| Clockwork | Nodos utilitarios | Package Manager |
| Data-Shapes | Interfaces de usuario | Package Manager |
| Archi-lab | Herramientas avanzadas | Package Manager |
| SteamNodes | Nodos de lista | Package Manager |
| Rhythm | Herramientas generales | Package Manager |
##Errores frecuentes y cómo evitarlos
| Error | Causa | Solución |
|---|
| "Input type mismatch" | Nodo espera lista, recibe elemento | Usar List.Create |
| "Null reference" | Parámetro no existe en elemento | Verificar con List.Filter |
| Script lento | Demasiados elementos | Usar List.Chop para procesar en bloques |