Suite à mon article concernant cet exemple Dynamo et à vos encouragements, j’ai décidé de persévérer et de vous proposer un autre billet sur le sujet.
Celui-ci est orienté vers l’export de données vers le tableur Excel pour faire par exemple des post-traitements.
Voici l’exemple: un fichier contient des murs et nous voulons extraire :
– le type,
– la longueur,
– la surface,
– le volume.
et pour corser le tout avoir un incrément de numéro devant chaque donnée. Voilà le résultat final :
L’exemple pas à pas :
A partir d’un fichier déjà créé qui contient des murs (ou vous pouvez en créer un), ouvrir l’interface Dynamo (maintenant, vous savez faire).
Voici le code final :
1- Sélection des voiles:
Nous allons utiliser la fonction “Select Model Elements”. Notez le “s” à la fin du nom “Elements”, cela signifie que l’on peut sélectionner plusieurs éléments. Lorsque vous cliquez sur le bouton “Select”, vous passez en mode “capture” dans l’interface Revit.
2- Dessiner dans l’interface Dynamo les éléments sélectionnés :
Nous allons utiliser la fonction “Element.Geometry” pour afficher les éléments sélectionnés. Après l’avoir reliée à la fonction précédente, on peut apercevoir dans l’interface Dynamo les éléments sélectionnés.
Note : si vous n’êtes pas en mode automatique “Exécuter” cliquez sur le bouton “Exécuter”.
3- Connaitre les informations contenues dans les éléments :
Pour connaitre les paramètres stockés dans les éléments, nous allons utiliser la fonction “Element.Parameters”. Après l’avoir reliée à la fonction précédente, on peut apercevoir les différentes variables ainsi que leurs valeurs associées.
Note : lorsque plusieurs éléments sont sélectionnés, les valeurs sont classées par groupe de “List” (une “[x] List” = un élément).
4- Récupération des informations contenues dans les éléments :
Maintenant que nous connaissons le nom des variables stockées par les éléments, nous allons pouvoir récupérer leurs valeurs à l’aide de la fonction “Element.GetParameterValueByName”. Cette fonction a besoin de connaitre le nom de la variable à chercher. Par exemple, nous allons récupérer le nom des éléments sélectionnés. Créer une variable de type “String” pour laquelle vous lui attribuez la valeur “ID de type”.
Attention : respecter les majuscules et l’orthographe….
Comme vous pouvez le voir ci-dessous : une fois connecté à la fonction “Select Model Elements”, nous récupérons les noms de deux éléments.
Réaliser la même opération avec les variables :
– “Longueur”,
– “Surface”,
– “Volume”.
5- Connaitre le nombre d’éléments sélectionnés et réaliser une liste d’incrémentation :
Le but de ce chapitre est de connaitre le nombre d’éléments sélectionnés pour numéroter chaque élément.
Nous allons utiliser la fonction “List.Count” qui permet comme son nom l’indique de connaitre le nombre d’éléments sélectionnés après l’avoir connectée à la fonction “Select Model Elements”.
Pour créer une liste de chiffres d’incrémentation nous allons utiliser un “code block”.
Celui-ci permet de réaliser des opérations très complexes néanmoins il faut respecter la syntaxe. Dans notre cas pour réaliser une liste de chiffres dont :
– la limite inférieure est 1,
– la limite supérieure est le nombre d’éléments sélectionnés,
Voici la syntaxe: “1..x;” puis connectez la fonction.
Ici, vous trouvez plus d’informations sur la fonction “Code block”.
6- Ajout du nom de la variable en début de liste :
Afin d’exporter les valeurs vers le tableur Excel, nous allons rajouter le nom de la variable pour chaque liste de variables. Nous allons utiliser la fonction “List.AddItemToFront” qui permet d’ajouter en entête des listes une variable supplémentaire.
Dans le cas de la liste de chiffres d’incrémentation, créez une variable de type “String” dans laquelle, vous lui attribuer par exemple la valeur “Num”.
Résultat une fois reliée à la fonction “Code block” précédemment créée.
Procéder de la même façon pour les autres variables extraites :
– “Longueur”,
– “Surface”,
– “Volume”.
Note : vous pouvez faire l’économie de créer des “Strings” supplémentaires en réutilisant les “Strings” déjà créés.
7- Fusion des diverses listes :
Nous allons consolider les différentes listes créées en une seule en utilisant la fonction “List.Create” composé de 5 index.
Résultat après avoir connecté les différentes listes :
8 – Organisation de la liste unifiée :
Afin de faciliter l’export vers le tableur Excel, nous allons réorganiser la liste de façon à agréger chaque sous-liste en ligne Excel. Difficile à expliquer mais l’image ci-dessous est assez explicite.
Nous allons utiliser la fonction “List.Transpose” qui permet d’effectuer cette opération :
9- Export vers le tableur Excel :
Enfin nous touchons au but !
Nous allons utiliser la fonction “Excel.WriteToFile” qui est composée de six entrées :
– “filePath”: le chemin où se trouve le fichier Excel,
– “sheetName”: nom de l’onglet,
– “startRow”: numéro de départ de la première ligne,
– “startCol”: numéro de départ de la première colonne,
– “data”: données à afficher,
– “overWrite”: à chaque export les données précédentes peuvent être écrasées. Il s’agit d’une booléen qui par défaut égale à “vrai”.
Pour indiquer le chemin où se trouve le fichier Excel, nous allons utiliser la fonction “File Path”. Ensuite, indiquez en cliquant sur le bouton “Parcourir” le répertoire où le fichier Excel doit être sauvegardé (pas besoin d’avoir créé un fichier Excel, Dynamo le fera pour nous).
Pour le nom de l’onglet, créeé un “String” avec la valeur que vous voulez, par exemple “VillageBIM”.
Pour les numéros de départ des lignes et des colonnes, créeé un “Number” avec une valeur de “0”.
Concernant la variable “overWrite” , vous pouvez créer un “Boolean” avec une valeur “False” dans le cas où vous utilisez un modèle Excel que vous avez préformaté (évite de l’écraser).
Voici la connexion :
Maintenant, vous pouvez cliquer sur le bouton “Exécuter”.
Résultat final: si tout c’est bien passé, Excel doit s'ouvrir vous affichant les diverses données.
Je vous mets à disposition mon code Dynamo ici, vous pouvez l’améliorer si vous voulez….
Attention : j’ai mis le code en mode “Manuel”, car il faudra que vous donniez une localisation pour votre fichier Excel.