Al iniciarse en el software Dynamo, resulta complicado interpretar cómo funciona la estructuración de datos que genera el programa. Por eso, es importante entender cómo funciona, para, a partir de aquí, poder tratar y escoger la información que nos interesa para trabajar con ella.

 

Como vimos en el post anterior, Dynamo es un aplicación que nos permite trabajar tanto en el modelado geométrico en Revit como con la gestión de sus datos.

Estos datos que tenemos en Revit, y que estamos acostumbrados a ver en la barra de propiedades o en una tabla de planificación, en el software Dynamo los vemos de forma distinta.

Normalmente, cuando pedimos datos desde Dynamo a Revit, lo solemos obtener en forma de lista. Si queremos obtener los nombres de todos los muros de nuestro modelo, le pediremos a Dynamo que, de la categoría muros, nos diga todos los elementos que existan y que finalmente nos de los nombres de estos elementos. Estos nombres se agrupan en una lista de datos.

En el caso de que queramos gestionar datos de un modelo existente, partiremos de datos ya generados y que se visualizarán en listas de Dynamo. En cambio, hay otros casos como, por ejemplo, cuando queramos modelar geometría, donde podemos partir de cero. Por tanto, es posible que debamos generar listas de información nuevas.

Para entender los primeros pasos, vamos a comenzar con listas de información cortas. Empezaremos generando una lista nueva de datos ficticios.

Generación de Listas

Imagen 1. Muestra de distintas formas de generar una lista simple. Fuente propia.

Como vemos, podemos generar una lista de letras o de números consecutivos o aleatorios según cómo lo escribamos. Pero hay que destacar que, en este caso, estamos generando una única lista de datos. Y lo vemos porque en la parte inferior nos muestra @L2 @L1.

Ahora vamos a crear una lista con más de una sub-lista.

Imagen 2. Muestra de distintas formas de generar una lista con sub-listas. Fuente propia.

Vemos que, al crear listas que contienen sub-listas, en la parte inferior del resultado ya nos aparece otro elemento más, que nos indica que hay un nivel nuevo en listas desde donde poder leer datos. Ahora vemos @L3 @L2 @L1.

Selección de datos

Desde esta estructuración, ahora podemos coger distintos datos según lo que seleccionemos:

Imagen 3. Cómo coger la primera lista de una lista. Fuente propia.

Con un “GetItemAtIndex” o una inscripción tipo “Nombre[x]”, podemos seleccionar una lista de las sub-listas y vemos como vuelve a convertirse en una única lista de nivel 1 y 2. Pero vamos a fijarnos que con el nodo “GetItemAtIndex”, podemos escoger a qué nivel de estructura queremos entrar a coger la información. Si activamos la opción “utilizar niveles”, podemos coger información distinta:

Imagen 4. Escoger información dependiendo del nivel de lista escogido. Fuente propia.

Partimos de que le estamos pidiendo la lista 0 de todo el conjunto:

  • Si le indicamos nivel 1, vemos que nos da toda la información en una única lista sin estar subdividida.
  • Si le indicamos nivel 2, Dynamo entra en las sub-listas a buscar la información y, por tanto, nos da el índice 0 de cada una de las listas.
  • Si le indicamos nivel de lista 3, vemos que nos da el mismo resultado que sin pedirle por “utilizar niveles”, pero nos genera un nivel de sub-lista más. En este caso, no nos da la lista en sí, sino que está generando una lista con la sub-lista. Poco útil puesto que estamos generando un nivel que no es necesario.

Lo que más vamos a usar es la opción de escoger solo una lista sin activar “Utilizar niveles”, o ir a buscar índices de cada lista, como en el caso de indicarle “nivel 2” si lo que queremos obtener es información de sub-listas.

Imagen 5. Coger más de una lista de otra lista. Fuente propia

En el caso que queramos coger más de una lista, debemos darle una lista a “GetItemAtIndex”.

A partir de aquí, podemos hacer lo que queramos con la información de las listas.

Imagen 6. Ejemplos de selección de datos en listas. Fuente propia.

Imagen 7. Ejemplos de selección de datos en listas. Fuente propia.

Principales acciones que podemos aplicar sobre listas

  • GetItemAtIndex: Seleccionar índices de las listas. Como hemos visto en el ejemplo, nos permite seleccionar índices concretos de las listas.
  • Slice: Cortar la lista dándole un inicio de corte y un fin. Por ejemplo, contamos con una lista de números del 0 al 10 y solo necesitamos los valores del 3 al 6 para trabajar.
  • Chop: Hacer un corte en la lista con el valor de índices que contendrá la primera sub-lista y el resto de índices que queden pertenecerá a una segunda sub-lista.
  • Sort: Para ordenar los valores que tenga la lista si está desordenada.
  • Count: Contabilizar los elementos que contiene una lista.
  • Flatten: Quitar la ordenación de sub-listas. Si hacemos un flatten a una lista que contiene dos sub-listas, nos quedará una única lista con todos los valores.
  • FilterByBoolMask: Nos quedaremos con los elementos de las listas que son “true” o “false”, según lo que le hayamos pedido.
  • GroupByFunction / GroupByKey: Para agrupar la lista según una condición. Por ejemplo agrupar por nombre de Tipo o según alguna palabra clave.

Ejemplo sobre proyecto

Cuando tratamos información que nos viene de un modelo Revit, también es fácil de gestionar. Vamos a poner un ejemplo práctico:

Queremos controlar la información de las habitaciones de nuestro modelo. Necesitamos que estén agrupadas por el nombre de la habitación, que el número de la habitación y el nombre sea un único texto descriptivo y que de cada habitación nos dé su superficie.

  1. Obtener cada elemento de habitación que tenemos del modelo.
  2. GroupByFunction. Con la función “Nombre”. Así se nos estructura su información por su nombre. En este caso tenemos: Aula, Departamento, Lavabo…
  3. Element.GetParameterValueByName. Para obtener los parámetros de “Nombre” “Número” y “Área”.
  4. Crear una combinación de número más nombre con una fórmula simple desde un codeblock: num+”-“+nomb. Obtendremos 161-Aula.
  5. List.Create. Para unir la lista del nombre definitivo más sus áreas.
  6. List.Transpose. Para combinar la primera sub-lista de nombres con la primera sub-lista de áreas.
  7. List.Transpose con @L3 para unir cada habitación con nombre completo con su área correspondiente.

Imagen 8. Ejemplo de cómo tratamos la información de las habitaciones de un modelo. Fuente propia.

De este modo tenemos la información controlada y la podemos tratar o exportar a Excel, por ejemplo.

A partir de aquí, las posibilidades son infinitas, pero la flexibilidad que nos da para tratar la información de nuestro modelo es mucho más amplia que con el propio software de modelado.

Dynamo se ha convertido, actualmente, en una herramienta diaria para la gestión de proyectos. Nos ayuda a agilizar procesos de introducción o gestión de datos en el modelo que son exigidos por normativa o por requerimientos de clientes. Si somos capaces de trabajar la información con Dynamo, reducimos tiempo de trabajo en Revit.

Os animo a que probéis a jugar con la información en Dynamo, veréis que ganareis en versatilidad dentro del proyecto.

En próximos posts, seguiremos explicando cómo seguir tratando la información en Dynamo.

Artículos relacionados

X