REVIT API: How architects can learn? / ¿Como pueden aprender los arquitectos?

I´m an architect, Revit user and Bim expert. A few months ago, Revit aplication programming came to my atention. I thought it might be usefull to write apps that allow to automate design processes/ Soy arquitecto, usuario de Revit, experto en BIM y hace un tiempo me comenzó a interesar la idéa de hacer aplicaciones dentro del programa, que permitan automatizar procesos de diseño.

So, 6 months ago i decided to learn Revit API. A program´s API is the application programming interface, namely: a data base that the software´s programmer leave to users available to create new personalized tools /Por lo tanto hace 6 meses me propuse aprender Revit API. El API de un programa es el interfaz de programación de aplicaciones, es decir: una base de datos que Autodesk deja a los usuarios disponible para generar nuevas herramientas personalizadas.

By information on blogs about the subject, it´s known that when architect try to learn programming they hit a huge wall of difficulty. By experience i know that is true. The world of architecture is very different from the computer science. But well, most of great advances are the cross between two or more disciplines to create stuff or concepts never seen before./  Por la información en los BLOG al respecto, es sabido que cuando los arquitectos intentan aprender a programar, la primera sensación es un muro de dificultad infranqueable. Por experiencia propia se que es verdad. El mundo de la arquitectura es muy distinto al de la informática. Pero bueno, la mayoría de los grandes avances son la cruza de dos o mas disciplinas para crear algo nunca antes pensado.

Due to this impediment, i thought in writing a incentive post for people that want to learn Revit API, for them to know what will they find and dont become frustrated in the way and leave it. I must clarify that im not yet an expert, i just have a basic skill level, that allow me to create simple apps. But the most important thing i think is passing that inflection point when you know you can do it. After that you can get motivated by every acomplishment or new app. Summing up, you must have in mind that IT IS VERY DIFFICULT for an architect to learn this technology, and takes time (took me 6 months to get here) but totally wort it if you need it for your projects./ Debido a este impedimento, pensé en hacer un post de incentivo para que alguien que quiera empezar a aprender API sepa con lo que se encontrará y no se termine frustrando en medio del camino de aprendizaje. Debo aclarar que no soy aún experto en el tema, solo creo que he logrado el nivel básico, que me permite generar aplicaciones simples, pero lo mas importante, saber donde buscar y resolver dudas. Este punto de inflexión ,creo, es lo mas importante del proceso de aprendizaje, ya que pasado este punto la motivación aumenta con cada aplicación o mejora que logras hacer. En resumen, tener en mente que ES MUY DIFICIL! y lleva tiempo (a mi me tomó 6 meses llegar a este punto). Pero no se desanimen, es posible.

Step 1: Learning the languaje/ Paso 1: Aprender el lenguaje

Revit API and all API´s work trough a programming languaje, this means that you have to learn the languaje in order to use it. A programming languaje is how the programmer comunicate with the machine. The languajes that are used to create programs are called “high level languajes” , which are more simple, friendly and easy to use than the “low level” ones (for example “Binary code“). High level languajes use syntax laws, logic, math and key words (among other concepts) to depict orders that the programmer give to the machine. /Revit API, y todas las API funcionan en base a un lenguaje de programación, es decir tienes que saber el lenguaje para poder utilizarlas. Un lenguaje de programación es la forma en que el programador se comunica con la máquina. Los lenguajes que se utilizan para crear programas son llamados “de alto nivel“, los cuales son lenguajes mas depurados, mas amigables, faciles de usar y entendibles que los de “bajo nivel” (como por ejemplo el “Código binario“.). Los lenguajes de alto nivel utilizan leyes de sintaxis, leyes de lógica, matemática y palabras claves (entre otras cosas) para representar ordenes que el programador le da a la máquina.

When it comes to Revit, there are two main languajes used to program: and C#. I personally suggest, if you dont know anything, to learn C#, mainly because there a lot more documentation about it, its like the official languaje of Revit API (although there are also examples on in the user´s guide). To learn C# i suggest two things, depending on your self learning- capabilities. / En lo que respecta a RevitAPI, existen dos lenguajes principales que se utilizan: y C#. Yo personalmente recomiendo, si no sabes nada, aprender C# (se pronuncia C-Sharp), ya que hay mucha mas documentación al respecto. De hecho C# es como el idioma oficial de RevitAPI (aunque en los manuales también hay ejemplos de Bueno, para aprender C# recomiendo dos cosas, dependiendo de tu nivel de autonomía en el aprendizaje:

a) Take basic lessons. In regular education (college, institute) or private lessons whith someone who knows the languaje /Tomar clases, ya sea particulares o en una universidad.

b) Read a basic C# Book  or a good part of it /Leer un libro básico, o gran parte de él.

