29 janv. 2020

[Revit] Familles et formules paramétrique 1/2




    1. Échapper un caractère spécial contenu dans un nom de paramètre

      
Il se peut qu'un caractère spécial soit inclut dans le nom d'un paramètre dans ce cas il faut utiliser les crochets [ ]
 Exemple : 

    • Paramètre oui-non : Alim Saillie/Encastrée
    • exemple formule associée : if([Alim Saillie/Encastrée], 0 m, 0.035 m)
Note :
Si vous avez pour habitude de "piloter" vos paramètres par programmation,  dans la mesure du possible éviter les caractères spéciaux, idem pour les caractères accentués (penser à l'encoding)


    2. Les Maths

Concernant l'utilisation de fonctions mathématiques elles sont similaires à  ceux que nous pouvons rencontrer en programmation




Syntaxe de fonctionDescriptionExemples
+Addition, additionnez des valeursLongueur totale = Hauteur + Largeur
-Soustraction, recherchez la différence entre des valeursVolume supprimé = Volume A - Volume B
*MultiplicationAire = Hauteur * Largeur
/DivisionMi-longueur = Longueur / 2
^Exponentiation, X élevé à la puissance YHauteur ^ 2
logLogarithme, l'exposant de la puissance à laquelle un nombre de base doit être élevé pour qu'il soit égal à un nombre donné.2 = log10 100
In(x)Logarithme népérien, le logarithme d'un nombre sur la base de la constante mathématique e.ln(x*y) = ln*x + ln*y
sqrt(x)Racine carrée4 = sqrt(16)
sin(x)SinusAvec des valeurs c et A connues, a = c * sin(A)
cos(x)CosinusAvec des valeurs c et A connues, b = c * cos(A)
tan(x)TangenteAvec des valeurs a et B connues, b = a * tan(B)
asin(x)Arc sinusAvec des valeurs a et c connues, A = asin(a/c)
acos(x)Arc cosinusAvec des valeurs a et c connues, B = acos(a/c)
atan(x)Arc tangenteAvec des valeurs a et b connues, A = atan(a/b)
exp(x)Constante mathématique e élevée à la puissance x.exp(3)
abs(x)Valeur absolue2 = abs(-2)
piRapport de la circonférence d'un cercle à son diamètreAire du cercle = pi * r^2
round(x)La fonction d'arrondi renvoie une valeur arrondie à l'entier le plus proche. Elle ne prend pas en compte la direction de l'arrondi.
round(3.1) = 3
round(3.5) = 4
round(-3.7) = -4
roundup(x)La fonction d'arrondi par excès renvoie une valeur arrondie à la valeur entière supérieure ou égale à x.
roundup(3) = 3
roundup(3.1) = 4
roundup(-3.7) = -3
rounddown(x)La fonction d'arrondi par défaut renvoie une valeur arrondie à la valeur entière inférieure ou égale à x.
rounddown(3) = 3
rounddown(3.7) = 3
rounddown(-3.7) = -4


     3. Les Opérateurs et les formules conditionnelles

La structure est similaire à celle que nous pouvons utiliser sous Excel.
  • Règle n°1
Le type de paramètre conditionne la formule. Inutile d'essayer de retourner un booléen à un paramètre qui attend une longueur 
  • Règle n°2
Les unités doivent être compatibles entre elles.
Cependant même si elles sont compatibles, attention tout de même à ne pas additionner n'importe quoi ...
Le scandale du théorème de Boucherot 
  • Règle n°3
À l'instar d'un appel de fonction suivi d'arguments, les opérateurs se mettent en préfixe suivis de parenthèses englobant la condition et/ou les valeurs.
  • Règle n°4
À ce jour Revit ne permet pas d’évaluer les valeurs des paramètres de type Texte, si vous y tenez, passez par une table de consultation 

Quand Revit nous envoi booler...



Pour les tests logiques les opérateurs supportés sont:
Opérateur Logique   Description
<  strictement inférieur
>strictement supérieur
=  égal
andretourne Vrai si toutes les valeurs sont Vrai 
orretourne Vrai si une des valeurs est Vrai
notretourne l'inverse de la valeur booléenne (ou du résultat de l'évaluation booléenne)
not(a > b) équivalent à : a <= b
not(a < b)équivalent à : a >= b


Utilisation de l'Opérateur AND
Exemple:
x = 5
y = 4
and(x = 5, y = 5) retourne Faux (False)


Utilisation de l'Opérateur OR
Exemple :
x = 5
y = 4
or(x = 5, y = 5) retourne Vrai (True)


Utilisation de l'Opérateur NOT
Exemple :
x = 5
not(x = 6) retourne Vrai (True), x = 6 étant Faux


      4. Les Syntaxes des Formules 

  • La syntaxe de base est la suivante :
 if (test logique, valeurA si vrai, valeurB si fausse)retourne valeurA ou valeurB
   
  • Test logique avec AND
 if (and(LongA = 10, LongB = 10), valeurA, valeurB)- retourne valeurA ou valeurB
 - Paramètre de Type Longueur

L'équivalent Pseudo-Code à titre de comparaison

   
SI LongA = 10 ET LongB = 10:
    retourne valeurA
SINON:
    retourne valeurB

  • Test logique avec OR
 if (or(LongA = 10, LongB = 10), valeurA , valeurB )- retourne valeurA ou valeurB
 - Paramètre de Type Longueur

Pseudo-Code
   
SI LongA = 10 OU LongB = 10:
    retourne valeurA
SINON:
    retourne valeurB

  • Test logique avec multiple conditions
La syntaxe est la suivante : 
 if (test logique1, valeurA si vrai, (test logique2 si faux, valeurB si vrai, valeurC si vrai))retourne valeurA ou valeurB ou valeurC

Prenons pour l'exemple 3 paramètres de longueur, nous cherchons à retourner la valeur max dans un nouveau paramètre "MaxLong:
LongA = 50
LongB = 40
LongC = 30

Pour simplifier la compréhension commençons par l’équivalent avec un Pseudo-Code

Pseudo-Code
  
SI LongA > LongB and LongA > LongC:
     MaxLong = LongA  
SINON SI LongB > LongA and LongB > LongC: 
    MaxLong = LongB
SINON: 
    MaxLong = LongC   


 l'expression sous Revit devient la suivante :

 if (and(LongA > LongB, LongA > LongC), LongA , if(and(LongB > LongA, LongB > LongC), LongB, LongC ))- retourne LongA ou LongB ou
LongC
 - Paramètre de Type Longueur

On peut comme cela imbriquer autant de conditions que nécessaire...dans la limite du raisonnable

Moralité (ou conseil): si vous n'êtes pas à l'aise avec les formules Revit commencer par écrire la formule sous forme Pythonesque ou Pseudo-Code ou autre



À suivre les formules de recherche dans les tables de consultation...


0 commentaires:

Enregistrer un commentaire