Python para Revit, tu primer comando guía paso a paso


Created with DALL-E

“El viaje de mil millas comienza con un solo paso.”

Lao Tzu.

Este es el primer artículo de una serie que escribiré acerca de cómo crear comandos de Revit usando PyRevit e IronPython. Actualmente, la gran mayoría de recursos disponibles en internet se encuentran en inglés, así que con estos artículos quiero aportar un poco de este tipo de conocimientos a la comunidad de habla hispana.

Lo ideal sería que el lector posea conocimientos de la API de Revit, IronPython y herramientas como Visual Studio Code para tener un mejor y más rápido entendimiento de lo que aquí se expondrá. Si desconoces estos temas, mi recomendación sería al menos tener instalado IronPython, Visual Studio Code y PyRevit en tu computadora, ya que en esta serie de artículos se asumirá que ya puedes hacer uso de ellos.

Crea las carpetas para tu comando

pyRevit te permite añadir tu comando a la interfaz de Revit simplemente creando unas carpetas con una estructura especifica, trabajaremos estas carpetas de manera local para que sea mas sencillo el manejo de los comandos que creemos, en la siguiente imagen te muestro como he creado una serie de carpetas en “mis documentos” que me servirán para alojar mis comandos.

La carpeta “00 BIMETHECA TOOLS” alberga el paquete de extensión “bimetheca.extension”, que contiene los componentes de la extensión personalizada, como la barra de herramientas, los paneles y los comandos. La estructura de carpetas sigue las convenciones de nomenclatura de PyRevit, donde “.extension” indica un paquete de extensión.

Dentro de “bimetheca.extension”, encontramos “bimetheca.tab”, que representa la barra de herramientas y será visible como una pestaña en la interfaz de usuario de Revit. A su vez, “General.panel” es el panel que alojará los distintos botones o controles desde los cuales se ejecutarán los comandos.

La carpeta “test-1.pushbutton” contiene el código que define la funcionalidad del comando. El nombre de esta carpeta determina el nombre del botón o comando que aparecerá en la interfaz de usuario de Revit. Dentro de esta carpeta, se debe incluir un archivo de script de Python (generalmente llamado “script.py”) que contiene la serie de instrucciones que Revit ejecutará al presionar el botón correspondiente.

Carga tu extensión a la Interfaz de Revit

Ahora veamos como cargamos esta extension en Revit desde pyRevit.

Recorded with OBS Studio

Hora de escribir código!

por ultimo, en el archivo script.py que alojamos en la carpeta test-1.pushbutton vamos a incluir este código:

import clr
clr.AddReference("RevitAPI")
from Autodesk.Revit.UI import TaskDialog

# Create a TaskDialog
dialog = TaskDialog("Hello, World!")

# Set the main instruction
dialog.MainInstruction = "Greetings!"

# Set the main content
dialog.MainContent = "This is a basic pyRevit command that displays a task dialog."

# Show the dialog
dialog.Show())

Como podemos ver, el código escrito en Python tiene una gran similitud a leer un texto en inglés, podemos deducir que con este código estamos creando un dialogo que muestre un mensaje al usuario, en futuros artículos profundizaremos en lo que hace cada linea de código al inicio del script, por ahora veremos como funciona al hacer click en Revit, como vimos en la animación anterior el botón no muestra ningún icono, para solucionar esto solo debemos copiar un icono en formato .png a la carpeta test-1.pushbutton, el icono debe llamarse “icon.png”, se recomienda un tamaño de 64 x 64 pixeles.

https://iconos8.es/ es un sitio recomendable para buscar y descargar iconos, para los comandos que crearemos como tests usaremos el siguiente icono:

Cada vez que agreguemos una nueva carpeta o un nuevo archivo a nuestra extensión deberemos recargar pyRevit haciendo click en este icono:

Ejecuta tu comando

Una vez recargado aparecera el icono, al hacer click sobre el Revit deberá mostrar una dialogo con el mensaje que escribimos en el código.

Recorded with OBS Studio

Asi es como hemos creado el primer comando de nuestra propia barra de herramientas para Revit, en el siguiente artículo crearemos otra herramienta que interactue un poco más con la información del modelo y analizaremos como el código esta invocando funciones de la Revit API.


Gilberto Granados, Arquitecto y Senior Digital Designer en Harris Design Studio

Términos y condiciones

El contenido proporcionado en Bimetheca es solo para fines informativos; el propietario de este blog no se responsabiliza de la exactitud, integridad y disponibilidad de la información de este sitio, el propietario no será responsable de ninguna pérdida, lesión o daño por la visualización o el uso de esta información.

Nos complace que compartan nuestras publicaciones a través de todas las plataformas de redes sociales; incluyendo las publicaciones originales con crédito al autor y proporcionando un enlace al contenido original.

Estos términos y condiciones de uso están sujetos a cambios en cualquier momento y sin previo aviso.