💻 Desarrollo

Revit API

Mi primer addin con la API de Revit

2021-12-26

7 min read

La tecnologia esta cambiando los habitos de las personas, desde mantenerlas informardas hasta volverlas mas exigentes, lo cual aporta en realización personal y laboral de cada persona, de tal manera que nos reinventemos para ofrecer buenas experiencias, responder a la demanda laboral, reducir costos, automatizar procesos, aumentar ingresos, etc. Es por ello que en este Post tratamos de compartir un granito de conocimiento de como ingresar al mundo de la API en Revit.

Proyecto: HelloWorld

El aplicativo que crearemos mostrara un pequeño mensaje en el software de Revit.

Empezaremos creando un proyecto con la opción de Crear un Proyecto en el software de Visual Studio. La version usada es la version 2019, pero el interfaz para las otras versiones no varia de manera importante.

Resaltado

Crearemos una librería de clases (.dll) del cual encontraremos dos tipos en Visual Studio 2019, el .NET Framework con C# y .NET Framework con VB.


LenguajeCaracteristicas
Con C#Existe mayor documentación para desarrolladores.
Con VBLa cantidad de documentación es limitada.

Resaltado

Para nuestro proyecto usaremos el .NET Framework con C#.

Luego definiremos el nombre de la solución y nombre de proyecto del aplicativo que procederemos a crear. Hay que entender la diferencia del nombre del proyecto y el nombre de la solución.

  • Nombre de la Solución Es la solución a un problema general que puede englobar varios proyectos.

  • Nombre del Proyecto: Dimension o parte de la solución del problema general

En el presente aplicativo nombraremos al proyecto y a la solución como “HelloWorld” dado que no hay mucha complejidad y solamente tendremos un proyecto. En posteriores aplicaciones crearemos proyectos más complejos y sera necesario manejar mejor esta nomenclatura.

Otro tema importante de ver al momento de crear nuestro aplicativo es tener en cuenta la version de .NET Framework. La elección de la version dependerá en la versión de Revit.


Version Revit.NET Framework
2016Versión 4.5
2017Versión 4.5.2
2018Versión 4.6.2
2019Versión 4.7
2020Versión 4.7.2
2021Versión 4.8

Usaremos el .NET Framework 4.7.2 para aplicarlo en el Revit 2020.

Resaltado

Visual Studio es uno de los mejores IDE que existen en el mercado dado que te facilitan notablemente el trabajo que realizamos. Si seguimos paso a paso las configuraciones del procedimiento anterior llegaremos hasta este punto.

Resaltado

Procederemos a renombrar el nombre de la clase “Class1.cs” por “CmdHelloWorld”. Una buena práctica personal es nombrar al inicio de cada comando con la palabra “Cmd” para hacer más rápido la identificaciones entre las clases que creemos

Resaltado

Resaltado

Agregaremos las referencias (.dll) de las librerías de Revit que nos permitirá interactuar con los métodos y propiedades de Autodesk Revit. Para este pequeño aplicativo solo agregaremos “RevitAPI” y “RevitAPIUI” que la podremos encontrar en la ruta “C:\Program Files\Autodesk\Revit 20XX”

Resaltado

Una vez agregadas las referencias, seleccionamos ambos “RevitAPI” y “RevitAPIUI” y en sus propiedades cambiamos el campo de “Copia local” a “False”, esto por el siguiente motivo.

Visual Studio no sabe de que estamos trabajando un aplicativo para Revit, entonces la copia local significa que va a copiar localmente todos los archivos relacionados con la API de Revit, pero como en este caso crearemos un aplicativo que va a funcionar dentro del entorno de la API de Revit no es necesario volver a copiar las librerías porque ya los tiene internamente.

Resaltado

Ahora agregaremos los namespace necesarios a Visul Studio los cuales contienen clases, métodos y propiedades de Revit.

Resaltado

Podemos encontrar todos los namespace de Revit en el siguiente link:

Luego debemos crear un IExternalCommand(Comando externo) para eso implementaremos una interfaz de la cual se hereda propiedades y métodos, esto lo creamos con el fin de tener una estructura definida, para este caso Revit necesita una estructura denominada Execute.

Resaltado

Ya con la estructura implementada procederemos a devolver un resultado del aplicativo, para eso borramos el texto “throw new NotImplementedException()”.

Resaltado

Visual Studio nos muestra un error porque nosotros estamos creando un método que devuelva un resultado pero aun no hemos escrito el resultado, para eso ingresaremos el siguiente código.

Resaltado

Y procedemos a escribir lo siguiente.

