Expressions/de

Übersicht
Es ist möglich, Eigenschaften mit mathematischen Ausdrücken festzulegen. In der GUI enthalten Drehfelder oder Eingabefelder, die an Eigenschaften gebunden sind, ein blaues Symbol. Durch Klicken auf das Symbol oder durch Eingabe des Gleichheitszeichens wird der Ausdruckseditor für diese bestimmte Eigenschaft aufgerufen.

Ein FreeCAD Ausdruck ist ein mathematischer Ausdruck, der der Schreibweise für die unten beschriebenen mathematischen Standardoperatoren und -funktionen folgt. Zusätzlic kann der Ausdruck auf andere Eigenschaften verweisen und auch Bedingungen verwenden. An Zahlen in einem Ausdruck können eine optionale Einheit angehängt werden.

Zahlen können entweder ein Komma ',' oder einen Dezimalpunkt '.' zur Trennung der Ganzzahlen von Nachkommastellen verwenden. Wenn diese Trennung benutzt wird, muss danach mindestens eine Ziffer folgen. Daher sind die Ausdrücke 1.+2. und 1,+2, ungültig, aber 1.0+2.0 und 1,0+2,0 sind gültig.

Die Operatoren und Funktionen sind einheitenbezogen und erfordern gültige Kombinationen von Einheiten, falls verfügbar. Zum Beispiel ist 2mm + 4mm ein gültiger Ausdruck, während 2mm + 4 kein gültiger Ausdruck ist (der Grund dafür ist, dass ein Ausdruck wie 1in + 4 von Menschen höchstwahrscheinlich als 1in + 4in interpretiert wird, aber alle Einheiten werden intern in das SI System umgewandelt, und das System ist nicht in der Lage, dies zu erraten). Diese Einheiten werden derzeit erkannt.

Du kannst vorgegebene Konstanten und Funktionen verwenden.

Referenzierende Objekte
Du kannst auf ein Objekt über seinen oder über seine  verweisen. Im Falle einer muss es in doppelten  und  Symbolen eingeschlossen sein, wie z.B..

Du kannst auf jede numerische Eigenschaft dieses Objekts referenzieren. Um sich beispielsweise auf die Höhe eines Zylinders zu beziehen, kann oder  verwendet werden. Umlaute, wie (ä, ö, ü etc.) dürfen nicht verwendet werden.

Um auf Listenobjekte zu verweisen, lautet die Syntax oder. Wenn beispielsweise auf eine Beschränkung in einer Skizze verwiesen werden soll, geht man wie folgt vor: <>.Constraints[16]. Wenn du dich in derselben Skizze befindest, kann man den Namen weglassen und einfach Constraints[16]verwenden. Hinweis: Der Index beginnt mit 0, daher hat die Einschränkung 17 den Index 16.

Für weitere Informationen über das Referenzieren von Objekten siehe dieser Abschnitt.

Unterstützte Konstanten
Die folgenden Konstanten werden unterstützt:

Supported operators
Die folgenden Operatoren werden untertstützt:

Allgemeine mathematische Funktionen
Die nachfolgend aufgeführten mathematischen Funktionen sind verfügbar.

Mehrere Argumente zu einer Funktion können entweder durch ein Semikolon ';' oder ein Komma gefolgt von einem Leerzeichen ', ' getrennt werden. Im letzteren Fall wird das Komma nach der Eingabe in ein Semikolon umgewandelt. Wenn ein Semikolon verwendet wird, ist kein Leerzeichen am Ende des Semikolons erforderlich.

Trigonometrische Funktionen verwenden Grad als Standardeinheit. Für die Angabe im Bogenmaß wird rad nach dem ersten Wert in einem Ausdruck hinzugefügt. So ist z.B. cos(45) das gleiche, wie cos(pi rad / 4). Ausdrücke in Grad können entweder deg oder ° verwenden, z.B. 360deg - atan2(3; 4) or 360&deg; - atan2(3; 4). Ein Ausdruck, der ohne Einheiten angegeben ist und aus Kompatibilitätsgründen in Grad oder Bogenmaß umgewandelt werden muss, wird mit 1 deg, 1 ° oder 1 rad multipliziert, gegebenenfalls, z.B. (360 - X) * 1deg; (360 - X) * 1°; (0.5 + pi / 2) * 1rad. Folgende Trigonometrische Funktionen werden unterstützt:

Diese Exponential- oder Logarithmusfunktionen werden unterstützt:

Diese Funktionen für Rundung, Trunkierung und Modulo werden unterstützt:

Statistische / Aggregatfunktionen
Aggregatfunktion verwenden ein oder mehrere Argumente, getrennt durch einen Strichpunkt ';' oder ein Komma und ein Leerzeichen ', '. Die Argumente können Verweise auf Zellen in einer Kalkulationstabelle enthalten. Zellverweise bestehen aus dem Zeilenbuchstaben (nur Großbuchstaben), gefolgt von der Spaltennummer. Argumente können Zellbereiche (zwei durch einen Doppelpunkt getrennte Zellbezüge) enthalten, zum Beispiel Durchschnitt(B1:B8).

