Je débute sur Revit API et je souhaite savoir s’il est possible de récupérer les paramètres d’éléments (comme des fenêtres) d’une maquette liée (par exemple, une maquette architecte) pour les retranscrire automatiquement sur mes propres éléments dans ma maquette courante.
Pour récupérer et copier des paramètres d’éléments entre une maquette liée et la maquette hôte via l’API Revit, l’approche consiste à identifier les éléments correspondants dans les deux maquettes, puis à transférer les valeurs de leurs paramètres. Voici la démarche principale, facilement transposable du Python au C# :
- Accéder aux maquettes et éléments :
- Obtenez le
RevitLinkInstancede la maquette liée. Cela vous permet d’interagir avec les éléments qu’elle contient. - Utilisez un
FilteredElementCollectorpour cibler les catégories d’éléments spécifiques (ex:BuiltInCategory.OST_Windowspour les fenêtres) à la fois dans la maquette liée et dans la maquette hôte.
- Obtenez le
- Géoréférencement :
- Il est crucial que les deux maquettes (liée et hôte) partagent le même géoréférencement pour que les comparaisons spatiales soient pertinentes et précises.
- Identification spatiale des correspondances :
- Pour chaque élément de la maquette liée (ex: une fenêtre), récupérez sa
BoundingBoxXYZ(boîte englobante). Cette boîte définit l’étendue spatiale de l’élément. - Utilisez un filtre spatial de l’API Revit, tel que
BoundingBoxIsInsideFilterouBoundingBoxIntersectsFilter, appliqué sur la maquette hôte. Ce filtre permet de trouver les éléments hôtes dont la boîte englobante est contenue dans ou intersecte celle de l’élément lié. Cela est la méthode clé pour établir des paires(element_lie, element_hote)de manière automatique.
- Pour chaque élément de la maquette liée (ex: une fenêtre), récupérez sa
- Copie des paramètres :
- Une fois les paires d’éléments correspondants établies, itérez sur les paramètres que vous souhaitez transférer (ex: « Niveau », « Perf_Accoustique(dB) »).
- Récupérez la valeur du paramètre de l’élément lié via
element_lie.LookupParameter("NomParametre").AsValue()ou la méthode appropriée au type de paramètre. - Appliquez cette valeur à l’élément hôte via
element_hote.LookupParameter("NomParametre").Set(valeur). Assurez-vous que les paramètres cibles existent et sont de types compatibles.
Alternative pour la sélection :
Si une détection automatique n’est pas souhaitée ou possible, l’API permet d’utiliser UIDocument.Selection.PickObject() ou PickElementsByRectangle() pour que l’utilisateur sélectionne manuellement les éléments dans l’interface Revit, puis de procéder à la copie des paramètres comme décrit à l’étape 4.
Prévention :
Vérifiez toujours l’existence des paramètres (LookupParameter retourne null si le paramètre n’existe pas) et leur compatibilité de type avant de tenter de copier les valeurs pour éviter les erreurs d’exécution.