🐍 Python

Revit API y Python (pyRevit): El Siguiente Paso Después de Dynamo

Supera las limitaciones de lentitud de Dynamo programando directamente la Revit API. Aprende a ejecutar scripts instantáneos con IronPython y la extensión pyRevit.

24 de febrero de 20269 minPor Miguel Angel Rivera

El Límite del "Visual Scripting"

Dynamo es maravilloso. Permite a los arquitectos e ingenieros realizar automatizaciones increíbles sin saber escribir código. Pero llega un punto, en modelos gigantescos de 5GB con links anidados, donde Dynamo se vuelve dolorosamente lento.

Esa "sopa de fideos" de 300 nodos es difícil de mantener, difícil de compartir de manera estable (por problemas de versiones de paquetes de terceros) y sumamente exigente con la memoria RAM.

Aquí es donde entra pyRevit y la Revit API. Si Dynamo es andar en bicicleta eléctrica, la Revit API pura con C# es manejar un avión de combate. Y Python a través de pyRevit es el punto dulce de en medio: pilotar un auto deportivo automático.


¿Qué es pyRevit y Por Qué Deberías Instalarlo Hoy?

pyRevit (creado por el brillante Ehsan Iran-Nejad) es un complemento Open Source para Revit que actúa como una capa de compilación rápida. Te permite crear tus propios botones nativos en la interfaz (Ribbon) de Revit, y que esos botones ejecuten scripts de Python instantáneamente.

Se acabaron los problemas de instalar paquetes a otros ingenieros. Solo compartes una carpeta en la red de tu oficina (Network Drive), y todos los Revit de tu empresa se actualizan automáticamente con los nuevos botones mágicos que tú creaste.


Tu Primer Script en Python para Revit

Vamos a replicar un problema clásico: Obtener la lista de todos los muros del proyecto y cambiar un parámetro. Hacer esto con la Revit API de Python es elegante y requere poquísimas líneas.

El lenguaje utilizado es IronPython (Python integrado en .NET).

El Código (Explicado)

# Importar las bibliotecas fundamentales del núcleo de Revit
from Autodesk.Revit.DB import FilteredElementCollector, BuiltInCategory, Transaction

# Obtener el acceso al documento actual (Modelo Activo)
doc = __revit__.ActiveUIDocument.Document

# 1. EL RECOLECTOR (COLECTOR)
# Esto es 10 veces más rápido que buscar categorías en Dynamo
muros = FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_Walls).WhereElementIsNotElementType().ToElements()

# 2. LA TRANSACCIÓN (Abrir modo edición)
t = Transaction(doc, "Marcar Muros de Python")
t.Start()

contador = 0
# 3. EL BUCLE
for muro in muros:
    parametro = muro.LookupParameter("Comments")
    if parametro and not parametro.IsReadOnly:
        parametro.Set("Modificado_Por_Python")
        contador += 1

# 4. GUARDAR CAMBIOS
t.Commit()

print("Éxito. Se modificaron {} muros casi al instante.".format(contador))

Desglosando la Magia:

  1. FilteredElementCollector: Es la base de todo cálculo rápido en la API. En lugar de cargar todos los elementos en memoria (como hace Dynamo a veces), este filtro actúa en la base de datos profunda C++ de Revit y extrae únicamente los IDs de los muros en milisegundos.
  2. Transactions: Revit es a prueba de tontos. No te deja cambiar nada estructural del modelo a menos que "abras la bóveda" (Start Transaction) y "cierres la bóveda" (Commit). Esto protege el archivo de corrupciones.

¿Por Dónde Empezar a Estudiar?

La curva de aprendizaje para la Revit API puede ser intimidante porque la documentación oficial de Autodesk (apidocs.co) está escrita en C# y es extremadamente rígida. Sin embargo, hacer la traducción mental a Python se vuelve natural con la práctica.

Mi hoja de ruta recomendada:

  1. Aprende Python Básico: Listas, Diccionarios, Bucles For, Clases y Objetos (OOP). Curso gratis de YouTube es suficiente.
  2. Descarga pyRevit y estudia su carpeta "extension": Ehsan incluyó docenas de botones pre-hechos (como el famoso "Make Pattern"). Házle click con Alt + Shift + Click_izquierdo a cualquier botón de pyRevit y se abrirá su código fuente. Lee cómo lo hicieron.
  3. Familiarízate con RevitLookup: Esta es una herramienta OBLIGATORIA. Es un botón que te permite explorar la "Matrix" detrás de cualquier elemento clickeando sobre él. Te dirá los nombres internos (BuiltInParameter) que necesitas programar.
  4. Foros: El foro oficial de DynamoBIM - Developer y el foro de pyRevit son minas de oro donde expertos comparten fragmentos de código diarios.

Conclusión

Saber Dynamo en 2024 te hace empleado muy atractivo. Saber programar directamente en la Revit API usando Python / C# en 2025/2026 te convierte en irreemplazable.

Con pyRevit, puedes construir tus propios plugins corporativos, ahorrándole a tu constructora licencias anuales de add-ins ajenos, centralizando los flujos de control de calidad y creando herramientas a la medida de la normativa nacional de tu país.

📩 Newsletter semanal

Tutoriales BIM, plantillas gratis y novedades de normativa peruana.

Sin spam. Cancela cuando quieras.