Dynamo 2.0 introduit non seulement les nœuds précédemment abordés dans les dictionnaires, mais aussi les blocs de code.
Vous pouvez utiliser une syntaxe semblable à celle présentée ci-dessous ou des représentations de nœuds basées sur DesignScript.
Étant donné qu’un dictionnaire est un type d’objet dans Dynamo, nous pouvons lui appliquer les actions suivantes.
La gestion de ce type d’interactions est particulièrement utile lorsque vous associez des données Revit à des chaînes. Nous allons maintenant examiner certains cas d'utilisation de Revit.
Dynamo 2.0 introduit le concept de séparation du type de données de dictionnaire du type de données de liste. Ce changement peut entraîner des modifications importantes de la façon dont vous créez et utilisez les données dans vos workflows. Avant la version 2.0, les dictionnaires et les listes étaient combinés en tant que type de données. En résumé, les listes étaient en fait des dictionnaires avec des clés d’entier.
Un dictionnaire est un type de données composé d’un ensemble de paires clé-valeur, où chaque clé est unique dans chaque ensemble. Un dictionnaire n’a pas d’ordre et vous pouvez, en fait, rechercher des éléments à l’aide d’une clé au lieu d’une valeur d’index, comme dans une liste. Dans Dynamo 2.0, les clés peuvent uniquement être des chaînes.
Une liste est un type de données composé d’un ensemble de valeurs ordonnées. Dans Dynamo, les listes utilisent des entiers comme valeurs d’index.
La séparation des dictionnaires et des listes place les dictionnaires comme citoyens de première classe que vous pouvez utiliser pour stocker et rechercher rapidement et facilement des valeurs, sans avoir à mémoriser une valeur d’index ou à maintenir une structure de listes stricte tout au long de votre workflow. Lors des tests utilisateur, nous avons constaté une réduction significative de la taille du graphique lorsque les dictionnaires étaient utilisés à la place de plusieurs nœuds GetItemAtIndex
.
Des modifications de syntaxe ont été apportées. Elles changent la façon dont vous allez initialiser et utiliser les dictionnaires et les listes dans les blocs de code.
Les dictionnaires utilisent la syntaxe suivante : {key:value}
Les listes utilisent la syntaxe suivante : [value,value,value]
De nouveaux nœuds ont été introduits dans la bibliothèque pour vous aider à créer et à modifier les dictionnaires, ainsi qu’à leur envoyer des requêtes.
Les listes créées dans les nœuds Code Block v1.x seront automatiquement migrées au chargement du script vers la nouvelle syntaxe de liste qui utilise des crochets [ ]
au lieu des accolades { }
\
En informatique, les dictionnaires, comme les listes, sont des collections d’objets. Tandis que les listes suivent un ordre spécifique, les dictionnaires sont des ensembles non ordonnés. Ils ne dépendent pas des numéros séquentiels (index), mais utilisent des clés.
Dans l’image ci-dessous, nous présentons un cas d’utilisation potentiel d’un dictionnaire. Souvent, les dictionnaires servent à relier deux types de données qui ne possèdent pas de corrélation directe. Dans notre cas, nous connectons la version espagnole d’un mot à la version anglaise pour une recherche ultérieure.
Créez un dictionnaire pour relier les deux types de données.
Obtenez la valeur avec la clé donnée.
Les dictionnaires représentent un ensemble de données liées à un autre élément de données appelé clé. Les dictionnaires permettent de rechercher, de supprimer et d'insérer des données dans une collection.
En fait, nous pouvons considérer un dictionnaire comme une manière vraiment intelligente de rechercher quelque chose.
Bien que la fonctionnalité de dictionnaire soit disponible dans Dynamo depuis un certain temps déjà, Dynamo 2.0 propose une nouvelle méthode de gestion de ce type de données.
Image originale avec l’autorisation de : sixtysecondrevit.com
Dynamo 2.0 présente une variété de nœuds de dictionnaire à notre disposition. Cela inclut les nœuds create, action et query.
1.Dictionary.ByKeysValues
crée un dictionnaire avec les valeurs et les clés fournies. (Le nombre d’entrées correspond à la liste d’entrées la plus courte possible)
Dictionary.Components
produit les composants du dictionnaire d’entrée. (Il s’agit de l’inverse du nœud create.)
Dictionary.RemoveKeys
crée un objet de dictionnaire dont les clés d’entrée ont été supprimées.
Dictionary.SetValueAtKeys
crée un dictionnaire basé sur les clés d’entrée et les valeurs pour remplacer la valeur en cours au niveau des clés correspondantes.
Dictionary.ValueAtKey
renvoie la valeur à la clé d’entrée.
Dictionary.Count
vous indique le nombre de paires clés-valeurs dans le dictionnaire.
Dictionary.Keys
renvoie les clés actuellement stockées dans le dictionnaire.
Dictionary.Values
renvoie les valeurs actuellement stockées dans le dictionnaire.
Le fait de pouvoir lier les données de manière globale avec les dictionnaires constitue une excellente solution de remplacement, par rapport à la méthode de travail classique avec les index et les listes.
Avez-vous déjà voulu rechercher quelque chose dans Revit à partir d'un élément de données qu'il contient ?
Il y a des chances si vous avez procédé comme dans l’exemple suivant.
Dans l’image ci-dessous, vous allez rassembler toutes les pièces dans le modèle Revit, obtenir l’index de la pièce souhaitée (par numéro de pièce), puis sélectionner la pièce au niveau de l’index.
Rassemblez toutes les pièces du modèle.
Numéro de pièce à rechercher.
Obtenez le numéro de chambre et trouvez l’index correspondant.
Obtenez la pièce au niveau de l’index.
Téléchargez le fichier d’exemple en cliquant sur le lien ci-dessous.
Vous trouverez la liste complète des fichiers d'exemple dans l'annexe.
Recréez maintenant cette idée à l'aide de dictionnaires. Vous devez d’abord rassembler toutes les pièces dans votre modèle Revit.
Choisissez la catégorie Revit avec laquelle vous voulez travailler (dans le cas présent, vous travaillez avec des pièces).
Vous indiquez à Dynamo de collecter tous ces éléments.
Ensuite, vous devez décider des clés que vous allez utiliser pour rechercher ces données. (Pour plus d’informations sur les clés, consultez la section Qu’est-ce qu’un dictionnaire ?).
Les données que vous utilisez sont les numéros de pièce.
Vous allez maintenant créer le dictionnaire avec les clés et les éléments donnés.
Le nœud Dictionary.ByKeysValues crée un dictionnaire en fonction des entrées appropriées.
Keys
doit être une chaîne, tandis quevalues
peut être une variété de types d’objets.
Enfin, vous pouvez extraire une pièce du dictionnaire avec son numéro de pièce.
String
est la clé que vous utilisez pour rechercher un objet dans le dictionnaire.Désormais, Dictionary.ValueAtKey obtiendra l’objet à partir du dictionnaire.
Cette logique de dictionnaire permet également de créer des dictionnaires contenant des objets groupés. Si vous voulez rechercher toutes les pièces à un niveau donné, vous pouvez modifier le graphique ci-dessus comme suit.
Au lieu d’utiliser le numéro de pièce comme clé, vous pouvez maintenant utiliser une valeur de paramètre (dans le cas présent, vous allez utiliser le niveau).
Maintenant, vous pouvez regrouper les pièces selon le niveau sur lequel elles résident.
Avec les éléments regroupés par niveau, vous pouvez désormais utiliser les clés partagées (clés uniques) comme clés de votre dictionnaire, ainsi que les listes de pièces comme éléments.
Enfin, en utilisant les niveaux du modèle Revit, vous pouvez rechercher les pièces qui résident sur ce niveau dans le dictionnaire.
Dictionary.ValueAtKey
prend le nom du niveau et renvoie les objets de pièce à ce niveau.
Les possibilités d’utilisation du dictionnaire sont infinies. La possibilité de lier vos données BIM dans Revit à l'élément lui-même offre une variété de cas d'utilisation.