Vous avez fait une super familles avec tout pleins de parametres pour controler tous les éléments et intervenir sur la visibilité les dimensions,...

Mais il peut être très interressant de controler certains parametres en fonction de d'autres parametres ou conditions.

L'une des nombreuse solutions qu'offre REVIT est l'emploi de formules conditionnelles ou arithemetiques dans vos parametres.

Si vous êtes habitué des formules dans Excel, cela ne vous posera aucune difficultés, si ce n'est que les termes de conditions sont en English, que les points-virgules sont remplacé par des virgules et les virgules par des point (le systeme anglosaxon en fait).

Si dans Excel, on peut atteindre rapidement la limite en terme d'arguments dans une formule,  REVIT lui semble accepter des formules d'un longueur infini. Il doit tout de même y avoir une limite, mais je n'ai jamais réussi a l'atteindre. Pourtant certaines formules que je créée sont d'une longueur...

Pour vous donnez un exemple d'une de mes formules :

if(and(D_Rad_Racc S position = 7, Rad_Racc_E_x < 0 mm, D_Rad_Racc S dX2 > 0 mm), Rad_Racc_E_x + D_Rad_Racc S dX2, if(and(D_Rad_Racc S position = 7, Rad_Racc_E_x > 0 mm, D_Rad_Racc S dX2 > 0 mm), Rad_Racc_E_x - D_Rad_Racc S dX2, if(and(D_Rad_Racc S position = 7, Rad_Racc_E_x < 0 mm, D_Rad_Racc S dX2 = 0 mm), Rad_Racc_E_x + Emetteur : Diamètre SORTIE fluide * 3.3, if(and(D_Rad_Racc S position = 7, Rad_Racc_E_x > 0 mm, D_Rad_Racc S dX2 = 0 mm), Rad_Racc_E_x - Emetteur : Diamètre SORTIE fluide * 3.3, if(or(and(not(Emetteur : Fluide ENTREE a droite), not(Rad_Racc _S_o_de_ E)), and(Emetteur : Fluide ENTREE a droite, Rad_Racc _S_o_de_ E)), -1, 1) * if(or(D_Rad_Racc S position = 1, D_Rad_Racc S position = 2), Emetteur : Longueur / 2, if(and(D_Rad_Racc S dX1 > 0 mm, or(D_Rad_Racc S position = 3, D_Rad_Racc S position = 5)), D_Rad_Racc S dX1, if(and(D_Rad_Racc S dX1 = 0 mm, or(D_Rad_Racc S position = 3, D_Rad_Racc S position = 5)), Emetteur : Longueur / 2 - Emetteur : Diamètre SORTIE fluide, if(and(D_Rad_Racc S dX2 > 0 mm, or(D_Rad_Racc S position = 4, D_Rad_Racc S position = 6)), D_Rad_Racc S dX2, if(and(D_Rad_Racc S dX2 = 0 mm, or(D_Rad_Racc S position = 4, D_Rad_Racc S position = 6)), Emetteur : Diamètre SORTIE fluide * 1.5, 1500 mm)))))))))

Et cela ne doit pas être le plus longue que j'ai produit dans mes familles !!!

 

Voici quelque astuces pour éditer vos formules :

1 - Reporter vous à l'aide de Autodesk. Pour une fois, l'aide sur ce sujet n'est pas mal faites.

2 - Si vous voulez éditer des formules d'une longueur assé conséquente, écriver les dans un autres logiciel tel que bloc notes ou excel.

Cela vous permettera :

- de voir votre formule en entier, car la boite de dialogue pour les formules n'est aps terrible, malgré qu'elle soit redimensionnable.

- de copier plus facilements le nom de vos parametres depuis la boite de dialogue Revit (Ctrl+C) dans vos formules. Car si vous faites vos formules dans Revit, temps que vous n'avez pas fini votre formule, vous ne pourrez pas copier le nom d'un parametres. Vous deverez donc les écrire entierement a la main, avec le risque d'erreur.