Diese Aggregatfunktionen werden unterstützt:

Bedingte Ausdrücke
Bedingte Ausdrücke haben die Form '''Bedingung ? ResultatWahr : ResultatFalsch'''. Die Bedingung ist definiert als ein Ausdruck, der entweder zu '0' (falsch) oder ungleich Null (wahr) ausgewertet wird. Beachte, dass das Einschließen des bedingten Ausdrucks in Klammern derzeit als Fehler angesehen wird.

Die folgenden Vergleichsoperatoren sind definiert:

Einheiten
Einheiten können direkt in Ausdrücken verwendet werden. Der Analysator (parser) verbindet sie mit dem vorherigen Wert. So ist '2mm' oder '2 mm' gültig, während ' mm' ungültig ist, weil es keinen vorhergehenden Wert gibt.

Alle Werte müssen eine Einheit haben. Daher müssen Werte auch in Kalkulationstabellen im allgemeinen eine Einheit haben. In einigen Fällen funktioniert es auch ohne Einheit, z.B. wenn Sie in Zelle B1 der Kalkulationstabelle z.B. nur die Zahl 1,5 haben und sich für eine Blockhöhe darauf beziehen. Dies funktioniert nur, weil die Blockhöhe die Einheit mm vordefiniert und die verwendet wird, wenn keine Einheit angegeben ist. Es schlägt jedoch fehl, wenn Sie für die Blockhöhe z.B. Sketch1.Constraints.Breite - Kalkulationstabelle.B1 verwenden, weil Sketch1.Constraints.Breite eine Einheit hat und Kalkulationstabelle.B1 keine Einheit.

Einheiten mit Exponenten können direkt eingegeben werden. So wird z.B. mm^3 als mm³ erkannt und m^3' wird als m³ erkannt.

Wenn eine Variable mit dem Namen einer Einheit verwendet wird, muß die Variable in << >> gesetzt werden. Das verhindert, dass die Variable als Einheit erkannt wird. Das Maß 'Sketch.Constraints.A' würde z.B. als Einheit Ampere erkannt werden. Daher muß der Ausdruck als 'Sketch.Constraints.<<>' geschrieben werden.

Die folgenden Einheiten werden vom Analysator für Ausdrücke erkannt:

Chemische Menge einer Substanz:

Winkel:

Strom:

Elektrische Kapazität:

Elektrische Leitfähigkeit:

Elektrische Induktivität:

Elektrischer Widerstand:

Elektrische Ladung:

Elektrisches Spannung:

Energie / Arbeit:

Kraft:

Länge:

Lichtstärke:

Magnetische Feldstärke (seit 1970 nicht mehr offiziell gültig):

Magnetischer Fluß:

Magnetische Flußdichte:

Masse:

Energie:

Druck:

Temperatur:

Zeit:

Torsion:

Volumen:

Imperiale Spezialeinheiten:

Die folgenden häufig verwendeten Einheiten werden noch nicht unterstützt:

Invalid characters and names
The expression feature is very powerful but to achieve this power it has some limitations concerning some characters. To overcome this, FreeCAD offers to use labels and reference them instead of the object names. In labels you can use almost all special characters.

In cases where you cannot use a label, like for example the name of a sketch constraints, you must be aware what characters are not allowed.

Labels
For labels there are no invalid characters, however some characters need to be escaped:

For example, the label Sketch\002 must be referenced as <>.

Names
Names of objects like dimensions, sketches, etc. may not have the characters or character sequences listed below, otherwise the name is invalid:

For example, the following name is valid: <>.Constraints.T2üßµ@. While these are invalid names: <>.Constraints.test\result_2 (\r means "carriage return") or <>.Constraints.mol (mol is a unit).

Since shorter names (especially if they have only one or two characters) can easily result in invalid names, consider using longer names and/or establishing a suitable naming convention.

Referenzen auf CAD-Daten
Angaben (Eigenschaften) von anderen Objekten der Baugruppe können in Ausdrücken verwendet werden. Die Syntax für eine Referenz auf ein Eigenschaftenfeld sieht wie folgt aus: "Objekt.Eigenschaft". Wenn sich die Eigenschaft aus einer Reihe von Feldern zusammensetzt, kann wie folgt darauf zugegriffen werden: "Object.Eigenschaft.Feldname".

Die folgende Tabelle zeigt einige Beispiele:

Dokumentweit gültige globale Variablen
Es gibt aktuell keine Infrastruktur für globale Variablen in FreeCAD. Stattdessen können beliebige Variablen als Zellwerte innerhalb einer Tabelle des Arbeitsbereiches Tabellenkalkulation (Spreadsheet) definiert werden und ihnen ein Name mittels der Alias-Eigenschaft für Zellen zugeordnet werden(Rechtsklick auf die Zelle). Danach können die Zellwerte in allen Rechenausdrücken verwendet werden, sie wie andere Eigenschaften von Objekten auch.

