Revit : Adapter automatiquement la largeur d'un fond d'étiquette au texte

J’essaie de créer une famille d’étiquette sur Revit où un bandeau graphique en arrière-plan s’ajusterait automatiquement à la longueur variable du texte du libellé. Je n’arrive pas à trouver comment lier dynamiquement la largeur de ce fond à la taille du texte. Existe-t-il une solution pour automatiser cet ajustement ?

Lier dynamiquement la largeur d’un élément graphique à la longueur d’un texte n’est pas une fonctionnalité native de l’éditeur de familles Revit. Pour contourner cette limite, deux approches sont possibles : une astuce visuelle simple ou une automatisation via Dynamo.

Approche 1 : L’astuce visuelle (sans automatisation)

Cette méthode est la plus simple à mettre en place et à partager avec des collaborateurs.

  1. Modifier le libellé : Dans l’éditeur de familles, sélectionnez le texte de l’étiquette et modifiez ses propriétés de type.
  2. Activer le fond opaque : Réglez le paramètre d’arrière-plan du texte sur Opaque. Cela créera un fond qui suit exactement les contours du texte et dont vous pouvez choisir la couleur.
  3. Supprimer le cadre manuel : Si vous aviez dessiné un cadre avec des lignes ou une zone remplie, supprimez-le, car il devient inutile.
  4. Ajuster la justification : Utilisez la justification du texte (gauche, centre, droite) pour contrôler le positionnement de l’étiquette et de son point d’accroche de repère.

Approche 2 : Automatisation avec Dynamo (avancé)

Cette solution répond précisément au besoin d’un cadre indépendant mais est plus complexe à déployer.

  1. Principe du script : Le but est d’utiliser un script Dynamo pour lire les dimensions réelles du texte une fois l’étiquette placée dans le projet.
  2. Récupérer les dimensions : Le script sélectionne l’étiquette et récupère les dimensions de sa BoundingBox (sa boîte englobante), qui correspond à l’encombrement du texte.
  3. Piloter une famille imbriquée : Une famille d’élément de détail (représentant le cadre ou le fond coloré) est placée par le script. Ses paramètres de largeur sont alors pilotés par les dimensions de la BoundingBox lues à l’étape précédente.

Cette méthode est puissante mais présente des contraintes : elle n’est pas dynamique en temps réel et nécessite de relancer le script pour chaque mise à jour des étiquettes.