Listes de listes
Dernière mise à jour
Cet article vous a-t-il été utile ?
Dernière mise à jour
Cet article vous a-t-il été utile ?
En combinant des listes, il est possible de créer des listes de listes. Dynamo traite les listes comme des objets.
Téléchargez le fichier d'exemple joint: Top-Down-Hierarchy.dyn
Le nœud Flatten permet de supprimer tous les niveaux de données d'une structure de données. Il est utile lorsque les hiérarchies de données ne sont pas nécessaires à votre opération.
Téléchargez le fichier d'exemple joint : Flatten.dyn.
Il est aussi possible d’aplanir les sous-listes selon un certain niveaux de sous-listes avec le bloc List.Flatten.
Avec le bloc List.Chop, vous pouvez diviser une liste en sous-listes.
Téléchargez le fichier d'exemple joint : Chop.dyn
Téléchargez le fichier d'exemple joint : Map.dyn
1- Le programme décrit ici une série de points paramétrables en x et y selon 2 variables de nombres de points Nx et Ny.
2- Ajoutez le bloc List.Count, il renvoi le nombre de listes au premier niveau de l'arborescence.
Notez que le bloc List.Count donne une valeur de 5. Ceci est égal à la variable "Nx" telle que définie dans le code block. La liste de niveau 1 comprend 5 items et les listes de niveau 2 comprennent 3 items.
Vous pouvez utiliser le bloc List.Map pour compter comme précédemment le nombre d'items du premier niveau. En effet, si la fonction de List.Map est List.Count alors nous demandons à compter les items.
Le bloc List.Combine permet de combiner des listes comme dans Combine.dyn.
Le bloc Line.ByStartPointEndPoint permet de créer des lignes. La seconde partie est une génération de point sans création de ligne.
Curve.Pointatparameter ne fonctionnera pas en connectant les lignes directement aux valeurs des paramètres car le paramètre attendu au port param est un valeur unique (double). Nous pouvons en revanche utiliser le bloc List.Combine.
Ajoutez un bloc List.Combine à la toile. Sachant que la combinaison est le bloc List.Combine, il n'y a besoin que de 2 ports d'entrée supplémentaire. Il faut s'assurer que le paramètre param à la valeur par défaut désactivé car l'entrée sera multiple.
Les ports se connectent dans l'ordre c'est-à-dire que curve correspond à list1 et param correspond à list2.
La fonction List@level vous permet de sélectionner directement le niveau de liste avec lequel vous voulez travailler. Cette fonction peut être appliquée à n’importe qu'elle entrée d’un bloc de list comme dans List@Level.
1- Nous commencerons par une simple grille 3D de points.
2- Puisque la grille est construite avec une plage pour X, Y et Z, nous savons que les données sont structurées avec 3 niveaux : une liste X, une liste Y et une liste Z.
3- Ces niveaux d'arborescence sont visible en bas de l'aperçu et dans le déroulé de la liste
4- Les niveaux de liste sont organisés dans l’ordre inverse de sorte que les données du niveau le plus bas soient toujours dans « L1 »
Pour piloter les niveaux de listes, cliquez sur '>'. Dans ce menu, vous verrez 2 cases à cocher.
1- Utiliser les niveaux
2- Conserver la structure de la liste permet de figer la structure
Transpose est une fonction fondamentale dans le traitement des listes comme dans Transpose.dyn. Cela fonctionne comme dans Excel.
Nous avons vu précédemment qu'il est possible de tracer des lignes a partir de points.
Il serait possible de travailler sur seulement une ligne.
Si on applique le bloc List.Transpose avant PolyCurve.ByPoints, nous réalisons un quadrillage.
Tout ce que nous avons vu précédemment peut s'écrire sous forme de Code Block. L'écriture "[]" définie une liste
Il est donc possible de créer des listes et de les interroger.