[Astuce] Optimisez votre script Dynamo For Revit

Olivier Bayle Olivier Bayle 02/09/2022

5 min de lecture

Vous êtes un utilisateur Dynamo For Revit et vous travaillez sur des scripts très consommateurs en ressources machine, ce billet est fait pour vous !

1- Quelles sont les ressources les plus gourmandes ?

Voici les éléments de Dynamo For Revit gourmands en ressources machine :

Nota : les ressources utilisées dépendent du problème résolu par Dynamo For Revit. Par exemple, un script qui génère de multiples surfaces courbes sera un gros consommateur de tessellation.

2- Astuces pour optimiser vos scripts Dynamo For Revit :

Dans les préférences de « Dynamo For Revit / Paramètres visuels », vous pouvez influencer la vitesse de calcul en réduisant la « Précision du rendu » (plus elle sera faible, plus les calculs seront rapides mais l’affichage dans l’interface sera un peu dégradé).

L’affichage des « bulles d’aperçu » est très consommatrice de ressources machine. Les désactiver à partir des préférences de « Dynamo For Revit / Paramètres visuels » permet de gagner des temps de calcul.

« La mise à l’échelle de la géométrie » dans les préférences de « Dynamo For Revit / Général » n’est pas un paramètre crucial pour l’optimisation des performances de temps de calcul, néanmoins, il permet d’être averti lorsque la plage de travail est incorrectement configurée.

Par exemple, lorsque vous travaillez à l’échelle d’une ville, l’unité à privilégier sera le mètre plutôt que le millimètre.

Tous les éléments affichés en arrière-plan consomment aussi des ressources du moteur graphique, en désactivant les affichages des résultats cela permet aussi de booster les temps de calcul.

L’affichage des libellés vous permet d’avoir plus d’informations sur vos géométries mais demande aussi des ressources au détriment des temps de calcul. En les désactivant, cela permet d’optimiser votre temps surtout si vous en utilisez beaucoup.

Dans l’optimisation de votre script Dynamo For Revit, l’utilisation de l’option « Geler », vous permet d’explorer des parties de votre script Dynamo For Revit sans solliciter l’ensemble des nœuds et donc nécessite moins de ressources machine.

Nota : une fois un nœud gelé, tous les nœuds avals du script seront gelés également et prendront une couleur grise (les fils connecteurs seront représentés en pointillé).

Toujours pour économiser de la mémoire, il est plus judicieux d’afficher tous les éléments en une seule opération plutôt que tous les nœuds affichent successivement leurs opérations. En conséquence, je vous conseille de désactiver l’affichage de tous les nœuds et de créer un Code Block « Preview » comme illustré ci-dessous :

Les opérations booléennes sont très puissantes mais très gourmandes en ressources, voici quelques conseils :

– Si possible, évitez d’utiliser les opérations booléennes car elles sont très consommatrices de ressources (Lapalissade)

– Réalisez d’abord une opération booléenne puis copiez le résultat (plutôt que de faire de multiples opérations booléennes)

– Dans votre script, essayez de construire mathématiquement votre géométrie plutôt de la construire à partir d’opérations booléennes

Nota : Dynamo permet de regrouper des solides qui ne sont pas jointifs (comme le montre l’image ci-dessous) :

L’opération consiste à transformer une géométrie en triangles et celle-ci est très consommatrice en ressources. Notamment, la géométrie des nœuds de Dynamo For Revit utilise la tessellation afin d’obtenir des remontées d’information à chaque étape (activé ou pas, affichage des bulles d’aperçu…). Une solution de contournement est d’utiliser des nœuds « zero touch», c’est-à-dire des nœuds développés en C# ou en Python qui retournent les résultats escomptés comme par exemple l’utilisation du nœuds « BuildingFootPrintSurfaces » (il y en a d’autres) du package appelé « DynaMaps » développé par le Frenchie Mostafa El Ayoubi.

Dans le domaine de l’hébergement de géométries, le logiciel Autodesk Revit est robuste mais l’utilisation API Revit comme la classe XYZ (Autodesk.Revit.DB XYZ) peut donner des résultats plus rapides qu’un développement Dynamo For Revit. De plus, si vous constatez des lenteurs dans les processus de transformations après plusieurs générations, cela peut provenir d’un problème de mémoire. La solution est d’arrêter et redémarrer Revit pour réinitier la mémoire.

En matière de gestion de la mémoire, voici quelques conseils :

– comme évoqué précédemment, le redémarrage de Revit permet de réinitier la mémoire et donc d’éviter certaines lenteurs de processus

– l’utilisation de formulations mathématiques est préférable aux opérations géométriques

– tant que possible éviter d’utiliser des volumes (solids) et des maillages (meshes)

3- Un outil d’optimisation de Dynamo For Revit : TuneUP 1.0.7 :

Pour vous aider dans l’optimisation de votre script Dynamo For Revit, l’équipe de développement Autodesk a développé un package qui s’appelle « TuneUP ». Il permet de connaitre combien de temps prend l’exécution de chaque nœud et bien sûr le temps total de votre script.

Pour l’installer, rendez-vous dans la bibliothèque de package et rechercher « TuneUp » puis installez-le.

Une fois « TuneUP » coché dans le menu « Afficher », il va apparaitre sur la partie droite de l’écran Dynamo For Revit.

En cliquant sur une ligne de TuneUP représentant un nœud du script, vous êtes automatiquement redirigé vers celui-ci dans le script.

Abonnement e-mail