Expressions/de: Difference between revisions

From FreeCAD Documentation
No edit summary
(Created page with "Die folgende Tabelle zeigt einige Beispiele: {|{{Prettytable}} !CAD-Daten !Aufruf im Rechenausdruck !Ergebnis |- |Parametrische Länge eines Quaders vom Arbeitsbereich Pa...")
Line 28: Line 28:
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.
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:
The following table shows some examples:
{|{{Prettytable}}
{|{{Prettytable}}
!CAD-Data
!CAD-Daten
!Aufruf im Rechenausdruck
!Call in expression
!Ergebnis
!Result
|-
|-
|Parametrische Länge eines Quaders vom Arbeitsbereich Part
|Parametric Length of a Part-Workbench Cube
|Cube.Length
|Cube.Length
|Length with units mm
|Länge mit der Einheit mm
|-
|-
|Volumen des Quaders
|Volume of the Cube
|Cube.Shape.Volume
|Cube.Shape.Volume
|Volume in mm³ without units
|Volumen in mm³ Ausgabe ohne Einheiten
|-
|-
|Typ des Quader-Shapess (geometrische Figur)
|Type of the Cube-shape
|Cube.Shape.ShapeType
|Cube.Shape.ShapeType
|String: Solid
|String: Solid
|-
|-
|Label of the Cube
|Label des Quader-Objekts
|Cube.Label
|Cube.Label
|String: Cube
|String: Cube
|-
|-
|x-Koordinate des Schwerpunktes des Quaders
|x-coordinate of center of mass of the Cube
|Cube.Shape.CenterOfMass.x
|Cube.Shape.CenterOfMass.x
|x-coordinate in mm without units
|x-Koordinate in mm ohne Einheiten
|-
|-
|Value of constraint in a sketch
|Wert einer Beschränkung in einer Skizze
|Constraints.Width
|Constraints.Breite
|Numerischer Wert der benannten Beschränkung 'Breite' in der Skizze
|Numeric value of the named constraint 'Width' in the sketch
|-
|-
|Wert eines Alias einer Kalkulationstabelle
|Value of a spreadsheet alias
|Spreadsheet.Depth
|Spreadsheet.Tiefe
|Value of the alias "Depth" in the spreadsheet "Spreadsheet"
|Wert des Alias "Tiefe" in der Kalkulationstabelle "Spreadsheet"
|-
|-
|Wert einer lokalen Eigenschaft des Objekts
|Value of a local property
|Length
|Length
|Value of the Length property in e.g a Pad object, if the expression is used in e.g Length2 in the same object.
|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.
|}
|}



Revision as of 23:13, 1 April 2018

eingeführt mit Version 0.16

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 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 (+, -, *, 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:

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

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