O Dynamo 2.0 expõe uma variedade de nós de dicionário para serem usados. Isso inclui os nós criar, ação e consulta.
Dictionary.ByKeysValues
criará um dicionário com os valores e chaves fornecidos. (O número de entradas será o da lista de entradas mais curta)
Dictionary.Components
produzirá os componentes do dicionário de entrada. (Isso é o inverso do nó criar)
Dictionary.RemoveKeys
produzirá um novo objeto de dicionário com as chaves de entrada removidas.
Dictionary.SetValueAtKeys
produzirá um novo dicionário com base nas chaves de entrada e nos valores para substituir o valor atual nas chaves correspondentes.
Dictionary.ValueAtKey
retornará o valor na chave de entrada.
Dictionary.Count
informará quantos pares de valores-chave estão no dicionário.
Dictionary.Keys
retornará quais chaves estão atualmente armazenadas no dicionário.
Dictionary.Values
retornará quais valores estão armazenados no momento no dicionário.
A relação global de dados com dicionários é uma ótima alternativa ao método antigo de trabalho com índices e listas.
O Dynamo 2.0 não só apresenta os nós anteriormente discutidos dos dicionários, como também existe uma nova funcionalidade nos blocos de código para isso.
É possível usar a sintaxe como indicado abaixo ou as representações com base em DesignScript dos nós.
Como um dicionário é um tipo de objeto no Dynamo, podemos confirmar as seguintes ações sobre ele.
Manter esse tipo de interações é especialmente útil ao relacionar dados do Revit com sequências de caracteres. A seguir, vamos examinar alguns casos de uso do Revit.
Alguma vez você já quis procurar algo no Revit por um dado que ele possui?
É provável que você tenha feito algo como o seguinte exemplo.
Na imagem abaixo, estamos coletando todos os ambientes no modelo do Revit, obtendo o índice do ambiente desejado (por número do ambiente) e, por fim, selecionando o ambiente no índice.
Colete todos os ambientes no modelo.
Número do ambiente a ser localizado.
Obtenha o número do ambiente e encontre em que índice ele se encontra.
Obtenha o ambiente no índice.
Faça o download do arquivo de exemplo clicando no link abaixo.
É possível encontrar uma lista completa de arquivos de exemplo no Apêndice.
Agora, vamos recriar essa ideia usando dicionários. Primeiro, precisamos coletar todos os ambientes em nosso modelo do Revit.
Escolhemos a categoria do Revit com a qual queremos trabalhar (neste caso, estamos trabalhando com ambientes).
Dizemos ao Dynamo para coletar todos esses elementos.
Em seguida, precisamos decidir quais chaves usaremos para examinar esses dados. (Para obter informações sobre as chaves, consulte a seção O que é um dicionário?).
Os dados que usaremos são o número do ambiente.
Agora, criaremos o dicionário com as chaves e os elementos indicados.
O nó Dictionary.ByKeysValues criará um dicionário com as entradas apropriadas.
Keys
precisa ser uma sequência de caracteres, enquantovalues
pode ser uma variedade de tipos de objetos.
Por último, é possível recuperar um ambiente do dicionário com seu número de ambiente atual.
String
será a chave que vamos usar para pesquisar um objeto no dicionário.Dictionary.ValueAtKey obterá o objeto do dicionário.
Usando a mesma lógica de dicionário, também é possível criar dicionários com objetos agrupados. Se quiséssemos examinar todos os ambientes em um determinado nível, poderíamos modificar o gráfico acima, da seguinte forma.
Em vez de usar o número do ambiente como a chave, podemos usar um valor de parâmetro (neste caso, usaremos o nível).
Agora, é possível agrupar os ambientes pelo nível em que residem.
Com os elementos agrupados pelo nível, agora podemos usar as chaves compartilhadas (chaves exclusivas) como a nossa chave para o dicionário e as listas de ambientes como os elementos.
Por fim, usando os níveis no modelo do Revit, podemos procurar quais ambientes residem naquele nível no dicionário.
Dictionary.ValueAtKey
coleta o nome do nível e retorna os objetos do ambiente naquele nível.
As oportunidades de uso do dicionário são realmente infinitas. A capacidade de relacionar seus dados do BIM no Revit com o próprio elemento apresenta uma variedade de casos de uso.
O Dynamo 2.0 apresenta o conceito de separar o tipo de dados de dicionários do tipo de dados de listas. Essa alteração pode representar algumas alterações significativas na forma como você cria e trabalha com os dados em seus fluxos de trabalho. Antes da versão 2.0, os dicionários e as listas eram combinados como um tipo de dados. Em resumo, as listas eram, na verdade, dicionários com chaves de número inteiro.
Um dicionário é um tipo de dados formado por um conjunto de pares de valores-chave onde cada chave é exclusiva em cada conjunto. Um dicionário não tem ordem e, basicamente, é possível “procurar por coisas” usando uma chave em vez de um valor de índice, como em uma lista. No Dynamo 2.0, as chaves somente podem ser sequências de caracteres.
Uma lista é um tipo de dados formado por um conjunto de valores ordenados. No Dynamo, as listas usam números inteiros como valores de índice.
A separação dos dicionários das listas apresenta os dicionários como um elemento de primeira classe que você pode usar para armazenar e pesquisar valores de maneira rápida e fácil, sem precisar lembrar um valor de índice ou manter uma estrutura de lista rigorosa em todo o fluxo de trabalho. Durante o teste dos usuários, vimos uma redução significativa no tamanho do gráfico quando os dicionários eram usados em vez de vários nós GetItemAtIndex
.
Ocorreram alterações na sintaxe que alteram a forma como você inicializará e trabalhará com dicionários e listas em blocos de código.
Os dicionários usam a seguinte sintaxe {key:value}
As listas usam a seguinte sintaxe [value,value,value]
Novos nós foram introduzidos na biblioteca para ajudar a criar, modificar e consultar dicionários.
As listas criadas em blocos de código v1.x migrarão automaticamente durante o carregamento do script com a nova sintaxe de lista que usa colchetes [ ]
em vez de chaves { }
\
Em ciência de computação, os dicionários, como as listas, são conjuntos de objetos. Embora as listas estejam em uma ordem específica, os dicionários são conjuntos não ordenados. Eles não dependem de números sequenciais (índices); em vez disso, usam chaves.
Na imagem abaixo, demonstramos um caso de uso potencial de um dicionário. Muitas vezes, os dicionários são usados para relacionar duas partes dos dados que podem não ter uma correlação direta. No nosso caso, estamos ligando a versão em espanhol de uma palavra à versão em inglês para uma pesquisa posterior.
Crie um dicionário para relacionar as duas partes dos dados.
Obtenha o valor com a chave fornecida.
Os dicionários representam uma coleção de dados relacionados com outros dados conhecidos como chave. Os dicionários expõem a capacidade de procurar, excluir e inserir dados em uma coleção.
Essencialmente, podemos pensar em um dicionário como uma forma realmente inteligente de buscar algo.
Embora a funcionalidade de dicionário já esteja disponível no Dynamo há algum tempo, o Dynamo 2.0 apresenta uma nova forma de gerenciar esse tipo de dados.
Cortesia de imagem original de: sixtysecondrevit.com