Saltar al contenido
Especialista3D

PROGRAMAR CON LA API DE REVIT: CÓMO APRENDER

Cómo aprender a programar con la API de Revit. Desde que comencé a escribir en www.especialista3d.com ese es uno de los artículos que más me habéis pedido que escribiera.

Voy a intentar en este artículo resumir los pasos que he dado para ir empezando a programar con la api de Revit así como poner algún ejemplo de pequeños programas que os podrán ahorrar grandes cantidades de tiempo en vuestro día a día.

La verdad es que cuando empecé a pensar en programar (ya hace unos añitos) me sentí frustrada al no encontrar absolutamente nada en internet en español. Creo que los hispanohablantes necesitamos compartir más entre nosotros así que os propongo que si contáis con más recursos para aprender a programar con la api de Revit no dudéis en escribirlo como comentarios, es bueno para todos.

¡Vamos al lío!

La primera pregunta que uno puede hacerse es:

¿Cuándo sería recomendable plantearse el empezar a programar?

Para mí creo que lo lógico es empezar cuando te encuentras con dos circunstancias fundamentales.

  • La primera de ella sería cuando estás harto de realizar la misma tarea repetitiva una y otra vez y sabes que todavía te quedan unas cuantas veces de repetir el mismo proceso. Aquí es donde decides que basta ya y lo primero que haces es intentar averiguar si alguien no habrá pensado lo mismo que tú y le preguntas a Google. Puede que encuentres alguna aplicación ya empaquetada que resuelva tu problema y, si le preguntas en inglés, es posible que encuentres algo de código ya escrito.
  • La segunda circunstancia sería cuando el programa no tiene alguna función que tú necesitas desesperadamente que incluyera. Os pongo un pequeño ejemplo. Necesitáis, por ejemplo, entrar en cada archivo para saber qué otros 200 archivos tenéis vinculados al mismo. Revit no te deja saber esto sin entrar a cada uno de estos archivos por separado y este proceso puede consumir muchísimo tiempo, sin embargo este problema se puede resolver con un par de horas de programación y cada vez que queramos obtener información de links bastará con ejecutar nuestro pequeño macro.
  • La tercera, cuando tienes la barra de Revit tan llena de Plugins que el programa se te hace inmanejable. 

 

La programación es una habilidad práctica y, como tal, si no necesitas practicarla se olvida. Por eso consejo yo no empezaría a plantearme aprender a programar si no tuviera uno de estos dos problemas. Ahora bien, si en tu vida diaria no dejas de encontrar ese par de circunstancias que he descrito me parece que haces muy bien en aprender a programar. ¿estás seguro de querer aprender? Entonces sigue leyendo.

One1_does_not_revit

1. Qué lenguaje escoger

De las primeras cuestiones a las que os enfrentaréis cuando queráis aprender a programar es con qué lenguaje de programación quedaros. Existen múltiples opciones ya que la api de Revit permite emplear Visual Basic, C#, Ruby y Python. En las últimas versiones (por ejemplo en 2024) solo permite en VB.NET, C# y Python. Además de éstas opciones está también la opción de Dynamo, cuya programación también se escribe en Python.

Si quieres ver un ejemplo específico de código de Python relacionado con Dynamo, puedes ver el artículo «Editar parámetros de texto con Dynamo»

Datos sobre las opciones que elegir a la hora de programar con la API de Revit

Curva de aprendizaje

La curva de aprendizaje puede inclinar seriamente la balanza a la hora de escoger una opción u otra al aprender a programar. De todas las opciones que tiene Revit para programar Dynamo es la que tiene la menor dificultad.

Si quieres empezar a programar sin pasar por Dynamo los lenguajes con menor curva de aprendizaje que tienen vinculación con Revit son, hoy por hoy, Python y Visual Basic .Net.

Información disponible en la red

Si vas a aprender de forma autodidacta Dynamo y C# son las dos opciones que más información tienen en la web.

En caso de querer empezar de forma autodidacta yo recomendaría C# y Dynamo, principalmente por la cantidad de información de ambos que ya existe en la Red. 

Si te conviertes en expertos en Dynamo seguramente preferirás optar por Python, si te llevas mejor con la consola del macro manager de revit o quieres hacer scripts de código cerrado seguramente te acabes decantando por C#. 

Python tiene una curva de aprendizaje más intuitiva y práctica que C# por lo que la recomendaría para arquitectos e ingenieros que empiecen a hacer sus aplicaciones para su trabajo.

C#: ¿ es la opción mejor a la hora de programar con Revit?

Los «puristas de la programación» te van a decir esto y también se que van a criticar este artículo por un único motivo: ellos solo programan en C#. Pero yo estoy aquí para ayudarte a abrir opciones y puntos de vista, no para empezar otra secta, que el mundo ya tiene suficientes.

Todas las opciones de lenguajes de programación que tiene Revit: C#, Visual Basic y Python, son excelentes lenguajes de programación. La API es la misma en todos estos lenguajes y podrás acceder exactamente a las mismas utilidades de uno y de otro. ¿Cuáles serían motivos objetivos para inclinarte por una u otra opción?

  • Dynamo: es mejor opción si prefieres empezar a realizar automatizaciones cuanto antes por su menor curva de aprendizaje.
  • Python: mejor opción si ya utilizas Dynamo y si además quieres poder aprovechar el poder de este lenguaje junto con la visualización de datos y modelos predictivos. Es el lenguaje de programación más utilizado en el mundo en 2024.
  • C#: Mejor para tener la opción de cerrar tu código en un programa, sin que nadie pueda acceder a él. Te permite compilarlo. Tiene unos milisegundos de tiempo de ejecución de diferencia con Python en igualdad de condiciones de importación de bibliotecas.
  • VisualBasic: si ya utilizas la programación de Excel ya vas a saber utilizar este lenguaje así que perfectamente puedes utilizarlo para programar desde la consola de macro de Revit.

Esta es mi opinión personal después de llevar 10 años generando programas para empresas del sector AEC y enseñar a programar a mas de 1200 arquitectos o ingenieros.

 Ideal paraMayor ventajaMayor inconvenienteDificultad de aprendizajeComunidad
Dynamo RevitEmpezar con la programación para RevitLo intuitivo que resulta en su manejo para arquitectos e ingenierosCuando estamos trabajando con mucha geometría o con más de 30.000 elementos puede colapsar nuestra memoriaMediaAbundante
VB. NETUsuarios que ya utilicéis este lenguage de programación al ser el utilizado en las macros de ExcelLa compatibilidad con ExcelPocos ejemplos en la red con este sistema para RevitMediaGrande para los temas de Excel, inexistente en Revit
PythonUsuarios que están un poco familiarizados con la API de Revit. Arquitectos e ingenieros que buscar hacer rutinas para automatizar sus tareasAcceso a la API y facilidad de lecturaPocos ejemplos en la red, aunque cada día van aumentandoAltaGrande en general, pequeña comunidad en el foro de Dynamo
C #Expertos que quieran dedicarse específicamente a ser desarrolladoresCapacidad para compilarse y velocidad de ejecución al ser un lenguaje estático. Ejemplos en la redSu curva de aprendizajeInfernalPequeñísima

¿Quieres aprender a manejar Dynamo, Python y la API de Revit?

Inscríbete a la especialización Dynamo Python Online de Especialista3D.

2. Por dónde empezar: empieza con tus problemas reales.

Nada motiva más a seguir programando que encontrar la solución a alguno de tus problemas de verdad ya resueltos y descubrir la cantidad de tiempo que programar te ahorrará.

2.1. Opción fundamental: Dynamo

Si has decidido empezar con Dynamo existen muchos recursos en la red. En este blog tienes desde una guía de fundamentos de cómo empezar(en el apartado de suscriptores) a artículos específicos. También te ofrecemos un curso de Dynamo que va desde los fundamentos al nivel avanzado (Especialización en Dynamo y Python Online) y que te ayudará a alcanzar rápidamente un nivel profesional en esta herramienta.

2.2. Opción complementaria: Python

Python es un lenguaje de programación relativamente sencillo de aprender y llega allí donde Dynamo no puede llegar. PEROOOOOO (y ojo a este pero) hay poquísima información en la red de la combinación Python-Dynamo-Revit. No worries, en Especialista3D te lo contamos todo sobre este lenguaje en la especialización.

2.3. Opción difícil: C#

C# es la opción que te recomendaría si tienes claro que quieres dedicarte en exclusiva a la programación BIM. Revit está escrito nativamente en este lenguaje que es, sin duda, uno de los más difíciles de aprender y también de los más concretos al ser un lenguaje estático.

Cuando tengas un problema sencillo pero costoso en horas con Revit busca en Google, por si alguien hubiera ya escrito el código de aquello que necesitas. Lo primero que yo escribo cada vez que tengo un problema de programación en C# es “boost your BIM” seguido de mi problema en concreto. Harry Mattison es uno de los pocos profesionales que, además de tener un curso específico de programación en C#, ofrece código gratuitamente en su blog. Él escribe en C#, tal cómo describía en el punto uno: C# es uno de los lenguajes de programación con más información en la Red. Su blog lo tienes aquí.

3. Dynamo es una buena opción intermedia

Mucha gente comienza a intentar leer C# y le parece una estructura demasiado compleja. La programación es un idioma y, como tal, se tarda en ir comprendiendo y mucho, mucho más en estructurar un programa de manera fluida. 

Dynamo es básicamente un punto intermedio entre Revit y su API. Si siguiéramos con el símil de los idiomas diría que Dynamo funciona como uno de esos cuadernos de ejercicios en los que hay que unir palabras entre sí para formar frases coherentes. El programa trae la estructura incorporada en forma de cajas, o nodos, y el usuario debe unir esos nodos entre sí para formar su programa. Si quieres saber más sobre Dynamo aquí te dejo un artículo donde te cuento qué es este programa y para qué se usa en 3 minutos.

