Professional Documents
Culture Documents
com/articles/detail/getting-started-with-revit-macros
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.
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.
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.
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.
4. Escriba su 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."
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."
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:
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.
Para probar esto por s mismo, crear una nueva macro y escriba el siguiente cdigo:
Figura 12: cdigo de la hoja de incremento
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:
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
Spiderinnet - http://spiderinnet.typepad.com/blog/
AUGI - http://forums.augi.com/forumdisplay.php?218-Revit-API
Cursos en lnea
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
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.
http://help.autodesk.com/view/RVT/2016/ESP/?guid=GUID-1867046D-4B85-44D9-93BF-
651CE4FBCF1B
En el IDE, utilice este mtodo de VB.NET para aadir un cuadro de texto colocado por la
macro a la vista activa.
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.