samedi 31 décembre 2016

Dessiner des familles sur Revit

A la base je voulais juste dessiner un ensemble de familles appartenant à une catégorie pour pouvoir les contrôler visuellement et vérifier la cohérence des symboles.

Le programme Dynamo que j'ai créé m'a révélé des difficultés que je pense être intéressant de partager.

Liens de téléchargement :

Développé sur Revit 2016/17 - Dynamo 1.2


A partir d'un répertoire contenant des familles, je vais dessiner sur le plan chaque familles types.
Les familles doivent être préalablement chargées dans le plan.

liste des répertoires :
Initialiser l'application en donnant le chemin racine des familles et du fichier excel dans lequel on écrira la liste des familles.
Vue d'ensemble du WorkFlow :



Zone 1 -  On pointe sur le répertoire racine donné dans la zone d'initialisation, et on récupère la liste de tous les fichiers .rfa avec leur chemin d'accès.


Zone 2 -  La zone commence par un bout de programme en Python.
La première image concerne les initialisations....


Dans la deuxième image, je soustrait la chaîne contenant le nom de la famille de la chaîne complète.
Il y a une méthode plus directe en utilisant  l_chemin.split("\"),...


Il faut ensuite convertir la chaîne de caractères récupérée dans le programme Python en Famille type en utilisant le paramètre Nom.

Zone 3 - J'écris dans un fichier Excel les infos que j'ai pu récupérer. Ca peut toujours servir pour une vérification.

Zone 4 : 
C'est là que j'ai été confronté à un vrai problème !
Suivant la catégorie dans laquelle la famille a été créé, il faut (ou pas) un hôte pour pouvoir implanter la famille dans le plan.
Pour les familles qui ne sont pas accrochées à un mur, on peut utiliser le Node "FamilyInstance.Bypoint". 

Pour les familles accrochées à un mur, il faut utiliser le Node créé par Springs : "Springs.HostedInstance.Bypoints". 

J'applique donc le Node Springs.HostedInstance.Bypoints. en premier (zone 4) :



Zone 5 : 
Je filtre les éléments qui ne sont pas pris en compte par la méthode (renvoi nul) dans un bout de programme Python : 


J'applique la méthode FamilyInstance.Bypoint sur le reste des family types. 
Pour l'instant je n'ai pas trouvé de meilleure solution.... 


Zone 6 : Suppression des doublons éventuels



Résultats :
Le fichier excel sera utile pour pouvoir dessiner grace à Dynamo des familles. 


L'affichage de toutes les familles ensemble.






jeudi 29 décembre 2016

Familles : Charger toutes les familles d'un répertoire dans le plan

Cet applicatif permet de charger en une seule fois tout un ensemble de familles dans le plan courant. Les familles déjà chargées ne sont pas rechargées.

Réalisable grâce au Node de Clockwork "Document.LoadFamily"

Liens de téléchargement :

Développé sur Revit 2016/17 - Dynamo 1.2


Pièces Plan MEP vers Excel

Dans cet article, je présente l'applicatif Dynamo qui me permet de récupérer les informations liées aux pièces et aux murs du plan MEP pour les stocker dans un fichier Excel.
Ces données Excel, complétées des données des fiches espaces du programme, me serviront ensuite dans un deuxième applicatif à créer les objets (familles) dans chaque pièces du plan MEP.

Liens de téléchargement :
 - Fichier Dynamo

Développé sur Revit 2016/2017 - Dynamo 1.2.1

A quoi sert l'applicatif Dynamo ? :
A partir du plan MEP dans lequel on a récupéré les pièces du plan Archi, nous créons un fichier Excel dans lequel on retrouvera toutes les informations nécessaires à l'identification des pièces du bâtiment.

Le fichier Excel sera ensuite renseigné et dans chaque pièces du fichier Excel, je déterminerai le nombre d'éléments à dessiner dans la pièce (en fonction de la fiche espace client).

Pour utiliser cet applicatif il faut :
 - Un Plan Revit MEP avec les pièces et leur libellés,

L'applicatif Dynamo :









mardi 27 décembre 2016

Excel vers Revit : Etiquettes de pièces vers Plan Revit MEP

Cet applicatif permet de renseigner les libellés des pièces créées dans le plan Revit MEP avec les libellés du plan Revit Archi qui ont été enregistrés dans un fichier Excel précédemment (Voir article correspondant)

Liens de téléchargement :

Développé sur Revit 2016/17 - Dynamo 1.2

A quoi sert l'application Dynamo ? :
Le développement Dynamo présenté ci-dessous permet de transférer les paramètres des pièces d'un plan Revit ARchi (généralement renseignés par l'Archi sur son modèle Revit) vers le plan MEP sur lequel je dois travailler.

