Automatiser les paramètres Revit avec Dynamo : guide complet

Comment automatiser les paramètres Revit avec Dynamo : méthode et cas d’usage

La modification de paramètres en masse est le cas d’usage numéro un de Dynamo sur Revit. Renommer des centaines de pièces, remplir des paramètres partagés en masse, appliquer des règles conditionnelles de classification, copier des valeurs d’un paramètre vers un autre : ces tâches chronophages en mode manuel deviennent instantanées avec un script bien conçu. Ce guide vous donne la méthode complète pour lire, modifier et automatiser les paramètres Revit avec Dynamo.

Lire les paramètres d’éléments Revit

Avant de modifier quoi que ce soit, il faut savoir lire les paramètres. C’est la base de toute automatisation Dynamo : comprendre ce que contient votre modèle avant d’agir dessus.

Le nœud fondamental : Element.GetParameterValueByName

Le nœud Element.GetParameterValueByName est votre outil de lecture principal. Il prend deux entrées :

  • element : un élément Revit ou une liste d’éléments.
  • parameterName : le nom exact du paramètre à lire (sensible à la casse).

Il retourne la valeur du paramètre. Pour lire le paramètre « Commentaires » de tous les murs du projet : sélectionnez la catégorie Murs, récupérez tous les éléments avec All Elements of Category, puis connectez la sortie au nœud de lecture. Le résultat est une liste des valeurs — une par mur.

Découvrir les paramètres disponibles sur un élément

Vous ne connaissez pas le nom exact d’un paramètre ? Utilisez le nœud Element.Parameters : il retourne la liste complète des paramètres disponibles sur un élément, avec leurs noms internes. Connectez un seul élément Revit et lisez la sortie — vous verrez tous les paramètres, qu’ils soient intégrés, partagés ou de projet.

💡 Astuce pour trouver le bon nom

Le nom affiché dans l’interface Revit peut différer du nom interne utilisé par Dynamo. Par exemple, « Surface » en français peut s’appeler « Area » en interne. Utilisez Element.Parameters sur un élément représentatif pour voir la liste exacte des noms, puis copiez-collez le nom exact dans votre nœud String.

Lire les paramètres de type vs d’instance

Dans Revit, un paramètre peut appartenir à l’instance (valeur propre à chaque élément) ou au type (valeur commune à tous les éléments de ce type). Element.GetParameterValueByName fonctionne dans les deux cas — Dynamo cherche d’abord un paramètre d’instance, puis de type, si le nom correspond. Pour cibler explicitement le type d’un élément, utilisez Element.ElementType avant de lire le paramètre.

Modifier des paramètres en masse

La modification en masse est la raison pour laquelle la plupart des utilisateurs commencent Dynamo. Ce qui prend une heure à faire manuellement prend 2 secondes avec le bon script.

Workflow type — modification en masse

Étape 1 : Ajoutez le nœud Categories et sélectionnez la catégorie d’éléments à modifier (murs, portes, pièces, équipements…).

Étape 2 : Récupérez tous les éléments avec All Elements of Category. Connectez la sortie de Categories à l’entrée category.

Étape 3 : Ajoutez un nœud String et tapez le nom exact du paramètre à modifier.

Étape 4 : Ajoutez un nœud Number ou String avec la nouvelle valeur à appliquer.

Étape 5 : Connectez tout au nœud Element.SetParameterByName : éléments → element, nom du paramètre → parameterName, nouvelle valeur → value. Cliquez Run.

Ce workflow fonctionne pour tous les types de paramètres Revit : texte, nombre entier, nombre décimal, oui/non, matériau, niveau. Pour les paramètres de type longueur, l’unité interne Revit est le pied décimal (voir section Pièges courants).

Filtrer les éléments avant modification

