Dynamo 2.0 no solo presenta los nodos indicados anteriormente para los diccionarios, sino que también hay nuevas funciones en los bloques de código para ello.
Puede utilizar una sintaxis como la siguiente o representaciones basadas en DesignScript de los nodos.
Dado que un diccionario es un tipo de objeto de Dynamo, podemos realizar las siguientes acciones con él.
Mantener este tipo de interacciones resulta especialmente útil al relacionar datos de Revit con cadenas. A continuación, veremos algunos casos de uso de Revit.
¿Alguna vez ha deseado buscar algo en Revit mediante un segmento de datos incluido en la solución?
Si la respuesta es afirmativa, es probable que haya hecho algo similar a lo que aparece en el ejemplo siguiente.
En la imagen mostrada a continuación, recopilamos todas las habitaciones del modelo de Revit, obtenemos el índice de la habitación que deseamos (por número de habitación) y, por último, obtenemos la habitación en el índice.
Recopile todas las habitaciones del modelo.
Especifique el número de habitación que se va a buscar.
Obtenga el número de habitación y busque el índice en el que se encuentra.
Obtenga la habitación en el índice.
Descargue el archivo de ejemplo. Para ello, haga clic en el vínculo siguiente.
En el Apéndice, se incluye una lista completa de los archivos de ejemplo.
Ahora vamos a recrear esta idea mediante diccionarios. Debemos recopilar primero todas las habitaciones de nuestro modelo de Revit.
Seleccionamos la categoría de Revit con la que deseamos trabajar (en este caso, trabajaremos con habitaciones).
Le indicamos a Dynamo que recopile todos esos elementos.
A continuación, debemos decidir las claves que vamos a utilizar para buscar estos datos. (La información sobre las claves se encuentra en la sección ¿Qué es un diccionario?).
Los datos que usaremos son el número de habitación.
Ahora crearemos el diccionario con las claves y los elementos especificados.
El nodo Dictionary.ByKeysValues creará un diccionario con las entradas correspondientes especificadas.
Keys
debe ser una cadena, mientras quevalues
puede ser diversos tipos de objeto.
Por último, ahora podemos recuperar una habitación del diccionario con su número de habitación.
String
será la clave que utilizaremos para buscar un objeto en el diccionario.Dictionary.ValueAtKey obtendrá ahora el objeto del diccionario.
Con esta misma lógica de diccionario, también podemos crear diccionarios con objetos agrupados. Si deseamos buscar todas las habitaciones en un nivel determinado, podemos modificar el gráfico anterior de la siguiente manera.
En lugar de utilizar el número de habitación como clave, ahora podemos utilizar un valor de parámetro (en este caso, utilizaremos nivel).
Ahora podemos agrupar las habitaciones por el nivel en el que residen.
Con los elementos agrupados por el nivel, ahora podemos utilizar las claves compartidas (claves exclusivas) como nuestra clave para el diccionario y las listas de habitaciones como elementos.
Por último, mediante los niveles del modelo de Revit, podemos buscar en el diccionario las habitaciones que se encuentran en ese nivel.
Dictionary.ValueAtKey
utilizará el nombre de nivel y devolverá los objetos de habitación presentes en ese nivel.
Las oportunidades de uso del diccionario son realmente infinitas. La capacidad de relacionar los datos de BIM de Revit con el propio elemento plantea diversos casos de uso.
Los diccionarios representan una recopilación de datos relacionados con otro elemento de datos conocido como clave. Los diccionarios muestran la capacidad de buscar, suprimir e insertar datos en una colección.
Básicamente, podemos considerar un diccionario como una manera realmente inteligente de buscar algo.
Aunque la función de diccionario lleva disponible en Dynamo durante algún tiempo, Dynamo 2.0 presenta una nueva forma de administrar este tipo de datos.
Dynamo 2.0 introduce el concepto de separación del tipo de datos del diccionario del tipo de datos de lista. Esta novedad puede conllevar algunos cambios importantes en la forma de crear y trabajar con datos en los flujos de trabajo. Antes de la versión 2.0, los diccionarios y las listas se combinaban como un tipo de datos. En resumen, las listas eran en realidad diccionarios con claves de enteros.
Un diccionario es un tipo de datos compuesto por una colección de pares de clave-valor en los que cada clave es exclusiva para cada colección. Un diccionario no tiene orden y, básicamente, se pueden "buscar elementos" mediante una clave en lugar de un valor de índice como en una lista. En Dynamo 2.0, las claves solo pueden ser cadenas.
Una lista es un tipo de datos compuesto por un conjunto de valores ordenados. En Dynamo, las listas utilizan enteros como valores de índice.
La separación de los diccionarios y las listas convierte a los diccionarios en componentes de primera clase que se pueden utilizar para almacenar y buscar valores de forma rápida y sencilla sin necesidad de recordar un valor de índice o mantener una estructura de listas estricta a lo largo del flujo de trabajo. Durante las pruebas realizadas por los usuarios, hemos detectado una reducción considerable del tamaño del gráfico cuando se utilizaron los diccionarios en lugar de varios nodos GetItemAtIndex
.
Se han producido cambios en la sintaxis que modifican el modo en que se inicializarán y se utilizarán los diccionarios y las listas en los bloques de código.
Los diccionarios utilizan la siguiente sintaxis: {key:value}
.
Las listas utilizan la siguiente sintaxis: [value,value,value]
.
Se han introducido nuevos nodos en la biblioteca para ayudarle a crear, modificar y consultar diccionarios.
Las listas creadas con bloques de código v1.x se migrarán automáticamente al cargar la secuencia de comandos a la nueva sintaxis de lista que utiliza corchetes [ ]
en lugar de llaves { }
.
En las ciencias informáticas, los diccionarios, al igual que las listas, son colecciones de objetos. Mientras que las listas se encuentran en un orden específico, los diccionarios son colecciones sin ordenar. No dependen de números secuenciales (índices), sino de claves.
En la imagen siguiente, se muestra un posible caso de uso de un diccionario. A menudo, los diccionarios se utilizan para relacionar dos segmentos de datos que podrían no tener una correlación directa. En este caso, conectamos la versión en español de una palabra a la versión en inglés para su posterior búsqueda.
Cree un diccionario para relacionar los dos datos.
Obtenga el valor con la clave especificada.
Dynamo 2.0 presenta una gran variedad de nodos de diccionario para nuestro uso. Esto incluye los nodos de creación, acción y consulta.
Dictionary.ByKeysValues
creará un diccionario con las claves y los valores proporcionados. (El número de entradas será el de la entrada de lista más corta).
Dictionary.Components
generará los componentes del diccionario de entrada. (Es el proceso inverso al nodo creado).
Dictionary.RemoveKeys
generará un nuevo objeto de diccionario con las claves de entrada eliminadas.
Dictionary.SetValueAtKeys
creará un nuevo diccionario basado en las claves de entrada y los valores para reemplazar el valor actual en las claves correspondientes.
Dictionary.ValueAtKey
devolverá el valor en la clave de entrada.
Dictionary.Count
le indicará cuántos pares de clave-valor hay en el diccionario.
Dictionary.Keys
devolverá las claves almacenadas actualmente en el diccionario.
Dictionary.Values
devolverá los valores almacenados actualmente en el diccionario.
Relacionar de forma general datos con diccionarios es una magnífica alternativa al antiguo método de trabajo con índices y listas.
Imagen original por cortesía de: