Macros REVIT

https://www.augi.com/articles/detail/getting-started-with-revit-macros Introducción a Revit macros Introducción Seamos

Views 982 Downloads 67 File size 790KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

https://www.augi.com/articles/detail/getting-started-with-revit-macros

Introducción a Revit macros Introducción 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 renumeración, 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 más de una vez. Afortunadamente, Revit proporciona herramientas para la automatización de este tipo de tareas repetitivas. Al escribir las macros, puede Revit personalizado a medida de los detalles de cómo se trabaja. Puede afinar sus herramientas para hacer su trabajo más rápido y con mayor precisión.

¿Qué es una macro? Una macro es una serie de comandos y funciones creadas por el usuario que se escriben utilizando la interfaz de programación de aplicaciones de Revit (API) y crean en SharpDevelop, un entorno de desarrollo integrado de código 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 código de las macros.

La elección 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 código. 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 programación. 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 términos de funcionalidad utilizando cualquiera de los idiomas soportados. La elección de un idioma es en gran medida una cuestión de preferencia personal y estilo de aprendizaje. Los ejemplos de este artículo 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 básico hacia los nuevos programadores. código VB.Net es más manejable que otros idiomas y es más fácil de leer y entender.

Un beneficio adicional para aprender a escribir macros en Revit es que se puede poner estas nuevas habilidades de programación para utilizar en otros aspectos de su trabajo. Una vez que haya una comprensión de la lengua, se puede escribir código para otras aplicaciones o crear sitios web o aplicaciones independientes. Los beneficios de aprender a escribir código son muy amplias y le pagarán 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 código de ejemplo que le ayudará a medida que aprende a programar macros. El SDK de Revit 2014 se puede instalar desde la página 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. Tómese 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 maestría 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 selección 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 aplicación. Macros guardadas en el archivo de proyecto puede ser utilizado por cualquier usuario que abre ese archivo. Macros guardadas en la aplicación se guardan en la configuración de Revit del usuario. Estas macros se pueden utilizar en cualquier archivo de modelo, pero sólo por el usuario que ha creado la macro.

Figura 3: Administrador de macros 2. Crear un nuevo módulo Para crear una macro, primero debe crear un nuevo módulo. Un módulo es simplemente un conjunto de macros. Cada macro dentro del módulo debe tener un nombre único y todas las macros en el módulo debe compilar sin errores. Haga clic en la pestaña "Proyecto 1" y luego haga clic en el botón de módulo en la sección "Crear". En el cuadro de diálogo "Crear un nuevo módulo", título de su

módulo "MyFirstModule." Elige VB.Net como el lenguaje del módulo a continuación, haga clic en Aceptar para crear el módulo. Una vez Revit ha creado el módulo, SharpDevelop pondrá en marcha en el fondo. SharpDevelop es el entorno de desarrollo integrado que se construye a Revit para la programación de macros. 3. Crear una nueva macro Ahora que tenemos un módulo, vamos a crear una macro para ir en el módulo. Hacer Revit la aplicación activa y haga clic en el botón de macro en la sección "Crear" del cuadro de diálogo Administrador de macros. En el cuadro de diálogo Crear un nuevo macro, el título 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 diálogo Administrador de macros, seleccione "MyFirstMacro" de la lista y haga clic en el botón "Editar". Esto le llevará a SharpDevelop. En la ventana de código SharpDevelop, verá código estándar que se crea automáticamente. Desplazarse a la parte inferior de la pantalla y verá el código de partida para "MyFirstMacro."

Figura 5: Código de inicio Su primera macro va a simplemente pop-up un cuadro de mensaje en Revit. Sólo se necesita una línea de código. 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 código, está listo para construir la macro. Todas las macros se deben construir o compilar antes de Revit puede ejecutarlos. En los menús desplegables SharpDevelop, seleccione "Build" y luego "Generar solución."

Figura 6: Generar soluciones Cualquier error en su código 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 opción "Ver" desplegable a continuación, seleccione "Errores" de la lista.