This is what i did. I read a book called “C# programming for absolute beginner” (I downloaded it, 14 MB) where they explain step by step how everything works. Between the reading of the book, when i was stuck with some issues, i took private lessons from a programmer, which cleared me enough to continue with the book. /Personalmente lo que yo hice fué leer un libro llamado “C# programming for absolute beginner” (lo bajé, pesa 14 mb) donde te explican paso a paso como funciona todo. En medio de el libro, cuando estaba pegado en algunos temas, tomé algunas clases particulares con un programador, que me aclararon lo suficiente el panorama como para seguir con el libro.

Another source that i used while learning Csharp was the Microsoft C# help where you can look for methods and components of the Microsoft .net library, wich is the generic common library used. / Otra fuente que me ayudó mientras aprendí C# fué la ayuda de Microsoft donde puedes buscar los usos de los metodos y componentes de la de Microsoft, que es la que se utiliza para los componentes genéricos.

Step 2Paso 2: Aprender RevitAPI.

You can start venturing in Revit API before finishing the C# book, with the main concepts you can get many thing done. I wouldn´t recommend to start inmediatly with API (you wont undestand anything). To learn Revit API there are many sources. In the Revit SDK (Software development kit) there are basic information and usefull links. SDK comes by default with every Revit instalation, and also you can download it from Autodesk. Its important to start with the basics like: / Puedes comenzar a incursionar dentro del API antes de terminar con el libro de C#, ya que con los conceptos básicos ya se puede lograr muchas cosas en, pero no recomendaría comenzar de inmediato con API (no entenderás nada). Para aprender Revit API hay muchas fuentes. En el SDK de Revit (Kit para desarrolladores de software) hay información básica y links útiles. El SDK viene por defecto con cada instalacion de Revit, y también lo puedes descargar desde el sitio de Autodesk. Es importante comenzar por lo básico como:

a) “First steps in Revit API”, from SDK/  “Primeros pasos en Revit API” del SDK.

b) My first Revit Pluggin, de Autodesk.

c) Introduction to Revit Programming.

c) Read the code in the samples of SDK, and tying to modify some of them, checking the outcome in Revit. / Leer el codigo de los ejemplos que vienen con el SDK y tratar de hacer modificaciones al programa, viendo los resultados.

When you are stuck in something you can always check in prgramming forums. I recommend STACK OVERFLOW, were there is a REVIT API tag, and they´re pretty fast to answer, because the users are those who help you, and gain experience with it. /Cuando estes varado en algo siempre puedes consultar en foros de programación. Recomiendo STACK OVERFLOW, que tiene un tag de Revit API y son bastante rápidos en responder, ya que los mismos usuarios te ayudan y ganan experiencia por ello.

Step 3: Improvement/ Paso 3: Perfeccionamiento

They say that programming is not about knowing how to do things, but is about konwing how to figure out how to do things. In this sense, learning a languaje or dataBase never ends. Because of this every time you need to use a new element, you will have to look for hot to do it. A good way is check the user´s guide (SDK), where they explain pretty much all you need to know to create apps. / Dicen que programar no se trata de saber como hacer cosas, sino de saber como arreglarselas para resolver cosas. En este sentido el aprendizaje de un lenguaje o base de datos nunca termina. Por esto cada vez que necesites aplicar un elemento nuevo tendrás que buscar como hacerlo. Una buena manera es revisar la Guia de usuario (SDK), donde sale explicado casi todo lo que se necesita para crear aplicaciones.

Also, when you get to certain level, its good to keep informed by expert´s blogs like: /También, cuando alcances un cierto nivel, es bueno mantenerse informado por medio de blogs de personas expertas en el tema como:

The building coder Works in Autodesk/ Trabaja en Autodesk.

Darren@Work Programmer/ Programador.

Rod Howarth´s Blog Programmer/ Programador.

Another good source is by this specialized search engine by google. / Otra buena forma de buscar información es por medio de google, aquí hay un motor de busqueda especializado.

Well, i still dont get get ther so i cant guide you further. I hope this help to architects who want to start programmin in Revit API, and dont hesitate in sending your comments or questions. / Bueno, yo aún no alcanzo tal nivel así que hasta aquí puedo hablar. Espero que le sirva al que quiera aprender, y no duden en contactarnos o consultarnos dudas.


One thought on “REVIT API: How architects can learn? / ¿Como pueden aprender los arquitectos?

  1. Hola Francisco. Muy interesante tu blog y todo lo que escribes, ahora mismo estoy viendo un tutorial tuyo de Navisworks. Estoy muy interesado en el BIM y en Revit particularmente. En mi empresa estamos empezando a utilizar Revit y yo soy el encargado de tratar de implementarlo. Así que buscando información al respecto me he topado con esto de la API.. tengo una pregunta, ¿para qué? ¿de verdad necesitamos reescribir código de progamación? me apasiona el Bim y en un futuro me gustaría trabajar como BIM manager, ¿crees que necesito estudiarlo?. Un saludo desde Beijing y muchas gracias!

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s