Je copie ci-dessous un sujet initialement lancé sur FC-Cadlink, et que j'avais synthétisé sur Biblio3D. Tout est dans le titre.
Je créer ce petit sujet pour échanger nos formules [strike]magiques, chimiques[/strike], de propriété car c'est une fonction extrêmement utile d'Archicad 22, mais pas toujours très intuitif à prendre en main. Surtout, on ne prend pas forcément conscience de tout ce qu'on peut (ou pas) faire avec.
Pour commencer, les formules d'Archicad fonctionne comme sur Excel. Donc pour les familiers du tableur microsoft, ça va être facile. Pour les autres, la doc Excel sera plus utile que celle d'Archicad sur le sujet (c'est d'ailleurs un des rares cas où je trouve que l'aide Archicad n'est pas très utile).
Pour rentrer dans le vif du sujet voilà les quelques cas d'usage que j'ai trouvé aux formules. N'hésitez pas à rajouter les votre à la suite de ce sujet.
Sécurité incendie :
- Convertir la norme européenne (R,E,I) en version FR (SF/PF/CF)
Code : Tout sélectionner
IF ( {Property:Généralités/Classification feu} = "EI"; "CF"; IF ( {Property:Généralités/Classification feu} = "E"; "PF"; "_" ) )
Code : Tout sélectionner
IF ( {Property:Généralités/Résistance au feu} = "120"; "2h"; IF ( {Property:Généralités/Résistance au feu} = "60"; "1h"; IF ( {Property:Généralités/Résistance au feu} = "30"; "1/2h"; "_" ) ) )
- Renseigner des propriétés booléennes à partir de propriétés plus détaillées (afin de coller à la norme IFC2x3). Ici exemples de la présence de ferme porte ou du statut CF d'un élément
Code : Tout sélectionner
IF ( {Property:Caracteristiques/Type_de_ferme_porte} <> "Sans_objet"; TRUE; FALSE )
IF ( {Property:Généralités/Classification feu} = "EI"; TRUE; FALSE )
Code : Tout sélectionner
IF(largeur nominale>1,40m ; "2UP"; IF(largeur nominale>0,90m ; "1UP";"0 UP" ))
Dans cet exemple : comment afficher le diamètre d'un conduit (type EP) en mm
Code : Tout sélectionner
SPLITLEFT ( STRCALCUNIT ( {Property:Poteau/Profondeur \/ diamètre d'âme} * 1000 ); ","; 1 )
Code : Tout sélectionner
CONCAT ( "Ø "; SPLITLEFT ( STRCALCUNIT ( {Property:Poteau/Profondeur \/ diamètre d'âme} * 1000 ); ","; 1 ); "mm" )
Rajouter "m²" sur une propriété ayant pour valeur une surface.
Code : Tout sélectionner
CONCAT ( SPLITLEFT ( STRCALCUNIT ( {Property:Zone/SU prog.} ); ","; 1 ); " m²" )
En gros je passe de [SU Surface prog.]=90,00 à [SU Surface programme]="90 m²"
Moi aussi je trouve ça long et compliqué pour pas grand chose, mais je n'ai pas trouvé d'autre solution.
Pour les explication de fonctionnement
Code : Tout sélectionner
STRCALCUNIT (***)
Code : Tout sélectionner
SPLITLEFT (***; ","; 1 )
Code : Tout sélectionner
CONCAT (***); " m²" )
EDIT : Vous aurez remarqué que la plupart de ces formules sont de type if/then (si/alors). Elle sont structurée ainsi : IF(condition ; valeur si vrai ; valeur si faux ). Mais on peut "mettre en abime" cette formule autant de fois que nécessaire.
Petite édition pour rajouter les formule proposées par Yves HOUSSIER.
Ces formules servent à rendre "utilisable" la variable "nom objet de bibliothèque" en remplaçant le nom par défaut par un nom plus approprié.
Cette formule est appliqué au fenêtre mais on peut la déclinée pour n'importe quel type d'objet.
Formule de base à répéter
Formule pour les 7 premières fenêtres basiques
En complément voilà la formule proposée par Felipe qui, elle, supprime tout simplement le numéro de version à la fin du nom de l'objet.
Code : Tout sélectionner
SPLITLEFT ( {Property:Paramètres généraux/Nom Elément de Bibliothèque}; "22"; 1 )
Formule de Noemi pour afficher le texte "all." si la hauteur d'appui est supérieure à 0.
Code : Tout sélectionner
CONCAT ( STRCALCUNIT ( {Property:Paramètres généraux/Largeur} ); " x "; STRCALCUNIT ( {Property:Paramètres généraux/Hauteur} ); IF ( {Property:Fenêtre\/Porte/Valeur Appui ou Linteau} > 0 m; CONCAT ( " - all."; STRCALCUNIT ( {Property:Fenêtre\/Porte/Valeur Appui ou Linteau} ) ); " " ) )
N'hésitez pas à proposer vos formules (ou idée de formule) à la suite de ce sujet.
