馃捇 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 鈥淗elloWorld鈥 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 鈥淐lass1.cs鈥 por 鈥淐mdHelloWorld鈥. Una buena pr谩ctica personal es nombrar al inicio de cada comando con la palabra 鈥淐md鈥 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 鈥淩evitAPI鈥 y 鈥淩evitAPIUI鈥 que la podremos encontrar en la ruta 鈥淐:\Program Files\Autodesk\Revit 20XX鈥

Resaltado

Una vez agregadas las referencias, seleccionamos ambos 鈥淩evitAPI鈥 y 鈥淩evitAPIUI鈥 y en sus propiedades cambiamos el campo de 鈥淐opia local鈥 a 鈥淔alse鈥, 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 鈥渢hrow 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 鈥渢itulo鈥 y una 鈥渄escripci贸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 鈥淐ommand鈥 o 鈥淎plication鈥
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 鈥淐argar 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

;