Revit: Gérer l'échelle inversée et les unités dans les formules de familles

Lors de la création d’une famille paramétrique dans Revit, comment résoudre le problème d’un paramètre de dimension (ex: diamètre d’arbre) qui, lorsqu’il est augmenté, réduit la taille de l’objet au lieu de l’agrandir, et comment gérer les erreurs d’unités (comme ‹ 1 › transformé en ‹ 1m² ›) lors de l’utilisation de formules inverses pour corriger ce comportement ?

Ce comportement, bien que déroutant pour les utilisateurs habitués à AutoCAD, est une manifestation de la logique de Revit concernant les familles paramétriques et la gestion rigoureuse des unités. Voici une démarche experte pour comprendre et résoudre ces problématiques :

  1. DIAGNOSTIC DU COMPORTEMENT D’ÉCHELLE INVERSÉE

    • Cause probable : L’échelle inversée se produit généralement lorsque le paramètre que vous modifiez est utilisé comme diviseur dans une formule qui définit la géométrie de l’objet. Par exemple, si une longueur est définie par Longueur_Base / Parametre_Echelle, augmenter Parametre_Echelle réduira la Longueur_Base. Ce n’est pas un bug, mais une conséquence directe de la formule appliquée.
    • Vérification : Examinez attentivement les contraintes et les formules qui lient votre paramètre Diametre à la géométrie de l’arbre dans l’éditeur de famille. Assurez-vous que le paramètre est directement lié à la dimension souhaitée ou qu’il est utilisé comme un multiplicateur (facteur d’échelle) et non un diviseur.
  2. COMPRENDRE LA GESTION DES UNITÉS DANS LES FORMULES REVIT

    • Rigidité des unités : Contrairement à AutoCAD qui est plus permissif, Revit est un logiciel orienté objets et fortement typé en unités. Chaque paramètre a un type (Longueur, Nombre, Angle, etc.).
    • Cohérence requise : Dans une formule, Revit exige une cohérence dimensionnelle. Si vous avez un paramètre de type Longueur (ex: Diametre en mètres), un simple 1 n’a pas de dimension. Revit tente alors d’interpréter le 1 pour équilibrer les unités, ce qui peut mener à des erreurs comme 1m² si le contexte l’implique pour que la formule reste valide dimensionnellement.
    • Exemple : Si Diametre est de type Longueur (en mètres), alors 1 / Diametre est 1 / m. Pour obtenir un facteur numérique pur, il faut diviser Diametre par une unité de référence, par exemple Diametre / 1m pour obtenir un nombre sans unité.
  3. SOLUTIONS ET BONNES PRATIQUES

    • 3.1. Ajuster la logique de la famille (recommandé)
      C’est la méthode la plus propre et la plus intuitive.

      • Paramètre de dimension directe : Si Diametre doit contrôler directement le diamètre de l’objet, liez-le directement à la dimension du diamètre de l’arbre. Augmenter Diametre devrait alors augmenter la taille.
      • Paramètre de facteur d’échelle (type « Nombre ») : Si vous souhaitez un paramètre pour un facteur d’échelle pur (ex: 2 pour doubler, 0.5 pour réduire de moitié), créez-le de type Nombre. Dans ce cas, une valeur de 2 doublerait la taille, et 0.1 la réduirait de dix fois. La formule pour une dimension Ma_Longueur serait alors simple : Longueur_Base * Facteur_Echelle.
    • 3.2. Corriger le comportement inversé via une formule (si le paramètre doit rester de type Longueur)
      Si vous devez conserver un paramètre de type Longueur (Diametre) qui se comporte de manière inversée, créez un paramètre intermédiaire (ex: Facteur_Inverse) pour corriger cela.

      • Cas 1: Obtenir un facteur numérique inverse
        Si vous avez besoin d’un facteur numérique (sans unité) qui est l’inverse de votre Diametre (ex: pour multiplier une autre dimension), utilisez la formule suivante pour un paramètre de type Nombre :
        Facteur_Inverse = 1 / (Diametre / 1m)
        (Remplacez 1m par l’unité de longueur par défaut de votre projet si elle est différente, ex: 1mm ou 1ft).
        Cette formule divise Diametre par son unité pour obtenir une valeur numérique, puis prend l’inverse.

      • Cas 2: Obtenir une longueur inverse (comme dans votre cas)
        Votre solution 1m² / Diametre * 1000 est un contournement astucieux qui fonctionne car :

        • 1m² fournit une unité de surface.
        • Divisé par Diametre (qui est une Longueur), le résultat est une Longueur (m² / m = m).
        • Le * 1000 est un facteur numérique pour ajuster la valeur finale à l’échelle désirée.
          Une alternative plus explicite et souvent plus claire pour obtenir une longueur inverse pourrait être :
          Longueur_Inverse = (1m * 1m) / Diametre
          Puis, si nécessaire, ajustez avec un facteur numérique : Longueur_Inverse * Facteur_Ajustement.
    • 3.3. Bonnes pratiques générales

      • Nommage clair : Nommez vos paramètres de manière explicite (Diametre_Reel, Facteur_Echelle_Inverse) pour faciliter la compréhension et la maintenance.
      • Types de paramètres : Choisissez toujours le type de paramètre le plus approprié (ex: Nombre pour un facteur d’échelle pur, Longueur pour une dimension physique).
      • Test systématique : Testez toujours vos familles avec des valeurs extrêmes pour vos paramètres afin de valider leur comportement et anticiper les problèmes.

En adoptant ces méthodes, vous pourrez maîtriser la logique de Revit et créer des familles paramétriques robustes et prévisibles, même face à des comportements qui semblent initialement contre-intuitifs.