Figura 7: Ventana de errores Si usted tiene un error, vuelva a revisar su código y asegurarse de que su ortografía y la sintaxis son correctas. La ventana de código mostrará una lista de errores por su número de línea por lo que son generalmente fáciles de identificar. 6. Ejecutar la macro Revit sólo se ejecutará macros que han compilado sin errores. Si su macro compilado correctamente, volver a Revit y abra el diálogo Macro Manager (Administrar> Administrador de macros). Debería ver "MyFirstMacro" en la lista de "MyFirstModule."

Figura 8: El cuadro de diálogo Administrador de macros

Seleccione "MyFirstMacro" y luego haga clic en el botón Ejecutar. Esto ejecutará la macro. Debería ver lo siguiente en la pantalla:

Figura 9: Mi Primera Macro ¡Lo hiciste! Usted ha escrito y compilado su primera macro. Para ir más lejos, se puede modificar el código para informar de algo más útil. Si desea que el código para informar de nombre de archivo del archivo actual, cambiar el código 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 variación, el cambio "Me.Document.Title" a "Me.Document.ActiveView.ToString" para ver la vista activa del archivo de proyecto actual.

más Macros Nuestra primera macro era útil para ilustrar el proceso para la creación 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 añadir una nueva hoja en una secuencia de hojas y hay que hacer un poco de renumeración. Se podía 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 número de la hoja actual y la incrementa por uno automáticamente. 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 números de las hojas pueden contener letras, necesitamos probar los tres últimos dígitos del número de la hoja para asegurarse de que contiene sólo números.

Figura 10: Las importaciones comunicado Cada vez que hagamos un cambio en el modelo a través de código, tenemos que crear una transacción. Una transacción crea un bloqueo en el modelo de lo que no hay otros cambios pueden ocurrir al mismo tiempo el cambio se está produciendo. El código de transacción es muy sencillo. Se debe envolver el código que está haciendo el cambio en el modelo. Si intenta ejecutar la macro sin el código de transacción, obtendrá un error. Esto es lo que el código de transacción se ve así:

Figura 11: Código de transacción Tenga en cuenta que cualquier línea que comienza con un apóstrofe es una línea de comentario. Este tipo de líneas no son compilados por SharpDevelop. Las líneas de comentario se utilizan para describir la macro y para servir como un recordatorio de lo que hace el código. El flujo de la macro hoja de renumeración es la siguiente: El código se inicia mediante la determinación de si la vista actual es una hoja. Si es así, el código obtiene los tres últimos dígitos del número de la hoja. Comprueba si los últimos tres números son realmente números. Si es así, el código crea una nueva variable que corresponde a los últimos tres números más uno. Después, el código crea una transacción y actualiza el número de la hoja de la hoja actual. Como último paso, los alertas macro al usuario que el número de la hoja se ha actualizado. Para probar esto por sí mismo, crear una nueva macro y escriba el siguiente código:

Figura 12: código de la hoja de incremento Algunas variaciones de este macro serían volver a numerar automáticamente todas las hojas en el archivo de proyecto en lugar de sólo la hoja activa. Otra opción sería volver a numerar una serie específica, definida por el usuario de las hojas, como sólo las hojas A2 o M5. Otra macro útil es aquella que convierte líneas de modelo a las paredes. Esta macro se muestra cómo solicitar al usuario la información y cómo crear objetos de Revit. La macro también se utiliza un filtro de elemento, que es la forma en la API recoge los objetos de un tipo determinado. Aquí está el código:

Figura 13: Paredes de líneas El código 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. Después, el código crea una colección de todos los elementos de línea 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 líneas, el código recorre cada línea y comprueba si se trata de una línea de modelos. Si lo es, el código crea una transacción y utiliza la geometría de la línea actual para crear un nuevo pared. Una vez creada la pared, el código confirma los cambios a continuación, pasa a la siguiente línea. Para ampliar esta macro, usted podría tener el código de crear diferentes tipos de pared para diferentes tipos de línea. También podría programarlo para crear automáticamente las paredes de una capa específica en lugar de preguntar al usuario para el nivel. Una tercera variación podría utilizar un AutoCAD® ligado dibujo en lugar de variantes de modelos.

