Je débute avec l’API Revit et je cherche à récupérer des paramètres spécifiques (comme le niveau ou les performances acoustiques/thermiques) d’éléments, par exemple des fenêtres, présents dans une maquette liée. Mon objectif est de pouvoir les retranscrire automatiquement sur les éléments correspondants de ma maquette principale.
Pour récupérer et copier des paramètres d’éléments entre une maquette hôte et une maquette liée via l’API Revit, la stratégie principale consiste à identifier les paires d’éléments correspondants, souvent en utilisant leur position spatiale. Cette approche, suggérée par Cyril Poupin, est applicable en Python et facilement transposable en C#.
Voici les étapes clés pour y parvenir :
- Géoréférencement: Assurez-vous impérativement que la maquette liée et la maquette hôte partagent le même géoréférencement pour garantir une correspondance spatiale précise des éléments.
- Filtrage des éléments liés: Utilisez un
FilteredElementCollectorpour récupérer les éléments cibles (par exemple, les fenêtres) de la maquette liée. - Obtention des boîtes englobantes: Pour chaque élément récupéré de la maquette liée, obtenez sa BoundingBoxXYZ (boîte englobante).
- Correspondance spatiale des éléments hôtes: Appliquez un
BoundingBoxIsInsideFilterou unBoundingBoxIntersectsFiltersur les éléments de la maquette hôte pour trouver ceux dont la boîte englobante est contenue dans ou intersecte celle de l’élément lié. Cela permet d’établir des paires(élément_lié, élément_hôte). - Copie des valeurs de paramètres: Une fois les paires d’éléments établies, itérez sur ces paires. Pour chaque paramètre souhaité (ex: « Niveau », « Perf_Accoustique(dB) », « Perf_Thermique(W/m².K) »), lisez sa valeur depuis l’élément lié et écrivez-la sur l’élément hôte correspondant.
- Gestion des transactions: N’oubliez pas d’encapsuler toutes les modifications (écriture des paramètres) dans une transaction Revit API pour garantir l’intégrité du modèle et permettre l’annulation si nécessaire.