Aprendiendo C# y Revit API (I)

El comienzo de un nuevo año suele ser una fecha adecuada para plantearse nuevos objetivos y retos en nuestra faceta personal y profesional.

En mi caso particular, y llevando esta lista de propósitos al plano profesional, 2019 se presenta como un año de nuevos proyectos (en un futuro espero poder escribir sobre ellos) para los que siempre es necesario mantenerse actualizado e ir adquiriendo nuevos conocimientos y habilidades.

Concretamente, en lo que respecta al uso de herramientas BIM, me he propuesto dar un salto de calidad en mis conocimientos sobre programación: ir más allá de las posibilidades que Dynamo ofrece en el campo de la automatización de tareas (que no son pocas) y abrazar las bondades de la API de Revit.

¿Qué es una API y para qué sirve?

En pocas palabras, podríamos definir una API (Application Program Interface) como un conjunto de herramientas que un determinado software (Revit en este caso) ofrece a los desarrolladores para facilitarles la creación de pequeños, o grandes, programas/utilidades/rutinas que hagan uso de las capacidades principales del programa y, eventualmente, las mejoren y amplíen.

The following are general areas where the API is suitable:

- Creating add-ins and macros to automate repetitive tasks in the Autodesk Revit user interface

- Enforcing project design standards by checking for errors automatically

- Extracting project data for analysis and to generate reports

- Importing external data to create new elements or parameter values

- Integrating other applications, including analysis applications, into Autodesk Revit products

- Creating Autodesk Revit project documentation automatically

Online Autodesk Revit Help

¿Qué necesito para trabajar con la API de Revit?

La propia Autodesk recomienda 4 puntos fundamentales para comenzar a trabajar con la API de Revit:

1. A working understanding of Autodesk Revit.

2. An installation of an Autodesk Revit-based product, including the Software Development Kit.

3. MS Visual Studio 2015 Express Edition (C# or VB.NET). Microsoft Visual Studio 2015 Professional is recommended, though, as Express editions do not support DLL debugging. Alternatively, you can use the built-in SharpDevelop development environment in Revit.

4. Some experience in a .NET based development language. (Autodesk Revit API examples are provided in C# and Visual Basic.NET.)

Los tres primeros requisitos resultan bastante evidentes y accesibles para alguien con experiencia trabajando en Revit: debes conocer el funcionamiento del propio Revit, disponer de una instalación del mismo y utilizar un IDE (Entorno de Desarrollo Integrado) que permita desarrollar utilizando el framework .NET.

Sin embargo, el cuarto requisito es sin duda el mayor handicap a la hora de enfrentarse al desarrollo con la API de Revit: conocer algún lenguaje de programación compatible con el framework .NET; concretamente, Autodesk recomienda trabajar con el lenguaje C# (pronunciado ‘Si Sharp’).

¿Cómo aprendo a programar con C#?

La programación es una disciplina que requiere de ciertas habilidades y estructuras mentales muy concretas (abstracción, análisis, creatividad…) pero, sobre todo, es necesario querer aprender y dedicar tiempo.

En la red existen millones de recursos para comenzar a programar en C#:

En mi caso particular, he optado por adquirir una copia digital en Amazon del libro “Microsoft C#. Curso de Programación. 2ª edición” escrito por Francisco Javier Ceballos Sierra: me gusta la idea de comenzar por un manual estructurado, que me permita adquirir los conocimientos básicos del lenguaje y, a partir de ahí, lanzarme a buscar otras fuentes y referencias para profundizar en los temas que vaya necesitando para mis pequeños proyectos de desarrollo.

Diario

Para forzarme a mantener un ritmo constante de dedicación y aprendizaje, me he auto-impuesto la obligación de escribir un diario de aprendizaje, del que estás leyendo la primera entrada, en el que ir plasmando mis avances y experiencias (se dice que para aprender algo es recomendable escribir sobre ello…).

Además, tengo la intención de publicar mis pequeños proyectos de prueba, para lo cual me he creado una cuenta en GitHub (que tengo que aprender a usar e integrar con Visual Studio).

class AprendiendoCSharpYRevitAPI
{
    static void Main(string[] args)
    {
        System.Console.WriteLine("¡Arrancamos!");
    }
}