Formeln bieten in Familien die Möglichkeit, Parameterwerte berechnen zu lassen und sind damit unverzichtbarer Bestandteil des Familien-Editors.
Dieser Artikel beschreibt die wichtigsten mathematischen Formeln und Funktionen inkl. deren Anwendung.
Zudem werden auch relativ selten verwendete Begriffe in dieser Liste aufgeführt [die englische Bezeichnung ist jeweils in eckiger Klammer angeführt, weil die meisten Funktions-Abkürzungen aus dem Englischen abgeleitet sind]
Verwendung in Revit: Zahl = X ^ Y (sprich: X hoch Y) [X raised to the power of Y = X ^ Y]
Verwendung in Revit: pi() [Usage in Revit]
Beispiele:
Kreisumfang = pi() * (Radius * 2)
Kreisumfang = pi() * Diameter
Kreisfläche = pi() * Radius ^ 2
Verwendung in Revit: Zahl = sqrt(9) = 3 (die Wurzel aus 9 = 3) [value = sqrt(9)]
Verwendung in Revit: Zahl = log(1000) [Usage in Revit = log(1000)]
Der Logarythmus einer Zahl zu einer gegebenen Basis ist der Exponent, mit der die Basis potenziert werden muss, um diese Zahl zu erhalten.
Beispiel: Der Logarythmus von 1000 zur Basis 10 ist 3, weil 10 x 10 x 10 = 1000.
The logarithm of a number to a given base is the exponent to which the base must be raised in order to produce that number. For example, the logarithm of 1000 to base 10 is 3, because three factors of 10 must be multiplied to yield a thousand: 10 × 10 × 10 equals 1000
Revit usage = log(1000)
Übersicht
if ... "wenn", d.h. für eine Bedingung (= mathematische Aussage) können 2 mögliche Fälle ausgewertet werden: wahr, falsch
> ... "größer als" [Greater than], "kleiner als" [Less than]
WICHTIGER HINWEIS: in diesem Artikel können die Zeichen "kleiner als" und "größer als" aus programmiertechnischen Gründen leider nicht dargestellt werden. Es werden hier an deren Stelle die Begriffe "kleiner" und "größer" verwendet!
= ... "ist gleich" [Equal]
and ... "und", d.h. beide Aussagen sind wahr [Both statements are true]
or ... "oder", d.h. eine der beiden Aussage ist wahr [One of the statements is true]
not ... "nicht", d.h. die Aussage ist falsch [Statement is false]
if-Bedingungen
Verwendung in Revit: if (Bedingung, Resultat wenn Bedingung wahr, Resultat wenn Bedingung falsch) [Conditional statement uses this structure: if (condition, result if true, result if false)]
WICHTIGER HINWEIS: in diesem Artikel können die Zeichen "kleiner als" und "größer als" aus programmiertechnischen Gründen leider nicht dargestellt werden. Es werden hier an deren Stelle die Begriffe "kleiner" und "größer" verwendet!
if-Bedingung, einfacher Fall [Simple IF Statement]
if (Länge kleiner 900, Breite = 500, Breite = 1000)
Bedeutet: wenn der Parameter Länge kleiner als 900 ist (d.h. wenn die Bedingung wahr ist), soll der Parameter Breite den Wert 500 bekommen, wenn andernfalls der Parameter Länge nicht kleiner als 900 ist (d.h. wenn die Bedingung falsch ist) soll der Parameter Breite den Wert 1000 bekommen.
Man könnte auch sagen: "Wenn die Länge kleiner als 900 ist, dann setze den Wert Breite auf 500, andernfalls setze den Wert Breite auf 1000."
if-Bedingung, verschachtelter Fall [Nested IF statements]
am Beispiel eines WERTEBEREICHS:
Es soll beispielsweise nur ein Werte-Bereich zwischen 2 Grenzwerten ausgegeben werden: In diesem Fall muss nach dem zweiten Beistrich die zweite if-Bedingung eingefügt werden:
if (Eingabe kleiner Min, Min, if (Eingabe größer Max, Max, Eingabe))
- Eingabe = Parameter für die User-Eingabe
- Min = Minimalwert
- Max = Maximalwert
Man könnte auch sagen: "Wenn die Eingabe kleiner als das Min ist, dann lege Min fest, anderfalls überprüfe, wenn die Eingabe größer als das Max ist, dann lege Max fest, andernfalls nimm die Eingabe."
Weitere Beispiele: help.Autodesk - Syntax für Bedingungsanweisungen
Ja/Nein-Bedingungen [Yes/No conditions]
Bsp.1: Länge größer 40
Bedeutet: das Ergebnis ist wahr (ein gesetzter Haken bei einem ja/nein-Parameter), wenn die Länge größer als 40 ist [Returns checked box (true) if Lenght > 40]
Das Ergebnis ist falsch (kein gesetzter Haken bei einem ja/nein-Parameter), wenn die Länge kleiner oder gleich 40 ist.
Bsp.2: Länge = 500
Bedeutet: das Ergebnis ist wahr (ein gesetzter Haken bei einem ja/nein-Parameter), wenn die Länge 500 ist.
Das Ergebnis ist falsch (kein gesetzter Haken bei einem ja/nein-Parameter), wenn die Länge nicht 500 ist.
Bsp.3: Länge kleiner gleich 1000
Weitere Beispiele: help.Autodesk - Festlegen von Ja/Nein Parametern
SIEHE weiter unten "kleiner-gleich", "größer-gleich"
Logische Operatoren [Conditional Operators]
"und" logischer Operator [logical AND]
if ( and (x = 1 , y = 2), wahr, falsch)
Aussage ist wahr (beispielsweise wird ein ja/nein-Parameter mit Haken belegt), wenn beide Aussagen wahr sind, also wenn x=1 UND y=2 [Returns true if both x=1 and y=2]
Sonst ist die Aussage falsch (beispielsweies wird ein ja/nein-Parameter nicht mit einem Haken belegt) [else false]
"oder" logischer Operator [logical OR]
if ( or ( x = 1 , y = 2 ), wahr, falsch)
Aussage ist wahr, wenn eine der beiden Aussagen wahr ist, also wenn x=1 ODER y=2 [Returns true if either x=1 or y=2]
Sonst ist die Aussage falsch [else false]
"not" Logischer Operator [logical NOT]
not (Sichtbar)
Tipp: könnte auch als "das Gegenteil von" betrachtet werden!
Ergebnis ist wahr (ein gesetzter Haken), wenn ja/nein-Parameter "Sichtbar" nicht wahr ist (kein Haken gesetzt ist) und umgekehrt
Returns checked box () if Yes/No parameter "Sichtbar" is unchecked, and returns unchecked box () if Yes/No parameter "Sichtbar" is checked.
"kleiner-gleich", "größer-gleich"
ACHTUNG: die Bedingungen "kleiner-gleich" und "größer-gleich" werden in Revit-Formeln nicht unterstützt. Stattdessen muss hier eine not-Bedingung angewendet werden!
Beispiel:
not (Breite größer 1000) ... bedeutet: Breite kleiner-gleich 1000, also das "Gegenteil" von Breite größer 1000
if, and, or gibt größten von 3 Werten zurück [IF AND OR Returning the greatest of three values]
Say you have these 3 length parameters, and want a fourth parameter to return the greates value/lenght of the 3:
Length A
Length B
Length C
Return Length (Returns the greatest of the three length parameters)
Return Length = if(and(or(Length A > Length B, Length A = Length B), or(Length A > Length C, Length A = Length C)), Length A, if(and(or(Length B > Length A, Length B = Length A), or(Length B > Length C, Length B = Length C)), Length B, if(and(or(Length C > Length A, Length C = Length A), or(Length C > Length B, Length C = Length B)), Length C, 0 mm)))
Another option is to use an extra "Calc" parameter, which is a bit more clumsy but also way easier and more manageable for us mortals.
Calc = if(Length A > Length B, Length A, Length B)
Return Length = if(Calc > Length C, Calc, Length C)
And a third option:
Return Length = if(A > D, if(A > C, if(A > B, A, B), if(B > C, B, C)), if(B > D, if(B > C, B, C), if(C > D, C, D)))
bekannt: a+b [Known: a+b]
c = sqrt(a ^ 2 + b ^ 2)
A = atan(a / b) ... atan = arcus tangens
B = atan(b / a)
bekannt: a+c [Known: a+c]
b = sqrt(c ^ 2 - a ^ 2)
A = asin(a / c)
B = acos(a / c)
bekannt: b+c [Known: b+c]
a = sqrt(c ^ 2 - b ^ 2)
A = acos(b / c)
B = asin(b / c)
bekannt: c + A [Known: c + A]
a = c * sin(A)
b = c * cos(A)
B = 90° - A
bekannt: c + B [Known: c + B]
a = c * cos(B)
b = c * sin(B)
A = 90° - B
bekannt: a + B [Known: a + B]
b = a * tan(B)
c = a / cos(B)
A = 90° - B
bekannt: b + A [Known: b + A]
a = b * tan(A)
c = b / cos(A)
B = 90° - A
bekannt: a + A [Known: a + A]
b = a / tan(A)
c = a / sin(A)
B = 90° - A
bekannt: b + B [Known: b + B]
a = b / tan(B)
c = b / sin(B)
A = 90° - B
Here's how to calculate the Segment length, the Chord Length, the Angle etc. (Image should speak for itself)
Values in formulas can be rounded up or down. For example, when riser height is calculated, one needs the function “round” to find the appropriate value.
runden [ROUND(x)]
The syntax for the round function is: round( number)
number is the number to round.
The round function returns a number rounded nearest to a whole number. It doesn’t take into consideration rounding direction (round up or down). If the number is (for example) from 24.5 to 24.9, the function rounds it to 25. If it is from 23.1 to 23.4, the function rounds it to 23.
Examples:
round ( 23.4) = 23
round ( 23.5) = 24
round ( 23.6) = 24
round (-23.4) = -23
round (-23.5) = -23
round (-23.6) = -24
abrunden [ROUNDDOWN(x)]
The syntax for the rounddown function is: rounddown (number)
number is the number to round down.
“x” is a unitless value that should return the smallest integral value less than or equal to x.
For example:
rounddown ( 23.0) = 23
rounddown ( 23.5) = 23
rounddown ( 23.9) = 23
rounddown (-23.0) = -23
rounddown (-23.5) = -24
rounddown (-23.9) = -24
aufrunden [ROUNDUP(x)]
The syntax for the roundup function is: roundup (number)
number is the number to round up.
“x” is a unitless value that should return the largest integral value greater than or equal to x.
For example:
roundup ( 23.0) = 23
roundup ( 23.5) = 24
roundup ( 23.9) = 24
roundup (-23.0) = -23
roundup (-23.5) = -23
roundup (-23.9) = -23
Note that when numbers such as 23.5 are rounded, they can result in either 23 or 24. To produce a stable result, for all the .5 cases, we round to the larger integer. That means that 23.5 is rounded to 24, while -23.5 to -23