Dokumentübergreifende(r) Verknüpfung/Verweis
Es ist mit Einschränkungen möglich, eine Eigenschaft eines Objekts in einem aktuellen Dokument (".FCstd"-Datei) zu definieren, indem mit einem Ausdruck auf eine Eigenschaft eines Objekts verwiesen wird, das in einem anderen Dokument enthalten ist (".FCstd"-Datei). Beispielsweise kann eine Zelle in einer Kalkulationstabelle oder die Länge eines Würfels aus dem Arbeitsbereich Part, usw. in einem Dokument durch einen Ausdruck definiert werden, der beispielsweise auf den Wert X unter Placement oder eine andere Eigenschaft eines Objekts in einem anderen Dokument verweist.

Der Name des Dokuments wird verwendet, um von einem anderen Dokument aus darauf zu referenzieren. Wenn ein Dokument zum ersten Mal gespeichert wird, muss dem Dokument ein Name gegeben werden. Dies ist normalerweise ein anderer Name als die Vorgabe "Unbenannt1". Um zu verhindern, dass Veknüpfungen beim Speichern des Hauptdokumentes verloren gehen, wenn dieses dabei einen anderen Namen bekommt, sollte das Hauptdokument zuerst mit einer Kalkulationstabelle erstellt werden. Danach kann der Inhalt des Dokuments geändert und das Dokument gespeichert werden, aber es darf nicht umbenannt werden.

Sobald das Hauptdokument mit der Kalkulationstabelle erstellt und gespeichert (benannt) ist, können abhängige Dokumente erstellt werden. Angenommen, das Hauptdokument heißt "", die Kalkulationstabelle ist mit " benannt und einer Zelle wurde ein Alias-Namen "" gegeben (keine Umlaute ä,ö, ü etc.), dann kann auf den Wert in dieser Form zugegriffen werden:

Hinweis: das Hauptdokument muss geöffnet sein, damit die Werte im Hauptdokument für das abhängige Dokument verfügbar sind.

Leider erkennt der eingebaute Formelprüfer einen gültigen Namen manchmal nicht. Daher einfach mit der Eingabe fortfahren. Wenn die vollständige Verknüpfung eingegeben ist, wird die Schaltfläche aktiv.

Bei der Verwendung verknüpfter Dokumente ist der Benutzer dafür verantwortlich, dass alle Dokumente auch geöffnet sind, wenn irgendwelche Änderungen vorzunehmen sind.

Bekannte Probleme / Verbliebene Aufgaben

 * Das Abhängigkeitsdiagramm basiert auf der Beziehung zwischen Dokumentobjekten, nicht auf Eigenschaften. Das bedeutet, dass man nicht Daten einem Objekt zur Verfügung stellen kann und gleichzeitig Daten von diesem Objekt abfragt. Auch wenn es beispielsweise keine zyklischen Abhängigkeiten gibt, wenn die Eigenschaften selbst berücksichtigt werden, kann es vorkommen, dass es kein Objekt gibt, das seine Abmessungen aus einer Kalkulationstabelle erhält und dann das Volumen dieses Objekts in derselben Kalkulationstabelle anzeigt. Zur Umgehung des Problems können mehrere Tabellen angelegt werden: Eine Tabelle, die die Objektdaten zur Verfügung stellt und eine andere zur Datenauswertung.
 * Der Analysator für Ausdrucke kann mit Klammern nicht gut umgehen und ist nicht in der Lage einige Ausdrücke korrekt zu analysieren. Zum Beispiel "= (A1 > A2) ? 1 : 0" führt zu einem Fehler, während "= A1 > A2 ? 1 : 0" akzeptiert wird. Der Ausdruck "= 5 + ((A1>A2) ? 1 : 0)" kann in keiner Form eingegeben werden.
 * Wie oben erwähnt, erkennt der eingebaute Formelprüfer einen gültigen Namen manchmal nicht. Daher einfach mit der Eingabe fortfahren. Wenn die vollständige Verknüpfung eingegeben ist, wird die Schaltfläche aktiv.
 * Es gibt keinen Ausdrucksverwalter, mit dem Ausdrücke erstellt werden können, der alle vorhandenen Ausdrücke aufzeigt, löscht oder sucht etc.
 * Die Namen von Einschränkungen (constraints) im Skizzierer (Sketcher) dürfen keine Leerzeichen enthalten, wenn der Wert durch einen Ausdruck berechnet wird, siehe Forumsdiskussion.
 * Offene Fehler/Tickets für die Ausdrücke (Expressions) können hier nachgeschlagen werden: FreeCAD Bugtracker Expressions category