Modifier tous les éléments d’une catégorie est rarement ce qu’on veut. Le plus souvent, on veut modifier un sous-ensemble : les murs d’un niveau précis, les pièces d’une zone, les portes d’un type donné. Dynamo offre plusieurs nœuds de filtrage :

  • All Elements of Category at Level : filtre par niveau directement.
  • List.FilterByBoolMask : filtre une liste selon une liste de booléens (vrai/faux) — le couteau suisse du filtrage Dynamo.
  • Element.GetParameterValueByName + comparaison : lisez un paramètre, comparez-le à une valeur, et utilisez le résultat comme masque booléen.

J’utilise régulièrement cette approche en formation : avant de lancer un script de modification en masse, on filtre toujours sur 5 éléments avec List.TakeItems pour valider le résultat. Ce réflexe évite bien des surprises sur les gros projets.

Formez-vous à l’automatisation Revit

Notre formation Dynamo vous apprend à créer des scripts de productivité opérationnels dès le premier jour de formation.

Découvrir la formation Dynamo →

Règles conditionnelles avec le nœud If

La vraie puissance de Dynamo apparaît quand vous ajoutez de la logique conditionnelle. Plutôt que d’appliquer la même valeur à tous les éléments, vous pouvez définir des règles : « si telle condition est vraie, applique cette valeur ; sinon, applique cette autre valeur ».

Le nœud If : la structure de base

Le nœud If prend trois entrées :

  • test : une valeur booléenne (vrai ou faux).
  • true : la valeur retournée si le test est vrai.
  • false : la valeur retournée si le test est faux.

Combiné avec des nœuds de comparaison (==, >, <, >=, String.Contains), le nœud If permet de créer des règles métier sophistiquées.

Exemple : classifier les pièces par taille

Script : classifier les pièces selon leur surface

1. Récupérez toutes les pièces (Categories → Pièces → All Elements of Category).

2. Lisez le paramètre « Surface » sur chaque pièce (Element.GetParameterValueByName, parameterName = "Area").

3. Comparez à un seuil : ajoutez un nœud >, connectez les surfaces en entrée A et la valeur 215 (en pieds², soit ~20 m²) en entrée B. La sortie est une liste de booléens.

4. Ajoutez le nœud If : test = liste de booléens, true = "Grande pièce", false = "Petite pièce".

5. Écrivez le résultat dans le paramètre "Commentaires" avec Element.SetParameterByName.

Ce même pattern s'applique à des dizaines de cas concrets : classification des murs par hauteur, marquage des équipements hors gabarit, identification des pièces sans finition définie, détection des éléments en phase démolie non marqués.

Combiner plusieurs conditions

Pour des règles plus complexes, combinez les nœuds And (ET logique) et Or (OU logique) — accessibles en tapant && ou || dans la recherche Dynamo. Exemple : « marquer les pièces dont la surface est supérieure à 20 m² ET dont le niveau est RdC ». Construisez les deux tests séparément, puis connectez leurs sorties au nœud And — le résultat est vrai seulement si les deux conditions sont satisfaites simultanément.

Travailler avec les paramètres partagés

Les paramètres partagés (Shared Parameters) sont des paramètres définis dans un fichier texte externe (.txt) et partagés entre projets et familles. Ils jouent un rôle clé dans les workflows BIM : c'est souvent via des paramètres partagés que les informations migrent du modèle Revit vers les exports IFC, les nomenclatures ou les systèmes de gestion de patrimoine.

Lire et écrire un paramètre partagé

Bonne nouvelle : Dynamo ne distingue pas les paramètres partagés des paramètres intégrés. Utilisez exactement les mêmes nœuds — Element.GetParameterValueByName et Element.SetParameterByName — avec le nom exact du paramètre partagé. La seule condition : le paramètre partagé doit être correctement ajouté au projet Revit et visible dans les propriétés de l'élément.

⚠️ Sensibilité à la casse — erreur la plus fréquente

