Cette page vous présente quelques règles empiriques pour travailler efficacement avec des jeux de données volumineux dans Dynamo. Vous devriez pouvoir utiliser les conseils pour identifier les goulots d’étranglement dans vos graphes, afin qu’ils s’exécutent en quelques minutes, plutôt qu’en plusieurs heures.
Sommaire :
Génération de géométrie et maillage par approximation
Utilisation de la mémoire
API Revit
Dans Dynamo, la création d’un morceau de géométrie et l’élaboration de son dessin sont deux événements complètement différents. En général, la création d’une géométrie est beaucoup plus rapide et consomme moins de mémoire que l’élaboration du dessin de l’objet. Vous pouvez considérer la géométrie comme une liste de mesures pour fabriquer un costume, tandis que le maillage par approximation représente le costume en lui-même. Vous pouvez en dire beaucoup sur le costume d’après ses mesures : la longueur des bras, son prix, etc. mais vous devez presque toujours aller voir et essayer le costume fini pour vérifier s’il vous va bien. De même, avec une géométrie sans maillage par approximation, vous pouvez déterminer sa zone de délimitation, son aire et son volume, l’intersecter avec d’autres géométries et l’exporter au format SAT ou Revit. Cependant, vous devez presque toujours mettre la géométrie en maillage par approximation pour savoir si elle est correcte ou non.
Si votre graphe Dynamo contient de nombreux objets et qu’il ralentit pendant son exécution, vous pourrez peut-être supprimer les étapes de maillage par approximation de votre graphe pour accélérer le processus.
Les nœuds de géométrie dans Dynamo sont toujours mis en maillage par approximation*. De cette façon, deux possibilités s’offrent à vous pour travailler avec une géométrie sans maillage : les nœuds Python et les nœuds ZeroTouch. Tant que vous ne renvoyez pas d’objet géométrique à partir de votre nœud Python ou ZeroTouch, la géométrie ne sera pas mise en maillage par approximation. Par exemple, si votre graphe comporte plusieurs nœuds de point, connectés à plusieurs nœuds de ligne, connectés à plusieurs nœuds de lissage, connectés à plusieurs nœuds d’épaississement, la géométrie sera mise en maillage par approximation à chaque étape. Au lieu de cela, vous pouvez regrouper cette logique dans un nœud Python ou ZeroTouch et renvoyer uniquement l’objet final à partir du nœud.
Vous trouverez plus d’informations sur l’utilisation des nœuds ZeroTouch dans la section Développement pour Dynamo de ce guide.
Si vous ne mettez plus de géométrie en maillage par approximation, vous risquez d’aboutir à un goulot d’étranglement dans la mémoire en raison d’une accumulation excessive de géométrie. Dans Dynamo, les objets géométriques consomment une quantité mineure, mais non négligeable, de mémoire lors de leur création. Si vous travaillez avec des centaines de milliers ou des millions d’objets, cette consommation peut s’accumuler et provoquer le blocage de Dynamo ou de Revit. Dans les versions 2.5 et ultérieures de Dynamo, ce phénomène est géré implicitement en supprimant les objets inutilisés, mais si vous utilisez une version antérieure à la version 2.5, pour éviter de créer trop de géométrie, il est possible de supprimer les objets lorsque vous avez terminé de les utiliser. Par exemple, supposons que vous créiez des centaines de milliers de courbes NURBS, nécessitant chacune des dizaines de points. Pour les créer, vous pouvez notamment utiliser une liste en 2 dimensions dans Dynamo et l’introduire dans un nœud NurbsCurve.ByPoints. Mais pour cela, vous devez créer des millions de points. Autrement, vous pouvez aussi utiliser un nœud Python ou ZeroTouch. Dans ce nœud, vous pouvez créer une douzaine de points, les introduire dans NurbsCurve.ByPoints, puis les éliminer avec l’appel de méthode .Dispose(). Vous trouverez plus d’informations sur l’utilisation des nœuds ZeroTouch dans la section Développement pour Dynamo de ce guide. L’élimination de vos objets de géométrie après leur création peut réduire considérablement la quantité de mémoire que vous utilisez dans certaines circonstances et, bien que nous proposions cette option aux utilisateurs de Dynamo 2.5 et versions ultérieures, nous recommandons à l’utilisateur de continuer à éliminer la géométrie explicitement, si le cas d’utilisation nécessite de réduire la mémoire à un moment donné. Reportez-vous à la rubrique Améliorations apportées à la stabilité de la géométrie Dynamo pour en savoir plus sur les nouvelles fonctions de stabilité introduites dans Dynamo 2.5.
Si vous supprimez de manière agressive des objets dans un nœud ZeroTouch ou Python et que vous rencontrez toujours des problèmes de mémoire ou de performances, il peut être nécessaire de contourner complètement Dynamo et de créer des objets Revit directement via l’API. Par exemple, vous pouvez analyser un fichier Excel à la recherche d’informations sur des points, que vous utilisez ensuite pour créer des fichiers XYZ et d’autres éléments Revit par le biais de leur API. À ce stade, Revit deviendra le goulot d’étranglement ultime, ce qui ne peut être évité.