zu Formeln -> Hilfe von Allplan
BNF-Beschreibung des Allplan Formelinterpreters
Der Allplan Formelinterpreter kann aus einem <Statement> Texte, Werte oder auch beides gleichzeitig evaluieren.
D.h. bei einem Statement „Länge*Höhe“ kann neben dem numerischen Ergebnis z.B. 7.50 auch ein textueller Ansatz „3.00*2,50“ ermittelt werden.
<statement> ::= <selection> | <expression>
<selection> ::= _IF_ ( <condition> ) <statement> { _ELSE_ <statement> }
<condition> ::= boolean_expression
<boolean_expresson > ::= <relation> { <OR> < relation > } |
<relation> { <AND> <relation > }
< relation > ::= { NOT } <expression> { <relation_operator> <expression> }
<NOT> ::= ‘! ‘
<OR> ::= ‘|‘ oder ‘||‘
<AND> ::= ‘&‘ | ‘&&‘
<relation_operator> ::= ‘>‘ | ‘<‘ | ‘><‘ | ‘<=‘ | ‘>=‘ | ‘=‘
<expression> ::= <term> { <add_operator> <term> }
<term> ::= <factor> { <mult_operator> <factor> }
<factor> ::= <primary> [ ^ <primary> ]
<add_operator> ::= ‘+‘ | ‘-‘
<mult_operator> ::= ‘*‘ | ‘/‘ | ‘%‘
<primary> ::= <value> | <report_value> | <attribute> | <function_call> | ( <expression> )
<value> := numeric_value | string_value
<numeric_value> ::= <integer> [ . <integer> ] [ E <integer> ]
<string_value> ::= „digit [ *|? ]“ (incl. Wildcards)
<attribute> ::= @<integer>@ (reference to all Allplan Attributes)
<report_value> ::= ‘SPALTE‘<integer> | ‘TABELLE‘<integer>
<function_call> ::= <math_function> | <dyn_function> | <CAD_function> |
<Excel_function> | <VB_Script_function>
<math_function> ::=
(‘ABS‘|‘SQRT‘|‘SQR‘|‘PI‘|LN‘|‘LOG‘|‘RCP‘|‘EXP‘|‘SGN‘|
‘SIN‘|‘COS‘|‘TAN‘|‘ASIN‘|‘ACOS‘|‘ATAN‘|‘SINH‘|‘COSH‘|‘TANH‘|
‘RAD‘|‘GRA‘|‘GON‘|‘RAG‘|‘NINT‘|‘INT‘|‘CEIL‘) ( <expression> )
<dyn_function> ::=
(‘AVG‘|‘MIN‘|‘MAX‘|‘FLAG‘) ( <expression> { ; <expression } |
‘ROUND‘ ( <expression> ; <integer> [ ; <integer>] ) |
‘VALUE‘ ( <string_value> [ ; <integer> ] ) |
‘MID‘ ( <expression> ; <integer> [ ; <integer>] )
<CAD_function> ::=
‘PARENT‘ ( <expression> ) |
‘CHILD‘ ( <statement> ) |
‘SUMME‘ (<expression>) |
(‘RQU_STWEIGHT‘|‘RQU_STNAME‘) ( <expression> [ ; <expression>]) |
(‘MT_Material‘|‘MT_Fenster‘|‘MT_Fenstertuer‘|‘MT_Dachfenster‘|‘MT_Tuer‘|
‘MT_Nische‘|‘MT_Wand‘|‘MT_Raum‘|‘MT_Stuetze‘) ( <statement> )
(‘MT_Boden‘|‘MT_Decke‘|‘MT_Seite ‘|‘MT_Leiste‘)
( <statement> ; <integer> [ ; <integer> ] )
<Excel_function> ::= function_name ( <statement> [ ; <statement> ] )
<VB_Script_function> ::= VB_function_name ( <statement> [ ; <statement> ] )
Arithmetische Operatoren
+
Addition
()
Klammer
-
Subtraktion
(())
geschachtelte Klammer
*
Multiplikation
e
10er Exponent der Fließkommadarstellung
/
Division
^
Potenz
Zugelassene Arithmetikfunktionen
Hinweis: Die beim Beschriftungsbild zugelassenen Arithmetikfunktionen unterscheiden sich von denen der Funktion Funktion zeichnen (Aufruf). Eine Übersicht finden Sie dort.
CloseRufen Sie Funktion zeichnen auf eine der folgenden Arten auf
Actionbar: Rolle Konstruktion Aufgabe Konstruieren Aufgabenbereich 2D-Objekte
Menüleiste: Erzeugen Erweiterte Konstruktion
Palette: Funktionen Bereich Erzeugen im Modul:
Erweiterte Konstruktion
Allplan
Math.
Erklärung
ABS(X)
|x|
Absoluter Wert
SQR(X)
SQRT(X)
Wurzel aus
PI(X)
PI
Funktion der Kreiszahl PI(2) = Kreiszahl PI * 2
LN(X)
ln x
Natürlicher Logarithmus (Basis e)
LOG(X)
log x
Logarithmus zur Basis 10
RCP(X)
1/x
Kehrwert von x
EXP(X)
ex
Exponentialfunktion mit Basis x
SGN(X)
-
Signum 0=0 <0=-1 >0=+1
SIN(X)
sin x
Sinus
COS(X)
cos x
Kosinus
TAN(X)
tan x
Tangens
ASIN(X)
arcsin x
Arcussinus
ACOS(X)
arccos x
Arcuscosinus
ATAN(X)
arctan x
Arcustangens
SINH(X)
sinh x
Sinushyperbolicus
COSH(X)
cosh x
Cosinushyperbolicus
TANH(X)
tanh x
Tangenshyperbolicus
NINT(X)
-
Rundung zur nächsten Ganzzahl
INT(X)
-
Zurückstufen zur nächst niedrigeren Ganzzahl
CEIL(X)
-
auf nächste Ganzzahl aufrunden
GRA(X)
-
Bogenmaß in GRAD
RAD(X)
Grad in Bogenmaß
GON(X)
-
Bogenmaß in GON
RAG(X)
GON in Bogenmaß
AVG(x1; x2; ..)
-
Mittelwert der max. 10 durch Strichpunkt getrennten Argumente (AVG(1;3)=2)
MIN(x1; x2; ..)
-
Minimum der max. 10 durch Strichpunkt getrennten Argumente (MIN(1;3)=1)
MAX(x1; x2; ..)
-
Maximum - der max. 10 durch Strichpunkt getrennten Argumente (MAX(1;3)=3)
FLAG(Value; bit[n];...)
-
Bietet eine Binäruntersuchung.
Beispiel:
Value = 25 --> Binär: 11001
FLAG(Value; 1) liefert 1, denn erste Flag von rechts ist gesetzt.
FLAG(Value; 2; 3) liefert 0, denn weder das zweite noch das dritte Flag von rechts sind gesetzt.
FLAG(Value; 3; 4) liefert 8, denn das vierte Flag ist gesetzt.
ROUND(X;x)
-
Runden einer beliebigen Zahl auf eine bestimmte Stellenanzahl
(ROUND(1.13333;2)=1,13)
ROUND(X;y;z)
-
Runden einer beliebigen Zahl (X) auf eine bestimmte Stellenanzahl (y) mit einer bestimmten Rundungsgenauigkeit (z) für die letzte Stelle
(ROUND(1.13333;2;5)=1,15)
ELE()
-
Filtert mehrere Zahlenwerte eines Attributs und liefert 0 oder 1 zurück
Beispiel:
ELE(Dicke;0,115;0,24;0,365)
erkennt alle Wände mit den angegebenen Dicken
VALUE(string;index)
-
Analog Excel:
Ermittelt beliebige Werte aus Texten
Beispiel:
STR_TEST = "Mein Haus hat 6 Zimmer und 2 Bäder"
VALUE(STR_TEST;1) + VALUE(STR_TEST;2) = 8
MID(Text;
Erstes_Zeichen;
Anzahl_Zeichen)
-
Analog Excel:
Gibt eine bestimmte Anzahl Zeichen einer Zeichenfolge ab einer bestimmten Stelle zurück
FORMAT(Formatstring; value1; [value<n>]; ....)
-
Dient zur formatierten Ausgabe von Werten
Beispiel:
FORMAT("B/H=%.2f / %.2f"; @220@; @222@)
liefert einen String
"B/H=1,55 / 2,03"
%.2f ist ein Platzhalter, der den Wert auf 2 Nachkommastellen rundet und an dieser Textstelle einfügt. Im Beispiel wird die Länge (@220@) in den ersten Platzhalter und die Höhe (@222@) in den zweiten Platzhalter mit je 2 Nachkommastellen eingefügt.
----------------------------------
Excel sollten alle Funktionen möglich sein, wenn Excel installiert ist.
----------------------------------
Gewünschtes verhalten mit der Indexuntersuchung sollte in einer Planlegende - kurz angetestet - ohne Probleme funktionieren. Dort kann auf schönere/intelligentere Weise die Anzeige der Indexzeilen geregelt werden.