Fond de plan Revit Archi avec le nom des pièces


Plan Revit MEP avant exécution de l'applicatif. Les étiquettes ne sont sélectionnables.



Plan Revit MEP après exécution de l'applicatif. Les étiquettes sont sélectionnables et modifiables dans le plan MEP.




Pour utiliser ce programme, il faut :
 1) Un fond de plan Revit Archi avec les murs et les étiquettes des pièces (Nom, Numéros, ..) lié à Revit (Revit->Insérer->Lier revit).

 2) Un plan Revit MEP avec les pièces créées. Voir l'article sur la création de pièces dans un plan MEP à partir des pièces du plan Revit Archi dans le Sommaire.

Faire apparaître les noms de pièces du plan Archi dans le plan MEP (Revit->VV (ou modification du gabarit de vue)->Lien Revit->Paramètres d'affichage : Par vue liée)

Les pièces du plan Archi sont maintenant visibles. 
Positionner la croix de la pièce de référence sur le texte de l'étiquette du plan Archi.



 3) Le fichier Excel qui a été renseigné avec l'applicatif Dynamo suivant (applicatif Dynamo). Ce fichier contient les infos nécessaires au transfert des étiquettes ( Texte du libellé, position de l'étiquette dans les coordonnées du plan Revit Archi, Coefficient d'échelle). Le coef d'échelle est enregistré avec l'applicatif N°2.


Quelques explications sur le programme :
Le programme est assez grand, je vais donc le décomposer.



Zone 1 : Zone d’initialisation des données avant exécution du programme


Zone 2 : Récupération de la totalité des pièces créées dans le Plan Revit MEP


Zone 3  - On récupère les caractéristiques (id et coordonnées) de la pièce du plan Revit qui à été sélectionnée sur le plan Revit MEP. Cela permet de créer une référence pour relier le plan Revit MEP au plan Revit ARchi.



Zone 4 - Dans cette partie on récupère les infos du fichier Excel et on isole les données de la pièce définie dans la zone 1 (la pièce de référence sur laquelle on à cliqué).
Le node string.contains permet de trouver l'index de la liste qui contient la chaîne de caractère "Nom de pièce" défini dans la zone 1.
Le node List.Slice nous permet de récupérer la sous liste qui concerne uniquement les données de la pièce de référence qui nous intéresse.



Zone 5 :  Les premiers blocs modifient les paramètres de la pièces en pointant sur la pièce de référence dans Revit que l'on a isolé dans la zone 3 de notre programme.
Les deux autres blocs récupèrent les coordonnées de la pièces.



Zone 6 :  Récupération des coordonnées X et Y de toutes les pièces Autocad sur le fichier Excel.
Avec "List.DorpItems" j'enlève les éléments de la colonne A du fichier Excel.
"List.map" permet de traiter le 2eme niveau de la liste sans déstructurer la liste.


Zone 7 : Cette zone récupère le coefficient d'échelle dans le fichier Excel qui a été calculée lors de la création des murs avec l'applicatif N°2.