return Result.Succeeded;

lo cual indica que el resultado que estamos devolviendo es exitoso.

Nota: Tener en cuenta que cuando escribimos un código siempre termina con punto y coma (;).

Resaltado

Luego crearemos un TaskDialog el cual es un método que tiene dos entradas un “titulo” y una “descripción”, para eso escribiremos el siguiente código.

TaskDialog.Show("Mi primer aplicativo", "Hola Mundo");

Resaltado

Ahora faltaria añadir el transaction que va entre corchetes [ ], el cual nos permitira comunicarnos con toda la base de datos de Revit, encontraremos dos tipos:


TransactionModeDescripción
ReadOnly:Solo modo de lectura.
Manual:Te permite realizar cambios a Revit.

Resaltado

Luego crearemos el archivo manifiesto el cual es indispensable para generar el vinculo entre la (.dll) que estamos creando y Revit.

Resaltado

Resaltado

Luego ingresamos al siguiente Link donde encontraremos una porción del codigo que va en el archivo manifiesto.

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<RevitAddIns>
  <AddIn Type="Command">
    <Assembly>HelloWorld.dll</Assembly>
    <AddInId>ecb76306-3561-43f3-adc7-01d1a178e74e</AddInId>
    <FullClassName>HelloWorld.CmdHelloWorld</FullClassName>
    <Text>Hola Mundo</Text>
    <VendorId>ADSK</VendorId>
    <VendorDescription>Lambda Ingenieria e Innovacion, https://lambda.com.pe</VendorDescription>
    <VisibilityMode>NotVisibleInFamily</VisibilityMode>
    <Discipline>Any</Discipline>
  </AddIn>
</RevitAddIns>

CamposDescripción
AddIn TypeTipo de aplicativo que podria ser “Command” o “Aplication”
AssemblyEs la ruta donde esta el aplicativo (.dll).
AddInIdEs el Guid, es una codificación de microsoft para identificar sus documentos, archivos, elementos en general; esto podemos generarlo a partir del siguiente link.
FullClassNameEs la clase donde esta el método execute.
TextEs el nombre como se va a mostrar dentro del aplicativo.
VendorIdPuede ser cualquier texto.
VendorDescriptionUna descripción del aplicativo, para que sirve.
VisibilityModeNotVisibleInFamily: Que no se aplicara dicho applicativo en una familia.
DisciplineDisciplina según la especialidad en que se trabajara (Arquitectura, Estructura, Electrica, Mecanicas, Etc).

Luego agregaremos a Visual Studio los eventos de compilación, los cuales despues de compilar un addin dentro de Revit. Permite compilar los archivos .dll y .addin dentro de una caperta que Revit leera el manifiesto y podra cargar nuestro addin, podemos encontrar estos eventos en el siguiente link.

copy "$(ProjectDir)*.addin" "$(AppData)\Autodesk\REVIT\Addins\2020"
copy "$(ProjectDir)bin\debug\*.dll" "$(AppData)\Autodesk\REVIT\Addins\2020"

Resaltado

Resaltado

Como último paso, despues ingresar estos eventos procedemos a compilar el aplicativo, el cual nos dara como resultado que el aplicativo se compilo dentro de Revit.

Resaltado

Abrimos Revit 2020 y nos saldra una notificación indicando que se ingresera un aplicativo a Revit donde debemos seleccionar la opción “Cargar siempre”.

Resaltado

Una vez realizado eso abrimos un proyecto de ejemplo en Revit, nos vamos a la pestaña de complementos/Herramientas externas/Hola Mundo.

Resaltado

Como producto final vemos el mensaje que nos muestra nuestro primer aplicativo.

Resaltado

Y eso es todo. Es un proceso corto pero vale la pena intentarlo y probarlo, sumemonos todos para poder formar una comunidad de personas que tengan las ganas de ingresar a este nuevo mundo de la programación.

Para más contenido suscríbanse al canal y compártanlo para que este tipo de contenido llegue a más personas.

Si necesitan más información sobre este increíble mundo de la automatización de procesos a través de la creación de aplicaciones en Autodesk Revit no duden en escribirme a mi LinkedIn Bryan Espinoza Allcca o dejar comentarios debajo de este post.

Únete a nuestra comunidad y mantente actualizado.

Recibe semanalmente tutoriales, recursos, noticias sobre temas innovadores dentro del sector construcción y destaca profesionalmente.

Subscribiéndose, estás de acuerdo con los Términos y condiciones de la Política de Privacidad. de Lambda Ingeniería e Innovación

Deja tus comentarios

;