- Lorsque vous ecrirez des formules comportant une erreur de syntax ou d'unité, bref que Revit n'en voudra pas, vous risquez de devoir sortir de l'édition de votre formule et de la perdre. Alors que si vous l'avez écrite dans une autre logiciel, cela vous permet de chercher ce que Revit n'accepte pas, de faire plusieurs versions, etc...

 

Pour ma part je prefere excel car si j'ai des formules assé repetitives, j'utilise les fonctions des substitutions et de concatenation d'excel.

Une autre astuce, si vous avez une version d'excel Anglosaxone (Pas une fversion rancaise passé en langage Anglais), vous pourrez tester directement vos formules de condtions dans excel. Pour cela il faudra nomer les cellules comportant les variables de vos formules, avec le nom de vos parametres. Puis éditer vos formules.

Comme vous êtes dans une version anglaise de Excel, SI devient IF, OU devient OR, Point-virgule devient virgule, etc... Vous pourrez utiliser quasiment toute la syntax accepeter par Revir directement dans Excel. Vous n'aurez alors plus qu'a recopier vos formules dans Revit.

Pour finir je joint l'aide fournis avec REVIT 2011. Tout y est expliqué concernant la syntax et comme je le disais au part avant, je la trouve pas mal faite pour une fois.

Voila, vous pouvez donc maintenant utilise cette méthode pour venir agir sur vos parametres. Il en existe encore de nombreuses autres, mais ca c'est pour d'autre postes !!!

 

 

Voici l'aide Autodesk :

Syntaxe et abréviations de formules valides

Les formules reconnaissent les opérations arithmétiques suivantes : addition, soustraction, multiplication, division, élévations à une puissance, logarithmes et racines carrées.

Elles prennent également en charge les fonctions trigonométriques suivantes : sinus, cosinus, tangente, arcsinus, arccosinus et arctangente.

Les abréviations de formules valides pour les opérations arithmétiques et les fonctions trigonométriques sont : •Addition : + •Soustraction : - •Multiplication : * •Division : / •Elévation à une puissance : ^: x^y, signifiant x élevé à la puissance y. •Logarithme : log •Racine carrée : sqrt, sqrt (16) •Sinus : sin •Cosinus : cos •Tangente : tan •Arcsinus : asinus •Arccosinus : acos •Arctangente : atan •e élevé à la puissance x : exp •Valeur absolue : abs

Vous pouvez définir les formules à l'aide de valeurs entières, décimales et fractionnelles.

Pour indiquer les valeurs souhaitées, respectez la syntaxe mathématique classique, comme illustré dans les exemples ci-dessous : •Longueur = Hauteur + Largeur + sqrt(Hauteur*Largeur) •Longueur = Mur 1 (11000mm) + Mur 2 (15000mm) •Superficie = Longueur (500mm) * Largeur (300mm) •Volume = Longueur (500mm) * Largeur (300mm) * Hauteur (800mm) •Largeur = 100m * cos(angle) •x = 2*abs(a) + abs(b/2) •NumRéseau = Longueur/Espacement 






Vous pouvez utiliser la fonction arrondi pour les valeurs dans les formules.

Syntaxe de fonctionDescriptionExemples :

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

 

 

Dans les formules, les noms de paramètres sont sensibles à la casse. Ainsi, si un nom de paramètre commence par une majuscule (par exemple, Largeur), vous devez l'écrire de la même manière dans la formule. Si vous utilisez une minuscule dans la formule (par exemple, largeur * 2), la formule ne sera pas reconnue.

Remarque : Il est recommandé de ne pas utiliser un tiret (-) lors de l'attribution d'un nom de paramètre.





Formules contenant des instructions conditionnelles :

Dans les formules, les instructions conditionnelles permettent de définir des actions dans une famille en fonction de l'état d'autres paramètres : le logiciel définit la valeur des paramètres en fonction du respect de certaines conditions.

Le recours aux instructions conditionnelles peut s'avérer pratique dans certains cas. Toutefois, ces instructions ont tendance à complexifier les familles. Il est donc recommandé de limiter leur utilisation.