Zone 8 :  Cette zone de Node permet de convertir les coordonnées des pièces du plan Archi en coordonnées sur le plan MEP. Il suffira ensuite de vérifier dans qu'elles pièces se trouvent les différents points.


Je calcul d'abord le décalage (en X et Y) entre chaque pièces (coordonnées Archi) et la pièce de référence (cliquée).
Yref : Coordonnée Y de la pièce de référence.
Y : liste des coordonnées des pièces Archi (fichier Excel).
Le Node de soustraction calcul les coordonnées de chaque pièces dans le système de coordonnées de Revit.


Zone 9 :  Cette zone de Node permet de retrouver et de classer les pièces du plan MEP en fonction des coordonnées des pièces du plan Archi transformées précédemment en coordonnées MEP.


On va vérifier pour chaque point de coordonnées de pièce Archi s'il se trouve à l'intérieur d'une pièce créé dans MEP. C'est le Node "Room.IsInsideRoom" qui calcul cela. 
Afin de pouvoir traiter tous les cas, il faut que les deux listes soient de même longueur. J'utilise le Node "List.OfRepeatedItem".
Le node "List.FilterByBoolMask" permet de récupérer toutes les pièces de Revit dans l'ordre dans lequel elles ont été trouvées.

Zone 10 :  Cette zone de Node écrit dans les pièces le contenu des 4 premières lignes du fichier Excel.




lundi 26 décembre 2016

Murs et pièces Revit vers Excel

Dans cet article, je présente l'applicatif Dynamo qui me permet de récupérer les informations liées aux pièces et aux murs du plan Archi de référence pour les stocker dans un fichier Excel.
Ces données Excel me serviront ensuite dans un deuxième applicatif à créer les pièces du plan Archi dans mon plan MEP.

Liens de téléchargement :
 - Fichier Dynamo

Développé sur Revit 2016/2017 - Dynamo 1.2.1

A quoi sert l'applicatif Dynamo ? :
A partir d'un plan fournit par l'architecte (appelé Revit Archi dans le reste du document) sur lequel il a créé des pièces et renseigné les libellés de ces pièces, nous créons un fichier Excel dans lequel on retrouvera toutes les informations nécessaires à la création de ces pièces dans le plan MEP que l'on utilisera pour les lots techniques (MEP ELEC ou CVC)

Fond de plan Archi (les murs et les pièces sont sélectionnables) :



Fichier Excel après exécution de l'applicatif Dynamo :


Pour utiliser cet applicatif, il faut :
 - Un plan Revit Archi sur lequel les murs et les pièces sont créés,
 - Le patch de Node Clockwork,
 - Un fichier Excel vierge,

Vue d'ensemble de l'applicatif :




Zone 1 : Zone d'initialisation de l'applicatif


Zone 2 : Zone de Node dans laquelle on récupère les données des pièces du niveau.

Le node "List.FilterByBoolMask" permet de filtrer la liste de pièce et de ne garder que les pièces du niveau choisi.
Le node "List.AddItemToFront" permet d'ajouter en tête de liste un libellé qui apparaîtra dans la colonne A du fichier Excel.


Zone 3 : Zone de Node qui permet de récupérer les coordonnées des murs du niveau.

Le Node "Element.Location" est un Node emprunté au Patch Clockwork. Il permet de récupérer les couples de coordonnées (start et End point).

Je récupère le point de début et le point de fin de chaque mur.


Zone 4 : Zone qui permet de récupérer les coordonnées des lignes séparatives de pièces


Zone 5 :



Zone 6 : Récupération du mur de référence.



Zone 7 : Zone de création de la liste et d'écriture dans le fichier Excel.

Chaque ligne Item du Node List.create correspond à une ligne du fichier Excel.
Chaque niveau aura sa propre feuille de calcul Excel avec l'entrée "sheetName" du Node "Excel.WriteToFile" renseignée avec le nom du niveau choisi en zone 1.