Ir más lejos Entonces, ¿qué otras tareas se puede automatizar con Revit? Casi cualquier cosa que se pueda imaginar! Los buenos candidatos para la automatización macro son tareas que son estándar o que requieren una gran cantidad de entrada de datos. Algunos ejemplos podrían incluir: 

Actualizar todas las instancias de la familia ventana con los datos de fabricación a partir de una hoja de cálculo.

   

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 cálculo. Cambiar el nombre de todas las familias de encargo con un prefijo específico para su empresa antes de compartir el modelo. colocar automáticamente los tipos de vista específicos en una hoja.

Eso es sólo una pequeña lista de tareas que podrían ser automatizadas. ¿Qué tareas haces sobre una base regular que le gustaría ver automatizado? ¿Podría escribir una macro que haría la mayoría, si no todos, de la labor tediosa?

Conclusión Aprender a escribir macros en Revit puede mejorar drásticamente su eficiencia con el software. Una macro bien escrito puede completar una tarea tediosa vez con el clic de un botón. A medida que crecen sus habilidades de programación, por lo que será su capacidad para hacer lo que parecía imposible. Programación de macros requiere tiempo y paciencia, pero es una tarea gratificante. No se deje intimidar por el código. Acaba de trabajar de manera sistemática y tomar pequeños pasos y usted estará bien en su camino a la maestría macro.

Recursos adicionales Además de la información proporcionada en el SDK de Revit 2014, se pueden encontrar muchos recursos en línea 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 construcción - http://thebuildingcoder.typepad.com/ Spiderinnet - http://spiderinnet.typepad.com/blog/ El campo de pruebas - http: / /wiki.theprovingground.org/revit-api Los foros en línea AUGI - http://forums.augi.com/forumdisplay.php?218-Revit-API Cursos en línea aprender a programar la API de Revit - https://www.udemy.com/revitapi/ Libros de Autodesk Revit 2013 de personalización con .Net Cómo hacer por Don Rudder

Michael Kilkelly AIA es un director al Comando Espacial ( www.spacecmd.com ), una arquitectura y consultoría 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 tecnología en su blog en www.archsmarter.com. Puede ponerse en contacto con Michael en [email protected] .

http://help.autodesk.com/view/RVT/2016/ESP/?guid=GUID-10D1DE85-966D-44B0-9DB08B23CCBF2462

Ejemplo de código de macro de nivel de aplicación VB.NET En el IDE, utilice este código para crear una macro para añadir 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 aplicación tiene la finalidad de modificar un documento, debe iniciar una transacción (Transaction.Start()) y finalizarla (Transaction.Commit()) para que la macro se ejecute debidamente. Consejo: Asegúrese 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 código de su macro VB.NET a nivel de aplicación reside en ThisApplication.vb. Puede utilizar el Explorador de

proyectos del IDE para ver su ubicación en el disco. Para ejecutar su macro recién creada, selecciónela en el Administrador de macros y haga clic en Ejecutar. A continuación, si es necesario, haga clic con el botón derecho en la vista activa y seleccione Ajustar en ventana en el menú para ver la nota de texto añadida por la macro.

El cuadro de texto colocado por la macro

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

Ejemplo de código de macro de nivel de documento VB.NET En el IDE, utilice este método de VB.NET para añadir un cuadro de texto colocado por la macro a la vista activa. En el IDE, utilice el siguiente código para el método: 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: Asegúrese 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 código de macro VB.NET de nivel de documento reside en ThisDocument.vb. Puede utilizar el Explorador de proyectos del IDE para ver su ubicación temporal en el disco. Recuerde que el código para crear correctamente macros de nivel de documento está almacenado en el archivo RVT después de guardar dicho archivo. Los archivos del proyecto se eliminan de la ubicación temporal cuando Revit se cierra.

El cuadro de texto colocado por la macro