You are on page 1of 16

https://www.augi.

com/articles/detail/getting-started-with-revit-macros

Introduccin a Revit macros


Introduccin
Seamos realistas, a veces trabajando en Autodesk Revit puede ser una tarea.
Hay algunas tareas que son simplemente aburrido, o repetitivo, o ambos. hojas de
cambio de nombre, salas de renumeracin, el cambio de nombres de familia son
todas las tareas necesarias, pero no ayuda precisamente a que para el trabajo
emocionante, sobre todo si tiene que hacerlo ms de una vez.

Afortunadamente, Revit proporciona herramientas para la automatizacin de este


tipo de tareas repetitivas. Al escribir las macros, puede Revit personalizado a medida
de los detalles de cmo se trabaja. Puede afinar sus herramientas para hacer su
trabajo ms rpido y con mayor precisin.

Qu es una macro?
Una macro es una serie de comandos y funciones creadas por el usuario que se
escriben utilizando la interfaz de programacin de aplicaciones de Revit (API) y
crean en SharpDevelop, un entorno de desarrollo integrado de cdigo abierto (IDE)
integrado en Revit. Las macros se almacenan dentro de los archivos de proyecto de
Revit y se ejecutan directamente desde Revit. A diferencia de otras aplicaciones en
las macros, macros de Revit no se pueden grabar. Debe escribir todo el cdigo de
las macros.

La eleccin de un idioma
Una de las mejores cosas de escribir macros en Revit es que se puede elegir entre
cuatro idiomas diferentes para escribir el cdigo. Dado que la API de Revit se
construye en el marco Microsoft .Net 4.0, puede escribir macros en el directorio C #,
Visual Basic .NET, Python, Ruby o lenguajes de programacin. Todos los idiomas
compilar en el mismo lenguaje intermedio por lo que tiene acceso completo a la API
de Revit, independientemente del idioma que elija. Usted puede construir
exactamente la misma macro en trminos de funcionalidad utilizando cualquiera de
los idiomas soportados. La eleccin de un idioma es en gran medida una cuestin de
preferencia personal y estilo de aprendizaje.

Los ejemplos de este artculo se escriben utilizando VB.Net, que es un gran lenguaje
de los programadores principiantes. Que evolucion a partir de Microsoft Basic y
conserva la amistad de bsico hacia los nuevos programadores. cdigo VB.Net es
ms manejable que otros idiomas y es ms fcil de leer y entender.
Un beneficio adicional para aprender a escribir macros en Revit es que se puede
poner estas nuevas habilidades de programacin para utilizar en otros aspectos de
su trabajo. Una vez que haya una comprensin de la lengua, se puede escribir
cdigo para otras aplicaciones o crear sitios web o aplicaciones independientes. Los
beneficios de aprender a escribir cdigo son muy amplias y le pagarn muchos
dividendos a lo largo de su carrera.

El SDK de Revit 2014


Para empezar, se debe instalar el SDK de Revit 2014. El SDK (kit de desarrollo de
software) contiene los archivos de ayuda y cdigo de ejemplo que le ayudar a
medida que aprende a programar macros. El SDK de Revit 2014 se puede instalar
desde la pgina principal del instalador de Revit o puede ser descargado desde el
sitio web de Autodesk Developer Network:
http://usa.autodesk.com/adsk/servlet/index?id=2484975&siteID=123112 .

El SDK se instalar en el disco duro y crear las siguientes carpetas y archivos.


Tmese su tiempo para revisar los archivos. Las muestras de macro en particular,
son tiles cuando se empieza a crear sus propias macros.

Figura 1: La carpeta SDK

Su primera macro!
Listo para crear su primera macro? Como ver, el proceso es muy sencillo. Siga
estos pasos y usted estar en su camino a la maestra macro.

1. Abra el Administrador de macros


En Revit 2014, crear un nuevo archivo de proyecto. Una vez creado el archivo, abra
el Administrador de macros mediante la seleccin de la cinta de Manejo y haciendo
clic en el icono Macro Manager.

Figura 2: El Manejo de la cinta

Las macros pueden residir en el archivo de proyecto activo o dentro de la aplicacin.