Les noms de paramètres dans Dynamo sont strictement sensibles à la casse. Le paramètre « Commentaires » ≠ « commentaires » ≠ « COMMENTAIRES ». Si votre nœud SetParameterByName retourne une erreur ou null, c'est presque toujours un problème de casse ou d'espace invisible dans le nom. Vérifiez toujours le nom exact dans les propriétés de l'élément Revit, ou utilisez Element.Parameters pour afficher la liste complète.

Cas d'usage IFC : remplir les paramètres d'export

Un des cas les plus fréquents en production BIM : remplir en masse les paramètres partagés nécessaires à un export IFC conforme. Par exemple, le paramètre IfcExportAs doit être renseigné sur chaque type de famille pour que l'export IFC classe correctement les éléments. Plutôt que de le renseigner manuellement famille par famille, un script Dynamo peut lire une liste de correspondances (type Revit → IfcExportAs) depuis un fichier Excel et appliquer les valeurs en une seule exécution.

Copier des valeurs entre paramètres

Un autre cas d'usage très répandu : copier la valeur d'un paramètre vers un autre sur les mêmes éléments. Cette opération est triviale à construire dans Dynamo mais impossible à réaliser efficacement dans Revit sans script.

Workflow de copie entre paramètres

Copier le numéro de pièce vers un paramètre partagé

Exemple concret : vous voulez copier la valeur du paramètre intégré « Numéro » des pièces vers un paramètre partagé « Code_Zone » que vous avez créé pour l'export IFC.

1. Récupérez toutes les pièces.

2. Lisez le paramètre source : Element.GetParameterValueByName, parameterName = "Number" (nom interne du paramètre Numéro).

3. Écrivez dans le paramètre cible : Element.SetParameterByName, parameterName = "Code_Zone", value = sortie du nœud de lecture.

4. Run. La valeur du paramètre "Number" est copiée dans "Code_Zone" sur toutes les pièces en une seule opération.

Ce pattern est particulièrement utile pour :

  • Synchroniser des paramètres intégrés avec des paramètres partagés pour l'export IFC.
  • Construire des codes composites (concaténer le niveau + le numéro de pièce) avec le nœud String.Concat.
  • Propager des valeurs d'un paramètre de type vers un paramètre d'instance pour l'export de nomenclatures.

Pièges courants et comment les éviter

⚠️ Piège n°1 — Les unités internes Revit

Les paramètres de type « longueur » dans Revit sont stockés en pieds décimaux en interne. 1 mètre = 3,28084 pieds. Si vous voulez écrire 900 mm dans un paramètre d'allège, la valeur à passer à Dynamo n'est pas 900 mais 900 / 304,8 = 2,953 pieds. Utilisez le nœud Convert Between Units pour éviter toute erreur : entrez la valeur en mm, sélectionnez « Millimeters » comme unité source et « Feet » comme unité cible.

⚠️ Piège n°2 — Paramètres en lecture seule

Certains paramètres sont calculés automatiquement par Revit et ne peuvent pas être modifiés par Dynamo : Surface, Volume, Périmètre, Longueur de mur (valeur calculée). Si votre SetParameterByName retourne une erreur de type « parameter is read-only », c'est que le paramètre est protégé. Vérifiez dans les propriétés Revit si le champ est grisé — si oui, Dynamo ne peut pas non plus l'écrire.

💡 Piège n°3 — Types vs Instances

Un paramètre de type s'applique à toutes les occurrences du même type Revit. Modifier un paramètre de type sur un élément affecte automatiquement tous les éléments de ce type dans le projet — même ceux que vous ne vouliez pas toucher. Pour cibler un paramètre de type, connectez d'abord l'élément à Element.ElementType avant de lire ou d'écrire le paramètre. Vérifiez toujours si vous travaillez sur une instance ou un type avant d'exécuter votre script.

Déboguer un script qui ne fonctionne pas

