Ausdrücke
Seit der Version 0.16 ist es möglich, Modelleigenschaften 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 File:Sketcher Expressions.png. 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 (+, -, * und /) 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 einer optionalen Einheit versehen sein.
Numbers may use either a comma ',' or a decimal point '.' separating whole digits from decimals. When the decimal marker is used, it must be followed by at least one digit. Thus, the expressions 1.+2. and 1,+2, are invalid, but 1.0+2.0 and 1,0+2,0 are valid.
Die Konstanten pi und e sind vordefiniert und müssen kleingeschrieben 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
General Mathematical Functions
Trigonometrische Funktionen verwenden Grad als Standardeinheit. Durch Hinzufügen von "rad" kann auch die Einheit Radiant verwendet werden.
Multiple arguments to a function may be separated by either a semicolon (';') or a comma followed by a space (", "). In the latter case, the comma is converted to a semicolon after entry. When a semicolon is used, no trailing space is necessary.
Trigonometric functions use degrees as their default unit; for radian measure, add rad following the first value in an expression. Example: cos(45) is the same as cos(pi rad / 4).
Description: Ceiling
Returns: The smallest integer value greater than or equal to x introduced in version 0.16
Description: Floor
Returns: The largest integer value less than or equal to x introduced in version 0.16
Description:
Returns: x rounded to the nearest integer introduced in version 0.16
Description: Truncate
Returns: x truncated to the nearest integer introduced in version 0.16
Die Konstanten pi und e sind vordefiniert.
Description: Number of cells from x through y
Returns: The number of cells from x through y, inclusive
Description: Standard deviation of values in cells x through y
Returns: Standard deviation
Conditional Expressions
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 <=.
The condition is defined as an expression that evaluates to either 0 (false) or non-zero (true). The following comparison operators are defined: ==, !=, >, <, >=, and <=.
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:
CAD-Daten | Aufruf im Rechenausdruck | Ergebnis |
---|---|---|
Parametrische Länge eines Quaders vom Arbeitsbereich Part | Cube.Length | Länge mit der Einheit mm |
Volumen des Quaders | Cube.Shape.Volume | Volumen in mm³ Ausgabe ohne Einheiten |
Typ des Quader-Shapess (geometrische Figur) | Cube.Shape.ShapeType | String: Solid |
Label des Quader-Objekts | Cube.Label | String: Cube |
x-Koordinate des Schwerpunktes des Quaders | Cube.Shape.CenterOfMass.x | x-Koordinate in mm ohne Einheiten |
Wert einer Beschränkung in einer Skizze | Constraints.Breite | Numerischer Wert der benannten Beschränkung 'Breite' in der Skizze |
Wert eines Alias einer Kalkulationstabelle | Spreadsheet.Tiefe | Wert des Alias "Tiefe" in der Kalkulationstabelle "Spreadsheet" |
Wert einer lokalen Eigenschaft des Objekts | Length | Wert der Eigenschaft Length von z. B. einem Pad-Objekt, wenn es in dem Ausdruck z. B. in der Eigenschaft Length2 im gleichen Objekt benutzt wird. |
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 Verlinkung
Es ist möglich eine Tabelle der Tabellenkalkulation in einem Dokument zu haben und aus anderen Dokumenten auf Werte dieser Tabelle zu referenzieren.
Wichtiger Hinweis: Der Name des Dokuments muss angegeben werden, um es von einem anderen Dokument aus referenzieren zu können. Wenn ein Dokument nun zum ersten Mal gespeichert wird, muss dem Dokument ein Name gegeben werden, der normalerweise nicht "Unbenannt1" (oder eine anderssprachige Version) ist, und dann sind die Links beim erneuten Öffnen verloren. Deshalb ist es empfehlenswert zuerst das Stammdokument mit der Tabelle zu erstellen, zu speichern und zu schließen. Nach dem erneuten Öffnen wird der interne Name auf den Dateinamen gesetzt. Danach kann das Dokument geändert und gespeichert werden, aber es darf nicht umbenannt werden.
Danach können weitere Dokumente erstellt werden in denen entsprechende Rechenausdrücke eingesetzt werden. Angenommen, dass das Stammdokument "Stammdaten" genannt wurde, können Referenzen auf das Stammdokument wie folgt eingesetzt werden: Stammdaten#Spreadsheet.Length
Unglücklicherweise ist der eingebaute Formelprüfer mehr verwirrend als hilfreich, weil er immer wieder Interpretationsfehler meldet, dass dieses oder jenes nicht existiert. Daher einfach mit dem Eintippen fortfahren. Wenn man fertig ist und der Inhalt stimmt, dann wird plötzlich OK gemeldet.
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
- Der Abhängigkeitsgraph basiert auf der Beziehung zwischen Objekten des Dokuments und nicht auf Beziehungen zwischen Eigenschaften. Das bedeutet, dass man nicht Daten einem Objekt zur Verfügung stellen kann und gleichzeitig Daten von diesem Objekt abfragt, selbst wenn keine zyklische Verknüpfung auf Basis der Eigenschaften besteht. Zur Umgehung des Problems können mehrere Tabellen angelegt werden: Eine Tabelle, die die Objektdaten zur Verfügung stellt und eine andere zur Datenauswertung.
- Es gibt keinen Manager für Rechenausdrücke, mit dem alle vorhandenen Rechenausdrücke aufgelistet werden können oder sonst wie erstellt, gelöscht oder gesucht werden können.
- Offene Fehler/Tickets für die Rechenausdrücke (Expressions) können hier nachgeschlagen werden: FreeCAD Bugtracker Expressions category