Macros guardadas en el archivo de proyecto puede ser utilizado por cualquier
usuario que abre ese archivo. Macros guardadas en la aplicacin se guardan en la
configuracin de Revit del usuario. Estas macros se pueden utilizar en cualquier
archivo de modelo, pero slo por el usuario que ha creado la macro.

Figura 3: Administrador de macros

2. Crear un nuevo mdulo

Para crear una macro, primero debe crear un nuevo mdulo. Un mdulo es
simplemente un conjunto de macros. Cada macro dentro del mdulo debe tener un
nombre nico y todas las macros en el mdulo debe compilar sin errores.

Haga clic en la pestaa "Proyecto 1" y luego haga clic en el botn de mdulo en la
seccin "Crear". En el cuadro de dilogo "Crear un nuevo mdulo", ttulo de su
mdulo "MyFirstModule." Elige VB.Net como el lenguaje del mdulo a continuacin,
haga clic en Aceptar para crear el mdulo.

Una vez Revit ha creado el mdulo, SharpDevelop pondr en marcha en el fondo.


SharpDevelop es el entorno de desarrollo integrado que se construye a Revit para la
programacin de macros.

3. Crear una nueva macro

Ahora que tenemos un mdulo, vamos a crear una macro para ir en el mdulo.
Hacer Revit la aplicacin activa y haga clic en el botn de macro en la seccin
"Crear" del cuadro de dilogo Administrador de macros. En el cuadro de dilogo
Crear un nuevo macro, el ttulo de la macro "" MyFirstMacro "y establecer el idioma
de VB.Net. Haga clic en OK para crear la macro.

Figura 4: Crear macro

4. Escriba su macro

De vuelta en el cuadro de dilogo Administrador de macros, seleccione


"MyFirstMacro" de la lista y haga clic en el botn "Editar". Esto le llevar a
SharpDevelop. En la ventana de cdigo SharpDevelop, ver cdigo estndar que se
crea automticamente. Desplazarse a la parte inferior de la pantalla y ver el cdigo
de partida para "MyFirstMacro."
Figura 5: Cdigo de inicio

Su primera macro va a simplemente pop-up un cuadro de mensaje en Revit. Slo se


necesita una lnea de cdigo. Entre "Public Sub MyFirstMacro ()" y "End Sub",
escriba lo siguiente:

TaskDialog.Show ( "Mi Primera Macro", "Esta es mi primera macro!")

5. Construir su macro

Una vez que haya escrito el cdigo, est listo para construir la macro. Todas las
macros se deben construir o compilar antes de Revit puede ejecutarlos. En los
mens desplegables SharpDevelop, seleccione "Build" y luego "Generar solucin."

Figura 6: Generar soluciones

Cualquier error en su cdigo o advertencias se resaltan en la ventana de error y


advertencias en la parte inferior de la interfaz SharpDev. Si no aparece la ventana de
errores, haga clic en la opcin "Ver" desplegable a continuacin, seleccione
"Errores" de la lista.
Figura 7: Ventana de errores

Si usted tiene un error, vuelva a revisar su cdigo y asegurarse de que su ortografa


y la sintaxis son correctas. La ventana de cdigo mostrar una lista de errores por su
nmero de lnea por lo que son generalmente fciles de identificar.

6. Ejecutar la macro

Revit slo se ejecutar macros que han compilado sin errores. Si su macro
compilado correctamente, volver a Revit y abra el dilogo Macro Manager
(Administrar> Administrador de macros). Debera ver "MyFirstMacro" en la lista de
"MyFirstModule."

Figura 8: El cuadro de dilogo Administrador de macros


Seleccione "MyFirstMacro" y luego haga clic en el botn Ejecutar. Esto ejecutar la
macro. Debera ver lo siguiente en la pantalla:

Figura 9: Mi Primera Macro

Lo hiciste! Usted ha escrito y compilado su primera macro. Para ir ms lejos, se


puede modificar el cdigo para informar de algo ms til. Si desea que el cdigo
para informar de nombre de archivo del archivo actual, cambiar el cdigo por lo
siguiente:

TaskDialog.Show ( "Mi Primera Macro", "El nombre del archivo


actual es _" & Me.Document.Title)

El objeto "Me.Document" contiene datos pertenecientes al archivo del modelo actual.


Para una variacin, el cambio "Me.Document.Title" a
"Me.Document.ActiveView.ToString" para ver la vista activa del archivo de proyecto
actual.

ms Macros
Nuestra primera macro era til para ilustrar el proceso para la creacin de una
macro, pero vamos a tomar lo que hemos aprendido y ponerlo a trabajar en una
macro que realmente hace algo til. Este es el escenario para la siguiente macro:
Usted va a aadir una nueva hoja en una secuencia de hojas y hay que hacer un
poco de renumeracin. Se poda hacer esto manualmente, pero es bastante tedioso
y es posible que se pierda una hoja en el proceso. En lugar de hacerlo
manualmente, vamos a escribir una macro que se pone el nmero de la hoja actual y
la incrementa por uno automticamente.

Una de las primeras cosas que tenemos que hacer cuando se escribe esta macro es
importar el espacio de nombres Microsoft.VisualBasic. Esto nos permitir usar
ciertas funciones de Visual Basic, como isNumeric. Desde nmeros de las hojas
pueden contener letras, necesitamos probar los tres ltimos dgitos del nmero de la
hoja para asegurarse de que contiene slo nmeros.
Figura 10: Las importaciones comunicado

Cada vez que hagamos un cambio en el modelo a travs de cdigo, tenemos que
crear una transaccin. Una transaccin crea un bloqueo en el modelo de lo que no
hay otros cambios pueden ocurrir al mismo tiempo el cambio se est produciendo. El
cdigo de transaccin es muy sencillo. Se debe envolver el cdigo que est
haciendo el cambio en el modelo. Si intenta ejecutar la macro sin el cdigo de
transaccin, obtendr un error. Esto es lo que el cdigo de transaccin se ve as:

Figura 11: Cdigo de transaccin

Tenga en cuenta que cualquier lnea que comienza con un apstrofe es una lnea de
comentario. Este tipo de lneas no son compilados por SharpDevelop. Las lneas de
comentario se utilizan para describir la macro y para servir como un recordatorio de
lo que hace el cdigo.

El flujo de la macro hoja de renumeracin es la siguiente: El cdigo se inicia


mediante la determinacin de si la vista actual es una hoja. Si es as, el cdigo
obtiene los tres ltimos dgitos del nmero de la hoja. Comprueba si los ltimos tres
nmeros son realmente nmeros. Si es as, el cdigo crea una nueva variable que
corresponde a los ltimos tres nmeros ms uno. Despus, el cdigo crea una
transaccin y actualiza el nmero de la hoja de la hoja actual. Como ltimo paso, los
alertas macro al usuario que el nmero de la hoja se ha actualizado.

Para probar esto por s mismo, crear una nueva macro y escriba el siguiente cdigo:
Figura 12: cdigo de la hoja de incremento

Algunas variaciones de este macro seran volver a numerar automticamente todas


las hojas en el archivo de proyecto en lugar de slo la hoja activa. Otra opcin sera
volver a numerar una serie especfica, definida por el usuario de las hojas, como slo
las hojas A2 o M5.

Otra macro til es aquella que convierte lneas de modelo a las paredes. Esta macro
se muestra cmo solicitar al usuario la informacin y cmo crear objetos de Revit. La
macro tambin se utiliza un filtro de elemento, que es la forma en la API recoge los
objetos de un tipo determinado. Aqu est el cdigo:
Figura 13: Paredes de lneas

El cdigo empieza por pedir al usuario que seleccione un objeto de nivel. El nivel
seleccionado ser el nivel en el que se crean las nuevas paredes. El comando
Me.Selection.PickObject solicita al usuario y pone el objeto de nivel seleccionado en
la variable curLevel. Despus, el cdigo crea una coleccin de todos los elementos
de lnea en el proyecto mediante el FilteredElementCollector. Puede utilizar
FilteredElementCollectors para crear selecciones de cualquier tipo de objeto en
Revit. Una vez que se recogen las lneas, el cdigo recorre cada lnea y comprueba
si se trata de una lnea de modelos. Si lo es, el cdigo crea una transaccin y utiliza
la geometra de la lnea actual para crear un nuevo pared. Una vez creada la pared,
el cdigo confirma los cambios a continuacin, pasa a la siguiente lnea.

Para ampliar esta macro, usted podra tener el cdigo de crear diferentes tipos de
pared para diferentes tipos de lnea. Tambin podra programarlo para crear
automticamente las paredes de una capa especfica en lugar de preguntar al
usuario para el nivel. Una tercera variacin podra utilizar un AutoCAD ligado dibujo
en lugar de variantes de modelos.

Ir ms lejos
Entonces, qu otras tareas se puede automatizar con Revit? Casi cualquier cosa
que se pueda imaginar! Los buenos candidatos para la automatizacin macro son
tareas que son estndar o que requieren una gran cantidad de entrada de datos.
Algunos ejemplos podran incluir:

Actualizar todas las instancias de la familia ventana con los datos de


fabricacin a partir de una hoja de clculo.
Compruebe que todas las puertas de las paredes resistentes al fuego son en
realidad las puertas resistentes al fuego.
Insertar componentes en base a datos de coordenadas en una hoja de
clculo.
Cambiar el nombre de todas las familias de encargo con un prefijo especfico
para su empresa antes de compartir el modelo.
colocar automticamente los tipos de vista especficos en una hoja.

Eso es slo una pequea lista de tareas que podran ser automatizadas. Qu
tareas haces sobre una base regular que le gustara ver automatizado? Podra
escribir una macro que hara la mayora, si no todos, de la labor tediosa?

Conclusin
Aprender a escribir macros en Revit puede mejorar drsticamente su eficiencia con
el software. Una macro bien escrito puede completar una tarea tediosa vez con el
clic de un botn. A medida que crecen sus habilidades de programacin, por lo que
ser su capacidad para hacer lo que pareca imposible. Programacin de macros
requiere tiempo y paciencia, pero es una tarea gratificante. No se deje intimidar por
el cdigo. Acaba de trabajar de manera sistemtica y tomar pequeos pasos y usted
estar bien en su camino a la maestra macro.

Recursos adicionales
Adems de la informacin proporcionada en el SDK de Revit 2014, se pueden
encontrar muchos recursos en lnea para el aprendizaje de la API de Revit. He aqu
una lista de algunos sitios web y recursos que he encontrado para ser til:

Blogs

impulsar su Bim - http://boostyourbim.wordpress.com/

El codificador de construccin - http://thebuildingcoder.typepad.com/

Spiderinnet - http://spiderinnet.typepad.com/blog/

El campo de pruebas - http: / /wiki.theprovingground.org/revit-api

Los foros en lnea

AUGI - http://forums.augi.com/forumdisplay.php?218-Revit-API

Cursos en lnea

aprender a programar la API de Revit - https://www.udemy.com/revitapi/

Libros

de Autodesk Revit 2013 de personalizacin con .Net Cmo hacer por Don Rudder
Michael Kilkelly AIA es un director al Comando Espacial ( www.spacecmd.com ), una
arquitectura y consultora en Middletown, Connecticut. Antes de fundar el Comando
Espacial en 2012, Michael era un asociado de Gehry Partners en Los ngeles.
Recibi el grado de B.Arch de la Universidad de Norwich en 1995 y sus SMArchS del
MIT en 1999. Michael escribe sobre la arquitectura y la tecnologa en su blog en
www.archsmarter.com. Puede ponerse en contacto con Michael en
michael@spacecmd.com .
http://help.autodesk.com/view/RVT/2016/ESP/?guid=GUID-10D1DE85-966D-44B0-9DB0-
8B23CCBF2462

Ejemplo de cdigo de macro de nivel de aplicacin VB.NET

En el IDE, utilice este cdigo para crear una macro para aadir una nota de texto a la
vista.

Public
Sub MyFirstMacroAppVB()
Dim
baseVec As Autodesk.Revit.DB.XYZ = Application.Create.NewXYZ(1.0,
0.0, 0.0)Dim
upVec As Autodesk.Revit.DB.XYZ = Application.Create.NewXYZ(0.0,
0.0, 1.0)Dim
origin As Autodesk.Revit.DB.XYZ = Application.Create.NewXYZ(0.0,
0.0, 0.0)Dim
align As Autodesk.Revit.DB.TextAlignFlags =
Autodesk.Revit.DB.TextAlignFlags.TEF_ALIGN_LEFT
Or Autodesk.Revit.DB.TextAlignFlags.TEF_ALIGN_TOPDim
strText As String = "My First Macro, App Level, VB.NET!"Dim
lineWidth As Double = 4.0 / 12.0Dim
pView As Autodesk.Revit.DB.View =
ActiveUIDocument.Document.ActiveViewDim
Transaction As Autodesk.Revit.DB.Transaction = New
Autodesk.Revit.DB.Transaction(ActiveUIDocument.Document,
"NewTextNote")Transaction.Start()ActiveUIDocument.Document.Create.Ne
wTextNote(pView,
origin, baseVec, upVec, lineWidth, align,
strText)Transaction.Commit()

End Sub

Tenga en cuenta que, dado que esta macro de nivel de aplicacin tiene la finalidad de
modificar un documento, debe iniciar una transaccin (Transaction.Start()) y
finalizarla (Transaction.Commit()) para que la macro se ejecute debidamente.
Consejo: Asegrese de crear su proyecto en el IDE de macros de Revit antes de
intentar ejecutarlo desde el Administrador de macros.
En este ejemplo, cuando genere el proyecto en el IDE de macros de Revit, tenga en
cuenta que est creando el proyecto AppVisualBasic. El cdigo de su macro VB.NET
a nivel de aplicacin reside en ThisApplication.vb. Puede utilizar el Explorador de
proyectos del IDE para ver su ubicacin en el disco. Para ejecutar su macro recin
creada, seleccinela en el Administrador de macros y haga clic en Ejecutar. A
continuacin, si es necesario, haga clic con el botn derecho en la vista activa y
seleccione Ajustar en ventana en el men para ver la nota de texto aadida por la
macro.

El cuadro de texto colocado por la macro

http://help.autodesk.com/view/RVT/2016/ESP/?guid=GUID-1867046D-4B85-44D9-93BF-
651CE4FBCF1B

Ejemplo de cdigo de macro de nivel de documento VB.NET

En el IDE, utilice este mtodo de VB.NET para aadir un cuadro de texto colocado por la
macro a la vista activa.

En el IDE, utilice el siguiente cdigo para el mtodo:


Public
Sub MyFirstMacroDocVB()
Dim baseVec As Autodesk.Revit.DB.XYZ =
Document.Application.Create.NewXYZ(1.0, 0.0, 0.0)
Dim upVec As Autodesk.Revit.DB.XYZ =
Document.Application.Create.NewXYZ(0.0, 0.0, 1.0)
Dim origin As Autodesk.Revit.DB.XYZ =
Document.Application.Create.NewXYZ(0.0, 0.0, 0.0)
Dim align As Autodesk.Revit.DB.TextAlignFlags =
Autodesk.Revit.DB.TextAlignFlags.TEF_ALIGN_LEFT Or
Autodesk.Revit.DB.TextAlignFlags.TEF_ALIGN_TOP
Dim pView As Autodesk.Revit.DB.View = Document.ActiveView
Dim Transaction As Autodesk.Revit.DB.Transaction = New
Autodesk.Revit.DB.Transaction(Document,
"NewTextNote")Transaction.Start()Document.Create.NewTextNote(pView,origin
, baseVec, upVec, lineWidth, align, strText)
Transaction.Commit()

End Sub
Consejo: Asegrese de crear su proyecto en el IDE de macros de Revit antes de
intentar ejecutarlo desde el Administrador de macros.
En este ejemplo, cuando cree el proyecto en el IDE de macros de Revit, observe que
est generando el proyecto DocVisualBasic y su cdigo de macro VB.NET de nivel de
documento reside en ThisDocument.vb. Puede utilizar el Explorador de proyectos del
IDE para ver su ubicacin temporal en el disco. Recuerde que el cdigo para crear
correctamente macros de nivel de documento est almacenado en el archivo RVT
despus de guardar dicho archivo. Los archivos del proyecto se eliminan de la ubicacin
temporal cuando Revit se cierra.

El cuadro de texto colocado por la macro

You might also like