Descubre el Poder de Dynamo al automatizar la colocación de una familia de Rociadores en un modelo Revit
Estamos agradecidos de contar con usuarios y clientes que quieren compartir su conocimiento.
Por Ivana Kermen para el blog Autodesk Latam
El día de hoy tenemos el agrado de publicar un articulo creado por el Ingeniero Químico Alejandro Peláez De Lee, quien como usuario de Revit y Dynamo quiso compartir con todos cómo logró automatizar la colocación de rociadores en sus modelos BIM a través de Dynamo.
Veamos su paso a paso:
Dynamo-Revit es un lenguaje de programación visual, sencillo e intuitivo de utilizar que además cuenta con un bloque de programación Python. Dynamo permite personalizar a Revit, por ejemplo para automatizar acciones repetitivas de los diseñadores MEP (Mechanical, Electrical, Plumbing). El único pre-requisito para aprovechar Dynamo es entender cómo funcionan las familias MEP, (conectores, tipos de sistemas, tipos de parámetros, etc.) al modelar cualquier proyecto en Revit.
El siguiente “workflow” nos muestra el poder de Dynamo al colocar una familia de rociadores tipo “pendent” (el ejemplo no sigue ninguna norma de ubicación, ni de cantidad de rociadores, bajo NFPA u otro estándar), en un cielo raso con bloques de Dynamo utilizando la opción de lacing.
Paso 1.
Crear una familia sencilla (en este ejemplo no vamos a parametrizar las dimensiones del rociador, ni modificar su apariencia en las “views“, ni tampoco agregar un factor de pérdida de presión, etc.) de rociadores que NO sea family hosted, por ejemplo puede ser una familia de categoría Family Category, Fitting. Esto permite que los rociadores se puedan ubicar a la altura que el diseñador necesita.
Se le deja un conector tipo “pipe” en la parte inferior de la extrusión (es un rociador pendent), asociado al parámetro tipo Family por nombre Diámetro. Al finalizar estos pasos se debe cargar (load) la familia en nuestro proyecto de Revit.
Paso 2.
Ejecutar Dynamo en Revit, Manage>Dynamo.
Pasar de Automatic a modo Manual en Dynamo. Buscar en “Search” y darle click a los bloques Out of the Box (OOTB) de programación que vamos a utilizar desde Dynamo:
- Range
- Number
- Point.ByCoordinates
- Family Types
- FamilyInstance.ByPoint.
Para introducirlos a los conceptos de Dynamo y sus bloques, hay que tener en cuenta que los bloques de programación de Dynamo realizan una de tres funciones:
- Buscar información
- Ejecutar algún cálculo con los datos suministrados o
- Cambiar el modelo de Revit.
Entonces antes de arrancar con Dynamo y sus bloques de programación es necesario entender los tipos de funciones que ejecutarán los bloques que utilizaremos en este ejercicio ejemplo:
El bloque Family Types busca la familia que acabamos de ingresar a nuestro proyecto. Los bloques de Number ingresan valores numéricos al bloque Range. El bloque Point.ByCoordinates reúne el rango de coordenadas x,y,z en el modelo. y el bloque FamilyInstance.ByPoint modifica el modelo de Revit cuando coloca los rociadores.
El bloque Range tiene tres parámetros: start, end y step. Por default start es 0 (cero), end es 10 (diez) y step es 1 (uno). Le damos clic al punto donde aparece el círculo rojo del bloque que queremos ver, cuando aparezca la lista de valores le damos clic al pin. El resultado es una lista de 10 números entre el 0 y el 9. Por default, el bloque Point.ByCoordinates ubica sus tres parámetros x,y,z en un plano cartesiano, si lo que se le alimenta a sus parámetros son listas de números dicho bloque arrojará también listas de puntos. Su coordenada default es el origen de las coordenadas cartesianas (0,0,0). El bloque Family Instance.ByPoint colocará el FamilyType (nuestro Rociador) en el punto 0 (cero) en la lista de puntos cartesianos que le digamos.
Paso 3.
Conectar los bloques de programación entre sí con sus “wires“, que son las líneas que están entre los bloques. Para usar los “wires” darle click al cuadrado de la derecha del bloque desde donde sale la información y extenderlo hasta la parte izquierda del bloque a donde se lleva la información. En Dynamo, los datos se mueven de izquierda a derecha. Dar click a Run. Nótese los valores que le damos a los parámetros de Range y cómo funciona este bloque de programación. El bloque de Range que ingresa a la coordenada “y” arranca en -9, termina en 18 y sube con step 1, entrega una lista con 28 números. El bloque que ingresa a la coordenada “x” hace lo mismo pero con un rango entre -9 y 10, sube con step 1, y entrega una lista con 20 números. Dichas coordenadas se ven como una secuencia de puntos en la pantalla de Dynamo a la derecha de los bloques.
Point.ByCoordinates empareja las coordenadas x,y de las dos listas provenientes de los dos bloques Range que alimentan sus parámetros x, y, respectivamente: El bloque junta el 9 de la coordenada “x” con el 9 de la coordenada “y“, el 8 de la coordenada “x” con el 8 de la coordenada “y“; y así sucesivamente. Por default el parámetro lacing de Point.ByCoordinates limita el resultado con la lista más corta; es decir la lista de 20 valores que ingresan a su coordenada “x”. La altura o coordenada “z” es un valor constante, 4. Para poder ver el parámetro de lacing hay que dar clic derecho al bloque Point.ByCoordinates.
Paso 4.
Supongamos que en este ejemplo el diseñador realmente quiere tener una malla de rociadores que cubra uniformemente el cielo raso. Para lograr esto vamos a cambiar el lacing del bloque Point.ByCoordinates a Cross Product. Damos click derecho al bloque Point.ByCoordinates y seleccionamos esta opción, luego damos click a Run. Point.ByCoordinates va a combinar cada una de las coordenadas x,y entre sí; el resultado es una listado de 28 x 20 coordenadas, es decir una lista de 560 puntos. El bloque junta el 9 de la coordenada “x” con el 9, 8, 7..18 de la coordenada “y”; luego junta el 8 de la coordenada “x” con el 9,8,7..18 de la coordenada “y” y así sucesivamente. El bloque Point.ByCoordinates tiene el símbolo xxx que significa cross product
Paso 5.
Conectar las coordenadas y el Family Types (rociador) al bloque de FamilyInstance.ByPoint para que Dynamo ubique los rociadores en el proyecto de Revit. Darle click a Run. Nótese que se crean las 560 instancias de rociadores en el proyecto.