Además Dynamo tiene la ventaja de una enorme comunidad de usuarios generosísimos los cuales comparten sus problemas y soluciones en Red. Una vez que hayas elaborado unos cuantos programas con Dynamo te será mucho más sencillo volver a enfrentarte a lenguajes de programación.  En la primera fase de aprendizaje lo más importante es reestructurar la cabeza.

4. Consulta las guías de API que existen en Internet.  

Yo uso “Revit API developers guide” así como la web http://www.revitapidocs.com/, ambas traen ejemplos concretos de programación. La primera es una guía que te lleva paso por paso por cada una de las opciones de la API de Revit mientras que la segunda trae todas las opciones de la API en la web. Ésta te será más útil cuando hayas hecho un par de programas sencillos. Realmente la web revitapidocs, trae lo mismo que el archivo de Revit sobre programación con la API, el clásico Revilookup, pero: ¿puede un archivo ganarle a una web con facilidades de navegación? Nones

5. Si tienes a alguien capaz de programar cerca no te avergüences de preguntarle.

En mi caso, gracias a que tuve la suerte de trabajar en una ingeniería grande contaba con compañeros que ya sabían algún lenguaje de programación. Uno de ellos sabía Visual Basic y ya fabricaba sus propias rutinas para Revit MEP. Aunque decidí no escoger Visual porque había muy pocos ejemplos del mismo online siempre le podía preguntar y, como al principio mis preguntas eran muy básicas podía responderme aunque C# y Visual fueran algo distintos.

Posteriormente cuando mis preguntas se hicieron más complejas tuve la suerte de contar con la ayuda de un experto en programación, que apoyaba a la compañía en la que trabajaba. A la gente a la que le gusta programar una nueva rutina le parece un nuevo desafío y de cada nuevo desafío se aprenden lecciones distintas. Incluso amigos informáticos me orientaron hacia webs con cursos de programación de todo tipo. ¡NO DEJES DE PREGUNTAR, el no ya lo tienes!.

Si optas por empezar estudiando la Especialización de Dynamo y Python Online accederás al grupo privado de nuestro programa formativo donde podrás lanzar tus dudas. Si tienes la suerte de contar con una comunidad: pregunta.

6. Aprende el lenguaje de programación desde cero.

Una vez que ya eres capaz de elaborar programas y rutinas sencillos empiezas a notar que programar es un mundo mucho más rico y complejo de lo que en un principio te imaginaste.

Te das cuenta de las posibilidades infinitas que ofrece pero de qué no conocer la gramática básica te constriñe respecto a las posibilidades reales de programar. Es entonces el momento de aprender programación desde cero.

En mi caso se me fue mucho mucho la pinza aprendiendo programación. Cuando empecé no había guías, ni referencias, ni vídeos ni cursos. Ahora el problema es el contrario: hay tanta información que puedes perderte en un mar de información y no avanzar.

Ahora puedo enseñar en distintos masters como profesora así como en los cursos que ofrezco en esta web y ayudar a otros compañeros que están empezando de cero. Si a tú también estás en este punto te recomiendo echar un vistazo a nuestros cursos: son los que a mí me hubiera gustado tener disponibles cuando empezaba a programar.

Ejemplo: rutina fundamental con Dynamo

A continuación os dejo una rutina sencilla que he generado para proyectos reales. Espero que os pueda ser de utilidad para aprender y que este post os inspire un poco para poneros manos a la obra.

Este es uno de los ejemplos más básicos y útiles en el día a día que podéis realizar con Dynamo. ¿Cuántas veces nos ha pasado de tener que pasar la información paramétrica de dentro de un parámetro a otro? en este sencillo ejemplo se eligen todos los objetos de un cierto tipo y se toma de ellos el parámetro que queramos, aquí es el de «Sill Height». Tenéis que llevar el cuidado de que esté escrito exactamente igual que en el objeto en si. Después llevamos la información de dentro de este parámetro a otro, en este caso nos la llevamos al parámetro «Comments». Como «Comments» está preparado para texto, es decir string, y no para números convertimos las variables del parámetro «Sill Height» de número a texto antes de introducirlas al parámetro «Comments». La caja de «number to strings» es de el paquete de spring nodes.

programar con la API de Revit E3D_DYNAMO
programar con la API de Revit E3D_DYNAMO

RECUERDA EL KARMA si lees un post así y no lo compartes… ayayayay….

*Luisa Santamaría Gallardo imparte clases de Dynamo en la especialización de Dynamo y Python Online de Especialista3D, en el Máster de Gestión BIM de la Politécnica de Madrid; y de Python en este mismo Máster; además de ejercer la profesión de Arquitecto Superior por cuenta ajena y propia.

CC BY-NC 4.0 PROGRAMAR CON LA API DE REVIT: CÓMO APRENDER por Especialista3D está licenciado bajo una Licencia Creative Commons Atribución-NoComercial 4.0 Internacional.