Ausdrücke

From FreeCAD Documentation
Revision as of 19:28, 5 February 2020 by Kunda1 (talk | contribs) (Created page with "Category:Screenshots/de")

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 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.)

You can use predefined constants and functions.

Referencing objects

You can reference to an object by its Name or by its Label. In the case of a Label, it must be enclosed in double << and >> symbols, such as <<Label>>.

You can reference any numerical property of this object. For example, to refer to a Cylinder's height, you may use Cylinder.Height or <<Long_name_of_cylinder>>.Height.

To reference list objects, the syntax is <<object_label>>.list[list_index] or object_name.list[list_index]. If you want for example reference a constraint in a sketch, do it this way <<MySketch>>.Constraints[16]. If you are in the same sketch you can omit its name and just use Constraints[16].
Note: The index starts with 0, therefore constraint 17 has the index 16.

For more info about referencing objects, see this section.


The following operators are supported:

Operator Description
+ Addition
- Subtraction
* Multiplication
/ Floating point Division
% Remainder
^ Exponentiation

Mehrere Argumente einer Funktion können entweder durch Semikolon (';') oder ein Komma gefolgt von einem Leerzeichen getrennt werden. Im letzteren Fall wird das Komma nach der Eingabe in ein Semikolon konvertiert. Wenn ein Semikolon verwendet wurde, ist kein nachfolgendes Leerzeichen erforderlich.

The following constants are supported:

Constant Description
e Euler's number
pi Pi

Unterstützte Funktionen

General Mathematical Functions

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

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 degree as their default unit. For radian measure, add rad following the first value in an expression. So e.g. cos(45) is the same as cos(pi rad / 4).
These trigonometric functions are supported:

Function Description Value range
acos(x) Arc cosine -1 <= x <= 1
asin(x) Arc sine -1 <= x <= 1
atan(x) Arc tangent all
atan2(x, y) Arc tangent of x/y all, except y = 0
cos(x) Cosine all
cosh(x) Hyperbolic cosine all
sin(x) Sine all
sinh(x) Hyperbolic sine all
tan(x) Tangent all, except of x = n·90 with n = integer
tanh(x) Hyperbolic tangent all

These functions for exponentiation and logarithmization are supported:

Function Description Value range
exp(x) Exponential function all
log(x) Natural logarithm x > 0
log10(x) Common logarithm x > 0
pow(x, y) Exponentiation all
sqrt(x) Square root x >= 0

These functions for rounding, truncation and remainder are supported:

Function Description Value range
abs(x) Absolute value all
ceil(x) Ceiling function smallest integer value greater than or equal to x all
floor(x) Floor function, largest integer value less than or equal to x all
mod(x, y) Remainder after dividing x by y all, except y = 0
round(x) Rounding to the nearest integer all
trunc(x) Truncation to the nearest integer all

Die Konstanten pi und e sind vordefiniert.

These aggregate functions are supported:

Function Description Value range
average(x:y) Arithmetic mean of values in cells x through y; sum(x:y) / count(x:y) all
count(x:y) Counting of cells from x through y all
max(x:y) Maximum value in cells x through y all
min(x:y) Minimum value in cells x through y all
stddev(x:y) Standard deviation of values in cells x through y all
sum(x: y) Sum of values in cells x through y all

Conditional Expressions

Bedingte Ausdrücke haben die Form Bedingung ? ResultatTrue : ResultatFalse

The following relational operators are defined:

Unit Description
== equal to
!= not equal to
> greater than
< less than
>= greater than or equal to
<= less than or equal to

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

Units can directly be used in expressions. The parser connects them to the previous value. So '2mm' or '2 mm' is valid while ' mm' is invalid because there is no preceding value.

All values must have a unit. Therefore you must in general use a unit for values in spreadsheets.
In some cases it works even without a unit, for example if you have e.g. in spreadsheet cell B1 just the number 1.5 and refer to it for a pad height. This only works because the pad height predefines the unit mm that is used if no unit is given. It will nevertheless fail if you use for the pad height e.g. Sketch1.Constraints.Width - Spreadsheet.B1 because Sketch1.Constraints.Width has a unit and Spreadsheet.B1 has not.

Units with exponents can directly be entered. So e.g. mm^3 will be recognized as mm³ and m^3 will be recognized as m³.

Trigonometrische Funktionen verwenden Grad als Standardeinheit; durch Hinzufügen von rad nach dem ersten Wert kann auch die Einheit Radiant in einem Ausdruck verwendet werden. Beispiel: cos(45) ist das Gleiche wie cos(pi rad / 4).

The following units are recognized by the expression parser:

Amount of substance:

Unit Description
mmol Millimole
mol Mole

Angle:

Unit Description
° Degree; alternative to the unit deg
deg Degree; alternative to the unit °
rad Radian
gon Gradian
S Second of arc
Second of arc; alternative to the unit S
M Minute of arc
Minute of arc; alternative to the unit M

Current:

Unit Description
mA Milliampere
A Ampere
kA Kiloampere
MA Megaampere

Electrical Capacitance:

Unit Description
pF Picofarad, introduced in version 0.19
nF Nanofarad, introduced in version 0.19
uF Microfarad; alternative to the unit µF, introduced in version 0.19
µF Microfarad; alternative to the unit uF, introduced in version 0.19
mF Millifarad, introduced in version 0.19
F Farad; 1 F = 1 s^4·A^2/m^2/kg, introduced in version 0.19

