Expressions/de

Seit der Version 0.16 ist es möglich, Modelleigenschaft durch Rechenformeln festzulegen und mit anderen Eigenschaften von der Benutzeroberfläche aus zu verknüpfen. Eingabefelder von Eigenschaften für Zahlen oder Größenangaben enthalten einen blauen Knopf. Wenn man auf dieses Symbol klickt oder das Gleichheitszeichen (=) eingibt, öffnet sich der Formeleditor für die entsprechende Eigenschaft.

Ein Rechenausdruck in FreeCAD ist ein mathematischer Ausdruck in der üblichen Schreibweise für die Standardrechenarten (+, -, *, and /) und mathematische Funktionen. (Siehe unten.) Zusätzlich können referenzierte Eigenschaften anderer Objekte und bedingte Ausdrücke verwendet werden. Zahlen in Rechenausdrücken können mit Einheiten verwendet werden.

Die Rechenarten und Funktionen verstehen sich auf Einheiten und erfordern deshalb bei der Verwendung von Einheiten zulässige Einheitenkombinationen. 2mm+4mm ist zum Beispiel ein zulässiger Rechenausdruck, während 2mm+4 nicht zulässig ist. (Der Grund dafür ist, das ein Ausdruck wie 1in + 4 von Menschen wohl als 1in + 4in interpretiert wird, das System dies jedoch nicht erraten kann, da alle Einheiten intern in das SI-System konvertiert werden.)

Unterstützte Funktionen
In den Rechenausdrücken werden die folgenden Funktionen mit einem oder zwei Argumenten unterstützt: abs, acos, asin, atan, atan2, cos, cosh, exp, log, log10, mod, pow, sin, sinh, sqrt, tan, tanh, ceil, floor, trunc und round.

Funktionen mit Mehrfachargumenten: min, max, count, sum, stddev, und average. Funktionen mit Mehrfachargumenten können mit einem oder einer ganzen Reihe von Argumenten aufgerufen werden, jeweils durch ein Komma oder Semikolon getrennt. Die Argumente können Bereiche (Zwei Zellreferenzen getrennt durch einen Doppelpunkt) enthalten, z.B =average(B1:B8). Dies wird als Liste der Werte B1, B2, ... B8 ausgewertet.

Trigonometrische Funktionen verwenden Grad als Standardeinheit. Durch Hinzufügen von "rad" kann auch die Einheit Radiant verwendet werden.

Die Konstanten pi und e sind vordefiniert.

Die bedingte Anweisung wird wie folgt benutzt: ''= Bedingung ? Wahr-Ergebnis : Falsch-Ergebnis''

Die Bedingung muss ein Ausdruck sein, der entweder 0 (für falsch) oder ungleich 0 für wahr ergibt. Die folgenden Vergleichsoperatoren stehen zur Verfügung: ==, !=, >, <, >=, und <=.

Formeln werden wie folgt eingegeben: 2 * Length, wobei "Length" eine Eigenschaft des Objektes ist, für das der Ausdruck gedacht ist.

Referenzen auf CAD-Daten
Größenangaben von anderen Elementen der Konstruktion können in Rechenausdrü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
There is no concept of global variables in FreeCAD at the moment. Instead, arbitrary variables can be defined as cells in a spreadsheet using the Spreadsheet workbench, and then be given a name using the alias property for the cell (right-click on cell). Then they can be accessed from any expression just as any other object property.

Cross-document linking
It's possible that you have a spreadsheet in one document and reference values from there in other documents.

Important note: You use a document's name to reference it from other documents. Now, when saving the document the first time you choose a certain file name and this is usually different to "Unnamed1" (or its translated version) and then the links are lost after reopening it. So, it's recommended to create first the master document, create a spreadsheet, save and close it. After reopening the name is set to the above file name. Afterwards you can still make changes and save the file but you shouldn't rename it.

Then create the further documents where you want to add expressions to. Assuming you named the master document "master" you can access an alias like this: master#Spreadsheet.Length

Unfortunately, the integrated checker is more confusing than helping because it always gives parser errors or claims that this or that doesn't exist. So, just continue on typing. When you are finished and the content is correct the OK suddenly becomes active.

Of course, it's up to you to load the corresponding documents later when you want to change anything.

Known issues / remaining tasks

 * The dependency graphs is based on the relationship between document objects, not properties. This means that you cannot provide data to and query the same object in e.g a spreadsheet, even though there are no cyclic dependency when just the properties are considered. As a work-around, use multiple spreadsheets, e.g one to drive your model, and one for reporting.
 * There is no expression manager implemented where all expressions in a document are listed, and can be created, deleted, queries, etc.
 * Open bugs/tickets for Expressions can be found in the FreeCAD Bugtracker Expressions category