dimanche 1 novembre 2020

Revit 2021_Dynamo_Renumérotation des pièces et autres places de parking

Objectif : Avec un script Dynamo, faciliter la renumérotation des pièces et autres places de parking 

Avant tout je dois remercier Pascal Camliti / Architecte-Formateur Revit pour ses tutoriels sur Revit et le BIM
Dernièrement j'ai été intéressé par le fait qu'il soit possible de renommer des places de parking ou des pièces à partir d'une spline Revit et d'un script Dynamo
Pour le script Dynamo, j'ai voulu tester par moi-même et j'ai particulièrement retenu le script de Belinda Carr, c'est un script simple, sans package
Merci à eux.
Il y a d'autres sources instructives:

_Dynamo || Practice 01 || Automation - Numbering Rooms by Line Direction > DynaMorphine


Méthode :
_Dans Revit les places de parking ou les pièces sont étiquetés
_Tracer une spline qui coupe les pièces à renuméroter (le 1er point de la spline correspond au début de la liste de pièces que l'on souhaite obtenir)
_Dans Dynamo on écrit 4 scripts : 
_Paramétrer la spline, 
_Lister les pièces, 
_Identifier les intersections entre les pièces et la spline
_Synthèse et renommage des pièces

00_Revit_Dynamo Player
Le renommage des pièces est facilité par le Dynamo Player

01_Revit
Projet avec pièces étiquetées

02_Revit
Tracer une spline coupant les différentes pièces à renommer
_Ligne de modèle...

03_Revit
Tracer une spline coupant les différentes pièces à renommer
_Ligne de modèle
_Spline...

04_Revit
Tracer une spline coupant les différentes pièces à renommer
_Spline
Le début de la spline correspond à la pièce qui sera le début de la liste de pièces
(Pour commencer, j'ai volontairement exclu la pièce n°8, voir point 18)

05_Revit
Ouvrir  Dynamo
_Gérer > Dynamo...

06_Revit_Dynamo
Script des pièces...
(il faut faire une liste des pièces)
(Dans son Script Belinda Carr utilise le nœud Geometry.BoundingBox, dans mon cas cela ne fonctionnait pas, mais cela fonctionne avec Element.BoundingBox)

07_Dynamo
Script des pièces
_Categories > Pièces (Toute les pièces sont listées) > Watch
_Element.BoundingBox > identifie les limites des pièces

08_Revit_Dynamo
Script de la spline
_Select Model Element > Sélectionner la spline dans Revit

09_Revit_Dynamo
Script de la spline

10_Dynamo
Script de la spline
_Number Slider > Ce nœud sert à paramétrer un nombre de point le long de la spline...
(Voir point 15 et suivants)

11_Dynamo
Script des points dans les pièces 
(Identification des intersections entre les pièces et la spline, à l'aide des points)

12_Dynamo
Script des points dans les pièces
Ce script fait la synthèse entre les données des pièces et de la spline
(Dans ce cas il n'y a que 6 pièces référencées...)

13_Dynamo
Script renumérotation des pièces
_Number > Start: N° de départ de la liste
_Number > Step: Incrément de la numérotation

14_Dynamo
Aperçu global des 4 scripts

15_Revit_Dynamo
(Réponse au point 10)
La pièce n° 3 n'a pas été prise en compte par Dynamo pour la numérotation,
Cela est du à la valeur trop faible du Number Slider > ici 20

16_Revit_Dynamo
(Réponse au point 10)
La pièce n°3 n'a pas été prise en compte par Dynamo pour la numérotation,
Cela est du à la valeur trop faible du Number Slider > ici 20
(il n'y a pas assez de points dans la dernière pièce)

17_Revit_Dynamo
(Réponse au point 10)
L'ex pièce n°3 est bien prise en compte par Dynamo pour la numérotation,
La valeur du Number Slider est de 25
(La pièce n° 8 n'est pas prise en compte car elle n'est pas coupée par la spline) 

18_Revit_Dynamo
En modifiant la spline l'ex pièce n° 8 est intégrée à la numérotation Dynamo

19_Revit_Dynamo
En modifiant la spline on peut également changer l'ordre des pièces

20_Revit_Dynamo
Script de renumérotation des pièces
_Number > Start : Permet de changer le premier n° de la liste

21_Revit_Dynamo
Préparation pour Dynamo Player
(Dynamo Player permet d'activer un script sans ouvrir Dynamo)
_Enregistrement du fichier Dynamo pour l'utiliser dans Dynamo Player

22_Revit_Dynamo Player
(Dynamo Player permet d'activer un script sans ouvrir Dynamo)
Lorsqu'on utilise Dynamo Player, Dynamo doit être fermé

23_Revit_Dynamo Player
Exécution du script depuis Dynamo Player

24_Revit_Dynamo
Paramétrage des données Dynamo pour l'utilisation dans Dynamo Player
_Sélectionner les données à inclure > Est une entrée

25_Revit_Dynamo
Paramétrage des données Dynamo pour utilisation dans Dynamo Player
_Sélectionner les données à inclure > Est une entrée

26_Revit_Dynamo Player
Exécution du script avec Dynamo Player

27_Revit_Dynamo Player
Exécution du script avec Dynamo Player



3 commentaires:

David TESSON a dit…

Bonjour,
L'utilisation d'une BoundingBox ne me semble pas judicieux. c'est rapide pour trouver les points d'interférence mais ça va donner des résultats faux dans beaucoup de cas.
En effet comme son nom l'indique BoundingBox est une boite qui englobe la totalité de la géométrie.
- Une pièce en "L" aura une BoundingBox qui comprendra également le vide du "L"
- Une pièce rectangulaire mais avec un angle (cas d'un batiment en "V" ou autre) aura une BoundingBox bien plus grande.
- Une pièce en "trapèze" (on a pas toujours des limites de propriétés droites !) aura une BoundingBox qui comprendra le vide du trapèze.
Du coup le chemin peut très bien ne pas couper la pièce mais couper la BoundingBox.
On voit très souvent cette méthode dans des tuto de numérotation d'objet mais toujours avec des exemples tracés au cordeau, avec des objets bien droit et bien alignés. C'est dommage.
David

Revit-Mémo a dit…

Bonjour,
Si vous avez mieux et aussi simple / rapide d'utilisation, je suis preneur
Christian

David TESSON a dit…

J'ai écris un script pour la numérotation des places de parking qui est similaire sur le principe.
J'utilise une spline pour la sélection des places.
Mais pour savoir si il y intersection, je traite l'objet "place", ou "pièce" pour vous, de façons à obtenir les lignes qui la dessine. je teste ainsi l'intersection entre la spline et les lignes. Je suis ainsi sûr que si il y a intersection, l'objet "place" est coupé.
Le script est beaucoup plus long à cause du traitement pour obtenir les lignes, mais il est plus fiable.
J'ai également poussé le vis à décomposer la spline en X segments et je teste l'intersection de chaque segments avec toutes les lignes des "places". ca permet d'être sûr de l'ordre des places car j'ai eu des surprises !
Cordialement David