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
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 ...
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
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 | |
and | retourne Vrai si toutes les valeurs sont Vrai | |
or | retourne Vrai si une des valeurs est Vrai | |
not | retourne 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
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
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
l'expression sous Revit devient la suivante :
On peut comme cela imbriquer autant de conditions que nécessaire...dans la limite du raisonnable
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...
À suivre les formules de recherche dans les tables de consultation...