Quand un nœud retourne une erreur ou une valeur null, voici la méthode de diagnostic :

  • Survolez le nœud en erreur : Dynamo affiche un tooltip avec le message d'erreur précis.
  • Vérifiez les types de données : un nœud qui attend un élément Revit et reçoit une liste retournera une erreur. Vérifiez le type de chaque sortie.
  • Testez avec un seul élément : utilisez List.GetItemAtIndex pour isoler le premier élément de votre liste et testez le workflow sur cet élément seul avant de l'appliquer à toute la liste.
  • Activez Watch : connectez un nœud Watch à la sortie de chaque nœud intermédiaire pour inspecter les données à chaque étape.

Maîtrisez l'automatisation Revit

Formation Dynamo complète : scripts de productivité, paramètres, connexion Excel, introduction au Python. Progressez à votre rythme.

Voir la formation Dynamo →

Questions fréquentes sur les paramètres Revit avec Dynamo

Quelle est la différence entre Element.GetParameterValueByName et Element.Parameters ?

Element.GetParameterValueByName retourne directement la valeur d'un paramètre dont vous connaissez le nom exact. Element.Parameters retourne la liste complète des objets paramètres disponibles sur un élément — utile pour découvrir les noms disponibles ou manipuler les paramètres comme objets. Pour la modification en masse, utilisez toujours GetParameterValueByName et SetParameterByName car ils sont plus directs et lisibles.

Comment modifier des paramètres de type et non d'instance avec Dynamo ?

Ajoutez le nœud Element.ElementType entre votre liste d'éléments et le nœud de lecture/écriture. Element.ElementType retourne le type Revit associé à chaque élément. Vous pouvez ensuite lire ou modifier les paramètres de ce type. Attention : modifier un paramètre de type affecte tous les éléments de ce type dans le projet, pas seulement ceux de votre liste.

Dynamo peut-il modifier les paramètres calculés comme la surface ?

Non. Les paramètres calculés par Revit (Surface, Volume, Périmètre, Longueur) sont en lecture seule — ils ne peuvent être modifiés ni depuis l'interface Revit ni depuis Dynamo. Vous pouvez les lire et les utiliser dans des calculs, mais pas les écraser. Si vous avez besoin de stocker une valeur de surface modifiée, créez un paramètre personnalisé et copiez-y la valeur calculée via un script.

Comment gérer les erreurs « null » dans les résultats de lecture de paramètres ?

Une valeur null signifie que le paramètre existe mais n'a pas de valeur définie, ou que le nom fourni ne correspond à aucun paramètre. Utilisez le nœud == null pour détecter les nulls, puis List.FilterByBoolMask pour séparer les éléments avec et sans valeur. Pour les éléments sans valeur, vous pouvez leur affecter une valeur par défaut via un nœud If (null → valeur par défaut, non-null → valeur existante).

Est-il possible d'annuler les modifications effectuées par un script Dynamo ?

Oui, dans la plupart des cas. Dynamo regroupe ses modifications dans une transaction Revit unique, ce qui signifie que Ctrl+Z annule l'ensemble de l'exécution du script en une seule fois. Cependant, sur les très gros modèles ou après plusieurs exécutions successives, l'annulation peut être incomplète ou impossible. Bonne pratique : sauvegardez toujours votre projet Revit avant d'exécuter un script de modification en masse.

Sources et références

  • Documentation officielle Dynamo — dynamobim.org
  • Dynamo Primer — Chapitre sur les nœuds Revit et les paramètres
  • Autodesk Knowledge Network — Dynamo for Revit, gestion des paramètres
  • Autodesk Revit Help — Paramètres partagés et paramètres de projet
Mehdi — Formateur BIM, Les Gaulois Formateurs

Mehdi — Formateur BIM, Les Gaulois Formateurs

Formateur BIM basé à Montpellier depuis 2016, je forme des projeteurs, ingénieurs et architectes à la maîtrise de Revit, Navisworks et Dynamo. Mes formations allient rigueur technique et pédagogie terrain : chaque technique présentée ici a été testée sur de vrais projets et affinée au contact de centaines d'apprenants.

Suivre sur LinkedIn
Retour en haut