Electrical Conductance:

Unit Description
uS Microsiemens; alternative to the unit µS, introduced in version 0.19
µS Microsiemens; alternative to the unit uS, introduced in version 0.19
mS Millisiemens, introduced in version 0.19
S Siemens; 1 S = 1 s^3·A^2/kg/m^2, introduced in version 0.19

Electrical Inductance:

Unit Description
nH Nanohenry, introduced in version 0.19
uH Microhenry; alternative to the unit µH, introduced in version 0.19
µH Microhenry; alternative to the unit uH, introduced in version 0.19
mH Millihenry, introduced in version 0.19
H Henry; 1 H = 1 kg·m^2/s^2/A^2, introduced in version 0.19

Electrical Resistance:

Unit Description
Ohm Ohm; 1 Ohm = 1 kg·m^2/s^3/A^2, introduced in version 0.19
kOhm Kiloohm, introduced in version 0.19
MOhm Megaohm, introduced in version 0.19

Electric Charge:

Unit Description
C Coulomb; 1 C = 1 A·s, introduced in version 0.19

Electric Potential:

Unit Description
mV Millivolt
V Volt
kV Kilovolt

Energy / Work:

Unit Description
mJ Millijoule
J Joule
kJ Kilojoule, introduced in version 0.19
eV Electronvolt; 1 ev = 1.602176634e-19 J, introduced in version 0.19
keV Kiloelectronvolt, introduced in version 0.19
MeV Megaelectronvolt, introduced in version 0.19
kWh Kilowatt hour; 1 kWh = 3.6e6 J, introduced in version 0.19
Ws Watt second; alternative to the unit Joule
VAs Volt-ampere-second; alternative to the unit Joule
CV Coulomb-volt; alternative to the unit Joule
cal Calorie; 1 cal = 4.184 J, introduced in version 0.19
kcal Kilocalorie, introduced in version 0.19

Force:

Unit Description
mN Millinewton
N Newton
kN Kilonewton
MN Meganewton
lbf Pound of force

Length:

Unit Description
nm Nanometer
um Micrometer; alternative to the unit µm
µm Micrometer; alternative to the unit mu
mm Millimeter
cm Centimeter
mm Millimeter
dm Decimeter
m Meter
km Kilometer
mil Thousandth of an inch; alternative to the unit thou
thou Thousandth of an inch; alternative to the unit mil
in Inch
ft Foot; alternative to the unit '
' Foot; alternative to the unit ft
yd Yard
mi Mile

Luminous Intensity:

Unit Description
cd Candela

Magnetic Field Strength:

Unit Description
Oe Oersted; 1 Oe = 79.57747 A/m, introduced in version 0.19

Magnetic Flux:

Unit Description
Wb Weber; 1 Wb = 1 kg*m^2/s^2/A, introduced in version 0.19

Magnetic Flux Density:

Unit Description
G Gauss; 1 G = 1 e-4 T, introduced in version 0.19
T Tesla; 1 T = 1 kg/s^2/A, introduced in version 0.19

Mass:

Unit Description
ug Microgram; alternative to the unit µg
µg Microgram; alternative to the unit ug
mg Milligram
g Gram
kg Kilogram
t Tonne
oz Ounce
lb Pound; alternative to the unit lbm
lbm Pound; alternative to the unit lb
st Stone
cwt Hundredweight

Bedingte Ausdrücke

Pressure:

Unit Description
Pa Pascal
kPa Kilopascal
MPa Megapascal
GPa Gigapascal
mbar MilliBar, introduced in version 0.19
bar Bar, introduced in version 0.19
uTorr Microtorr; alternative to the unit µTorr
µTorr Microtorr; alternative to the unit uTorr
mTorr Millitorr
Torr Torr; 1 Torr = 133.32 Pa
psi Pound-force per square inch; 1 psi = 6.895 kPa
ksi Kilopound-force per square inch
Mpsi Megapound-force per square inch, introduced in version 0.19

Temperature:

Unit Description
uK Microkelvin; alternative to the unit µK
µK Microkelvin; alternative to the unit uK
mK Millikelvin
K Kelvin

Time:

Unit Description
s Second
min Minute
h Hour
Hz (1/s) Hertz, introduced in version 0.19
kHz Kilohertz, introduced in version 0.19
MHz Megahertz, introduced in version 0.19
GHz Gigahertz, introduced in version 0.19
THz Terahertz, introduced in version 0.19

Torque:

Unit Description
Nm Newton metre

Volume:

Unit Description
ml Milliliter, introduced in version 0.19
l Liter
cft Cubicfoot, introduced in version 0.19

Special imperial units:

Unit Description
mph Miles per hour, introduced in version 0.19
sqft Square foot, introduced in version 0.19

The following commonly used units are not yet supported:

Unit Description Alternative
°C Celsius [°C] + 273.15 K
°F Fahrenheit; ([°F] + 459.67) × ​5/9
u Atomic mass unit; alternative to the unit 'Da' 1.66053906660e-27 kg
Da Dalton; alternative to the unit 'u' 1.66053906660e-27 kg
sr Steradian not directly
lm Lumen not directly
lx Lux not directly

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 in einem Dokument aus einem anderen Dokument 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

master#modelConstants.Length

Note: that the master document must be loaded for the values in the master to be available to the dependent document.

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