Programar sobre la API nativa de Revit solía requerir aprender C#, configurar Visual Studio, lidiar con el framework .NET y compilar un .dll cada vez que corregías una simple coma en el código.
Hoy, gracias a pyRevit de Ehsan Iran-Nejad, podemos ejecutar scripts de Python "en vivo" dentro de Revit sin compilar. Esta es la guía rápida para tu primera inmersión.
Paso 1: Instalación de pyRevit y CPython
Ve al repositorio oficial de GitHub de pyRevit y descarga el último instalador (.exe). Al instalarlo, notarás que te agrega un nuevo Ribbon (Pestaña) en la parte superior de Revit.
Dato vital para 2025: Revit 2025 removió el antiguo motor IronPython (2.7) e integró nativamente Python 3. Asegúrate de configurar pyRevit para usar el motor CPython3.
Paso 2: Creando tu Estructura de Carpetas Corporativa
A diferencia de C#, con pyRevit tú defines tus botones con carpetas de Windows.
Crea una carpeta llamada MiMenu.extension.
Dentro, crea otra llamada Estructuras.tab.
Dentro, una llamada Herramientas.panel.
Y lo más importante: tu botón: HolaMundo.pushbutton.
Paso 3: El Código Funcional (script.py)
Dentr
⚠️ 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.
o de esa última carpeta, crea un archivo de texto llamado script.py y pega este código (es la base para cualquier interacción con la base de datos de Revit):
# -*- coding: utf-8 -*-from pyrevit import forms
from pyrevit import script
from Autodesk.Revit.DB import FilteredElementCollector, BuiltInCategory
# Inicializar document
doc = __revit__.ActiveUIDocument.Document
# Recolectar todas las Vigas del modelo
vigas = FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_StructuralFraming).WhereElementIsNotElementType().ToElements()
# Mostrar Alerta
forms.alert("¡Éxito! Has conectado con tu modelo.\nHay {} vigas armadas.".format(vigas.Count))
Cierre de Proyecto
Reinicia Revit o dale clic a Reload en la barra de pyRevit. Al pulsar tu nuevo botón, verás ejecutarse el código en tiempo real.
Este pequeño script es la semilla. Reemplaza "OST_StructuralFraming" con zapatas, muros o tuberías, y aplícale un TransactionManager para empujarles texto (nombres normalizados) y te acabas de ahorrar 3 horas de trabajo manual.
El salto cualitativo al abandonar Dynamo en los cierres de proyecto se paga solo en tranquilidad.