Elles sont inutiles dans la plupart des paramètres de type.

En effet, ces paramètres sont déjà comparables aux instructions conditionnelles, dans la mesure où leur valeur dépend du type défini. Les instructions conditionnelles s'avèrent en revanche précieuses avec les paramètres d'occurrence, notamment lorsqu'ils définissent un paramètre dont la valeur est constante.

 

Syntaxe des instructions conditionnelles : Les instructions conditionnelles s'articulent autour de la structure suivante : IF (<condition>, <résultat-si-vrai>, <résultat-si-faux>)

Les valeurs spécifiées pour le paramètre dépendent du respect de cette condition (vraie ou faux). Si la condition est vraie, la valeur Vrai (True) est renvoyée. Si la condition est fausse, la valeur Faux (False) est renvoyée.

Les instructions conditionnelles peuvent contenir des valeurs numériques, des noms de paramètre numérique et des paramètres Oui/Non.

Vous pouvez utiliser les opérateurs de comparaison suivants dans une condition : <, >, =.

Vous pouvez également utiliser les opérateurs booléens suivants dans une instruction conditionnelle : AND, OR et NOT.

Actuellement, les opérateurs <= et >= ne sont pas pris en charge. Pour exprimer ce type de comparaison, utilisez à la place un opérateur NOT logique. Exemple : a<=b peut être entré sous la forme NOT(a>b).

La liste ci-dessous contient des exemples de formules incluant des instructions conditionnelles.

Instruction IF simple : =IF (Length < 3000mm, 200mm, 300mm)

Instruction IF contenant un paramètre de texte : =IF (Length > 35', “Chaîne1”, “Chaîne2”)

Instruction IF avec opérateur logique AND : =IF ( AND (x = 1 , y = 2), 8 , 3 )

Instruction IF avec opérateur logique OR : =IF ( OR ( A = 1 , B = 3 ) , 8 , 3 )

Instructions IF imbriquées : =IF ( Length < 35' , 2' 6" , IF ( Length < 45' , 3' , IF ( Length < 55' , 5' , 8' ) ) )

Instruction IF avec une condition Oui/Non : =Length > 40 (La condition et les résultats sont implicites.)

 

Exemples d'utilisation d'instructions conditionnellesLe calcul des valeurs de réseau et la visibilité d'un élément en fonction de la valeur d'un paramètre sont deux utilisations fréquentes des instructions conditionnelles dans les formules.

Par exemple, les instructions conditionnelles permettent d'effectuer les opérations suivantes :•Interdire une valeur inférieure à 2 pour le paramètre de réseau. Dans Revit, la valeur des réseaux doit être un entier supérieur ou égal à 2. Dans certains cas, vous devrez peut-être créer une formule conditionnelle garantissant une valeur de paramètre minimale de 2, même lorsque la valeur calculée est de 1 ou 0. Si la valeur calculée est supérieure ou égale à 2, la formule conserve cette valeur. En revanche, si la valeur calculée est égale à 1 ou 0, la formule indique la valeur 2.

Formule : Numéro de réseau = IF (Paramréseau < 2, 2, Paramréseau)•

Afficher les meneaux uniquement si le nombre de lumières de fenêtre est supérieur à 1. Par exemple, si vous souhaitez déterminer la visibilité de la géométrie de meneau en fonction du paramètre Lumières, vous pouvez créer un paramètre Oui/Non (par exemple, VisMeneau) et l'attribuer au paramètre Visible de la palette Propriétés pour la géométrie de meneau. Le paramètre VisMeneau correspond à une opération booléenne (Oui/Non). La condition (IF) et les résultats sont donc implicites. Dans cet exemple, si la condition est respectée (true), le paramètre VisMeneau est sélectionné et la géométrie de meneau est visible. Inversement, si la condition n'est pas respectée (false), le paramètre VisMeneau n'est pas sélectionné et la géométrie de meneau n'est pas visible.

Formule : VisMeneau = Lumières > 1