Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Conversion Dynamo A Script Con Csharp

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 32

Video Tutorial: Convierte tus Scripts de Dynamo en Add-

Ins usando C#

¿Alguna vez has querido desarrollar un Add-in que funcione igual que tus rutinas de Dynamo? Muchas veces queremos compartir
nuestros Scripts dentro de nuestra oficina o hacia algún compañero enviando solamente el archivo (*.dyn). Esto resulta muy útil la
mayoría de veces pero rara vez la rutina corre perfecto la primera vez que la ejecutan, y se necesita que la persona que la implemente
tenga conocimientos de Dynamo para poder ingresar a los nodos y modificar algo si es que es necesario. Se complica aún más cuando
no se tiene la versión correcta de Dynamo ni tampoco los mismos packages o paquetes descargados e instalados en el computador.

Teniendo un Add-in externo se solucionan los problemas de implementación y ejecución de la rutina para un usuario de Revit que no
se maneja usando Dynamo.

Aquí te explicamos el procedimiento que usamos para poder transformar nuestras rutinas en Add-ins listos para enviar, instalar y
ejecutar:

Paso 1: Primero tenemos que tener una rutina de Dynamo que queramos transformar. En este caso usaremos la rutina
"SetViewOnSheetByCode.dyn".
Construimos nuestra rutina y usamos el nodo "Tool.PlaceViewsOnExistingSheets" del package "Steam
Nodes" . Este nodo es el que hace la tarea deseada de colocar la vista en la lamina indicada. Si abrimos el
nodo vemos que es un Custom Node con el código escrito en Python. Este código nos servirá más adelante
como referencia cuando escribamos nuestro Add-in en C#.
Probamos el Script colocando la vista 'Level 2 - Lighting Plan' en la lamina 'E201', abrimos Dynamo y
escribimos el código en el nodo 'String' como se nuestra abajo.
El Script funciona correctamente y coloca la vista en la lamina indicada.

Paso 2: Ahora queremos hacer esto mismo pero sin usar Dynamo, sino usando un Add-in ubicado en las
pestañas superiores. Lo primero es escribir el código en C# y para eso abrimos el Macro Manager que nos
brinda Revit, y sobre este framework de desarrollo llamado SharpDevelop escribiremos nuestro código:
El framework de desarrollo de Revit es llamado SharpDevelop, y al abrirlo nos muestra una pantalla tal
cual la imagen inferior.
En la parte del medio es en donde escribiremos nuestro código para lo cual usaremos el Revit API Docs
como guía y referencia, se puede descargar o consultar gratuitamente desde
aquí: https://www.revitapidocs.com/

Es necesario tener conocimientos del lenguaje de programación C# para poder encontrar el algoritmo que
haga lo mismo que hace el Script de Dynamo.

El método:

public void placeActiveView()

es el que coloca la vista dentro de la lamina indicada, y será el que usaremos más adelante cuando escribamos nuestro código para la
Add-in.
Una vez desarrollado el código, el SharpDevelop queda como se muestra arriba y ahora lo probamos. Al
ejecutar la macro (botón Run) se abre una ventana en donde ingresaremos el código de la lamina donde
queremos colocar la vista: E201.
Este es el código desarrollado en C# para nuestra Macro:
Parte 3: Vemos que la Macro queda guardada dentro de nuestro software o dentro de nuestro archivo de
modelo. Lo cual no es del todo cómodo si lo que queremos es compartirlo fácilmente con otros usuarios.
Es por esto que tenemos que llevar este código escrito dentro de la Macro hacia un Add-in externo y usaremos el framework de
desarrollo de Microsoft Visual Studio para escribir nuevamente nuestro código en C#. A pesar que el lenguaje es el mismo, el código
para nuestra aplicación no es exactamente el mismo dentro de la Macro que dentro de Visual Studio, aunque si guarda la misma lógica
y orden para el comando que ejecuta nuestra tarea: colocar la vista en la lamina indicada.
Interfaz de desarrollo de Visual Studio:
Creamos la clase:

class ThisApplication : IExternalCommand

y dentro de ella se encuentra el método:

public Result Execute(ExternalCommandData commanData, ref string message, ElementSet elements)

en donde va el código obtenido anteriormente en el método de la macro:

public void placeActiveView()


Código desarrollado en C# para nuestro Add-in en Visual Studio:
Parte 4: Probamos colocando un botón en la parte superior de las pestañas dentro de Revit. Le ponemos
una imagen como icono y un poco de contenido en la descripción sobre de qué tarea o comando se trata.
e vuelve a abrir un formulario preguntando por el código de la lamina (Sheet number).
y nuevamente funciona correctamente colocando la vista activa en la lamina que le indicamos: E201.

También podría gustarte