Revit: Ubicar Elementos en Coordenadas con Dynamo
Hasta donde yo sé, por el momento no hay ningún modo de colocar elementos en Revit en unas coordenadas determinadas, y hay que recurrir a AutoCAD como intermediario. Sin embargo, con la ayuda de Dynamo se puede automatizar la ubicación de objetos en coordenadas precisas.
El ejemplo más habitual de uso es para introducir los puntos de coordenadas de una parcela a partir de una tabla suministrada por el proveedor del servicio de topografía. Usualmente se hace entrega también de planos CAD georreferenciados, sin embargo, hemos encontrado en muchas ocasiones errores de precisión al posicionar las coordenadas sobre un CAD vinculado en Revit. Es por ello que surgió la necesidad de introducir los puntos desde la tabla de coordenadas almacenada en un archivo Excel.
De modo general, la definición de Dynamo sigue este sencillo proceso:
- Lee los datos del archivo .xlsx
- Posiciona ejemplares de una familia (de columna estructural 2D en este ejemplo) en cada uno de los puntos de coordenadas.
- Dibuja con líneas de modelo los límites de la propiedad.
- Opcionalmente, etiqueta los puntos de coordenadas.
- Se rellena una tabla de coordenadas previamente configurada.
Lo primero será preparar la tabla de coordenadas en Excel. El orden de las columnas determinará el orden que demos después a la lectura de datos en Dynamo. Los datos están en mm en este ejemplo.
Si estamos trabajando con valores de coordenadas muy altos, más allá de los límites del espacio de trabajo preciso en Revit, es altamente recomendable primero especificar los valores del Survey Point a un punto cercano a los que vamos a introducir, y preferiblemente uno de los puntos de la parcela. He elegido P1 para este caso.
Antes de entrar en detalles, veamos rápidamente cómo funciona al ejecutarlo desde Dynamo Player. Siempre es recomendable acceder a la edición de entrada de datos antes de ejecutar la herramienta. Se podrán alterar algunos valores de campos, si es necesario.
En todo caso, una vez ejecutado, gracias al formulario de entrada de datos de data|shapes, tendremos una nueva oportunidad de confirmar o modificar la información de entrada. Como puede verse, todas las opciones son intuitivas y sus valores por defecto se corresponden con los más habituales.
Una vez pulsado OK, se obtiene rápidamente un cuadro de diálogo final con los resultados.
Comprobamos en Revit si el trazado y los puntos están donde esperábamos, así como el contenido de la tabla. Vemos también que están etiquetados, y en una vista frontal en 3D se nos presenta la elevación de cada punto dando pendiente a las líneas de límite de propiedad.
Como ven, es realmente sencillo de utilizar, y sin la necesidad de un gran trabajo previo de preparación.
Vamos ahora a detallar por pasos la construcción del script en Dynamo.
En primer lugar, vemos un grupo de nodos con los que se está haciendo una selección por defecto de la ruta en la que debe estar el archivo de Excel, siguiendo el estándar de la compañía. No voy a profundizar en ello, porque obviamente está muy personalizado, pero sí quisiera mencionar que es de una gran ayuda para evitar clicks extras buscando el archivo en una red corporativa con muchos directorios ganando mucho tiempo al ejecutar la definición. Cumplir el estándar tiene premio. Este grupo de nodos alimenta al valor por defecto de la ruta del archivo del siguiente grupo que veremos a continuación.
Antes de la incorporación en Dynamo Player de la opción de introducir datos de entrada, no había otra forma de controlar por el usuario diferentes opciones. Con los nodos de data|shapes (Mostafa el Ayoubi) era posible dar esa interactuación a los usuarios con diferentes cuadros de diálogo y tipos de entrada de datos. Una vez que esto ya fue posible con Dynamo Player, he mantenido las funcionalidades de data|shapes en mis definiciones, porque pienso que siguen siendo más flexibles y amigables, y permiten pasos intermedios con actuación del usuario. Además, estas entradas de datos están forzadas, mientras que en Dynamo Player queda escondida y es común olvidarse de ello. Normalmente, los valores por defecto serán los deseados y bastará con confirmar con OK para continuar con la ejecución.
En el siguiente grupo de nodos se hace lectura del archivo de Excel y se separan los datos de cada columna, excluyendo los encabezados.
Ahora llegamos a una operación de traslado y rotación de los puntos respecto del punto de origen interno de Revit. Esto es necesario para garantizar que en cualquier circunstancia tendremos los puntos ubicados correctamente. Es decir, en los casos en los que por alguna razón el Survey Point se haya desplazado respecto del origen interno y/o se haya realizado ya una rotación del ángulo del proyecto. Si no se ha hecho nada de esto no hay problema, porque los valores con los que se opera son 0 y no se altera el resultado.
La operativa principal está escondida dentro del nodo Point.Translate, que se muestra en la siguiente imagen.
El grupo siguiente se encarga de ubicar la familia elegida en los puntos ya trasladados a la referencia del origen, y asegurándose que lo hacen en el nivel de la vista designada en los pasos previos.
El nodo View.GetLevel está abierto en la imagen siguiente.
Seguimos con la copia de los valores de coordenadas a parámetros personalizados de las familias que hayamos elegido para representar los puntos de coordenadas.
A continuación, se dibujan las líneas de propiedad trazando un polígono entre los puntos y se etiquetan estos, si lo hemos decidido así anteriormente.
Y para finalizar, volvemos a usar data|shapes para mostrar un último cuadro de diálogo de confirmación del resultado. En mi opinión, es extremadamente útil hacer esto con todas las definiciones para que el usuario tenga una idea más precisa de lo que ha sucedido y si todo ha ido bien antes de revisarlo en Revit.
Confío en que la explicación haya sido suficientemente clara, aunque sin entrar en muchos detalles para que tampoco resulte demasiado pesada. Les animo a dejar comentarios para resolver dudas, e incluso aportar mejoras.
Notas y reconocimientos:
· El presente tutorial de Dynamo tiene por objetivo ayudar modestamente al desarrollo de la automatización en los procesos de trabajo del mundo AEC.
· Por motivos de confidencialidad y debido a su alta personalización, ninguno de los scripts presentados pueden ser compartidos.
· Gracias a todos los desarrolladores de paquetes para Dynamo, sin cuyo esfuerzo, consejos y generosidad no sería posible ampliar el poder de personalización de Revit, lo que aumenta considerablemente su eficacia y eficiencia. Me gustaría destacar especialmente el trabajo de:
· Mostafa El Ayoubi (data | shapes)
· Andreas Dieckmann (Clockwork)
· Konrad K Sobon (archilab & BumbleBee)
· Nate Miller (LunchBox & Rhynamo)
· Dimitar Venkov (SpringNodes)
· John Pierson (Rhythm & Bang)
· Julian Benoit (SteamNodes)
· Thomas Mahon (Bimorph)
· Luke Johnson (Bakery)
· Johnes Hou (Hot Gear)
· Colin McCrone (Ampersand)
· Dieter Vermeulen (BIM4Struc.Rebar)
· Laurenk Schmidt (Landform)
· Tomasz Fudala (Structural Design)
· Modelical
· Marc Tavernier
· Por mi parte, he desarrollado nodos personalizados para simplificar definiciones y reutilizarlos en otros. Cuando es necesario para comprender los tutoriales, muestro la imagen del nodo personalizado para que pueda recrearse.
- Haz clic para compartir en Facebook (Se abre en una ventana nueva)
- Haz clic para compartir en Twitter (Se abre en una ventana nueva)
- Haz clic para compartir en LinkedIn (Se abre en una ventana nueva)
- Haz clic para compartir en WhatsApp (Se abre en una ventana nueva)
- Haz clic para compartir en Telegram (Se abre en una ventana nueva)
- Haz clic para compartir en Pinterest (Se abre en una ventana nueva)
- Más
- Haz clic para enviar un enlace por correo electrónico a un amigo (Se abre en una ventana nueva)
- Haz clic para compartir en Tumblr (Se abre en una ventana nueva)
- Haz clic para compartir en Reddit (Se abre en una ventana nueva)
- Haz clic para compartir en Pocket (Se abre en una ventana nueva)
- Haz clic para imprimir (Se abre en una ventana nueva)