Ausdrücke

From FreeCAD Documentation
Jump to navigation Jump to search
This page is a translated version of the page Expressions and the translation is 99% complete.
Outdated translations are marked like this.
Other languages:
Deutsch • ‎English • ‎español • ‎français • ‎italiano • ‎polski • ‎português do Brasil • ‎русский

Übersicht

Es ist möglich, Eigenschaften unter Verwendung von mathematischen Ausdrücken festzulegen. In der GUI enthalten Drehfelder oder Eingabefelder, die an Eigenschaften gebunden sind, ein blaues Symbol Bound-expression.svg. Klicken auf das Symbol oder Eingeben des Gleichheitszeichens = ruft den Ausdruckseditor für diese bestimmte Eigenschaft auf.

Ein FreeCAD Ausdruck ist ein mathematischer Ausdruck, der der Schreibweise für die unten beschriebenen mathematischen Standardoperatoren und -funktionen folgt. Außerdem kann der Ausdruck auf andere Eigenschaften verweisen und auch Konditionale verwenden. Zahlen in einem Ausdruck können eine optionalen Einheit angehängt bekommen.

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.

Operatoren und Funktionen sind einheitenbewusst 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.

Funktionsargumente

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.

Die Argumente können Verweise auf Zellen in einer Kalkulationstabelle enthalten. Ein Zellverweis besteht aus dem großen Zeilenbuchstaben der Zelle, gefolgt von ihrer Spaltennummer, zum Beispiel A1. Eine Zelle kann auch durch den Alias der Zelle referenziert werden, zum Beispiel Tabellenblatt.MeineTeilbreite.

Referenzierende Objekte

Du kannst auf ein Objekt über seinen Daten-EigenschaftNamen oder über seine Daten-EigenschaftBeschriftung verweisen. Im Falle einer Daten-EigenschaftBeschriftung muss es in doppelten Daten-Eigenschaft<< und Daten-Eigenschaft>> Symbolen eingeschlossen sein, wie z.B. Daten-Eigenschaft<<Beschriftung>>.

Du kannst auf jede numerische Eigenschaft eines Objekts referenzieren. Um sich beispielsweise auf die Höhe eines Zylinders zu beziehen, kann Zylinder.Hoehe oder <<Langer_Name_des_Zylinders>>.Hoehe verwendet werden.

Um auf Listenobjekte zu verweisen, verwende <<object_label>>.list[list_index] oder object_name.list[list_index]. Wenn du beispielsweise auf eine Beschränkung in einer Skizze verweisen möchtest, verwende <<MeineSkizze>>.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 Beschränkung 17 den Index 16.

Für weitere Informationen über das Referenzieren von Objekten siehe Referenz zu CAD Daten.

Unterstützte Konstanten

Die folgenden Konstanten werden unterstützt:

Konstante Beschreibung
e Eulersche Zahl
pi Kreiszahl

Unterstützte Operatoren

Die folgenden Operatoren werden untertstützt:

Operator Beschreibung
+ Addition
- Subtraktion
* Multiplikation
/ Fließkomma Division
% Division mit Rest
^ Potenz

Unterstützte Funktionen

Allgemeine mathematische Funktionen

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

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) oder 360° - 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:

Funktion Beschreibung Wertebereich
acos(x) arccos -1 <= x <= 1
asin(x) arcsin -1 <= x <= 1
atan(x) arctan alle
atan2(x; y) arctan2 von x/y alle, außer y = 0
cos(x) cos alle
cosh(x) cosh alle
sin(x) sin alle
sinh(x) sinh alle
tan(x) tan alle, außer x = n*90 mit n = uneven integer (ungerade Ganzzahlen)
tanh(x) tanh alle
hypot(x; y) Pythagoreische Addition (Hypotenuse), z.B. hypot(4; 3) = 5. x und y > 0
cath(x; y) Die gegebene Hypotenuse und eine Seite ergibt die andere Seite eines Dreiecks, z.B. cath(5; 3) = 4. x und y > 0, x >= y

Diese Exponential- oder Logarithmusfunktionen werden unterstützt:

Funktion Beschreibung Wertebereich
exp(x) Exponentialfunktion alle
log(x) Natürlicher Logarithmus x > 0
log10(x) Dekadischer Logarithmus x > 0
pow(x, y) Potenz (Mathematik) alle
sqrt(x) Quadratwurzel x >= 0

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

Funktion Beschreibung Wertebereich
abs(x) Betragsfunktion alle
ceil(x) Abrundungsfunktion, kleinster ganzzahliger Wert größer oder gleich x alle
floor(x) Aufrundungsfunktion, größter ganzzahliger Wert kleiner oder gleich x alle
mod(x, y) Division mit Rest nach einer Division x durch y alle, außer y = 0
round(x) Rundung auf die nächste Ganzzahl in Richtung Null alle
trunc(x) Trunkierung auf die nächste Ganzzahl (Kürzen auf einer Reihe oder Zahl auf eine gewisse Länge) alle

Statistische / Aggregatfunktionen

Aggregatfunktion verwenden ein oder mehrere Argumente.

Einzelne Argumente für Aggregatfunktionen können aus Zellbereichen bestehen. Ein Zellbereich wird durch zwei Zellbezüge ausgedrückt, die durch einen Doppelpunkt : getrennt sind, zum Beispiel Durchschnitt(B1:B8) oder Summe(A1:A4; B1:B4). Die Zellbezüge können auch Zell Aliase verwenden, zum Beispiel Durchschnitt(StartTemp:EndTemp).

Diese Aggregatfunktionen werden unterstützt:

Funktion Beschreibung Wertebereich
average(a; b; c; ...) Arithmetisches Mittel der Werte der Argumente; dasselbe, wie sum(a; b; c; ...) / count(a; b; c; ...) alle
count(a; b; c; ...) Zählen der Argumente; üblicherweise für Zellbereiche genutzt alle
max(a; b; c; ...) Extremwert (Maximum)-Werte der Argumente alle
min(a; b; c; ...) Minimum (Minimum)-Werten der Argumente alle
stddev(a; b; c; ...) Varianz (Stochastik) der Werten der Argumente alle
sum(a; b; c; ...) Summe der Werte der Argumente; üblicherweise für Zellbereiche genutzt alle

Zeichenkettenhandhabung

Zeichenkettenerkennung

Zeichenketten werden in Ausdrücken erkannt, indem sie in öffnende/schließende Winkel eingeschlossen werden (denn sie sind Beschriftungen).

Im folgenden Beispiel wird "TEXT" als eine Zeichenkette erkannt: <<TEXT>>

Zeichenkettenverkettung

Zeichenketten können durch das '+'-Zeichen aneinandergehängt werden.

Das folgende Beispiel <<MY>>+<<TEXT>> wird verbunden zu "MYTEXT".

Zeichenkettenformatierung

Zeichenkettenformatierung wird unterstützt durch die (alte) %-Form von Python.

Alle %-Spezifizierer wie in der (engl.) Python documentation definiert.

Du hast bspw. einen (wie in der Vorgabe) Würfel namens 'Box' (--FreeCAD-Standardbezeichnung--) mit 10mm-Kantenlänge und der folgende Ausdruck <<Würfellänge: %s>> % Box.Length wird erweitert zu "Würfellänge: 10.0 mm"

Eine Beschränkung ist, dass nur ein %-Spezifizierer in einer Zeichenkette ist, so dass du Zeichenketten verknüpfen musst, falls mehr als einer nötig ist. In der gleichen Situation wie oben wird der Ausdruck <<Würfellänge ist %s>> % Box.Length + << und Länge ist %s>> % Box.Width wird erweitert zu "Würfellänge ist 10.0 mm und Breite ist 10.0 mm".

Eine FreeCAD-Beispieldatei, die Zeichenkettenformatierung zeigt, ist unter im Forum verfügbar (engl.)

Funktion erstellen

Die folgenden Objekte können in Ausdrücken durch die create-Funktion erstellt werden:

  • Vektor
  • Matrix
  • Rotation
  • Positionierung

Die create-Funktion übergibt bei der Erstellung des Objekts weitere Argumente an den zugrunde liegenden Python-Konstruktor.

Verschiedene mathematische Operationen wie Multiplikation, Addition und Subtraktion werden durch standardmäßige mathematische Operatoren, wie z.B. *, +, - unterstützt.

Vektor

Wenn create <<vector>> als erstes Argument übergeben wird, sind die folgenden drei Argumente die X-, Y- und die Z-Koordinaten des Vectors.

Beispiel:

create(<<vector>>; 2; 1; 2)

Matrix

Wenn create <<matrix>> als erstes Argument übergeben wird, sind die folgenden 16 Argumente die Elemente der Matrix in row-major order.

Beispiel:

create(<<matrix>>; 1; 2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12; 13; 14; 15; 16)

Rotation

Wenn create <<rotation>> als erstes Argument übergeben wird, gibt es zwei Möglichkeiten, eine Rotation zu erstellen:

1. Einen Achsenvektor und einen Rotationswinkel angeben.

Beispiel:

create(<<rotation>>; create(<<vector>>; 0; 1; 0); 45)

2. Drei Rotationen über die X-, Y-, und Z-Achsen als Eulerwinkel angeben.

Beispiel:

create(<<rotation>>; 30; 30; 30)

Positionierung

Wenn create <<placement>> als erstes Argument übergeben wird, gibt es fünf Wege eine placement zu erstellen.

Diese möglichen Kombinationen werden in der Tabelle unten angezeigt und basieren auf der [1]-Seite.

Anzahl der Argumente Beschreibung
2 create(<<placement>>; Positionierung)
2 create(<<placement>>; Matrix)
3 create(<<placement>>; Basis; Rotation)
4 create(<<placement>>; Basis; Rotation; Mittelpunkt)
4 create(<<placement>>; Basis; Achse; Winkel)

Das folgende Beispiel zeigt die Syntax zur Erstellung einer Positionierung aus einem Basis-Vektor und einer Rotation:

create(<<placement>>; create(<<vector>>; 2; 1; 2); create(<<rotation>>; create(<<vector>>; 0; 1; 0); 45))

Vektoren und Rotationen können zur einfachen Lesbarkeit in einzelnen Zellen, auf die in Ausdrücken verwiesen werden kann, festgelegt werden.

Matrixfunktionen

mscale

Eine Matrix mit einem gegebenen Vector skalieren.

mscale(Matrix; Vector)

mscale(Matrix; x; y; z)

minvert

Die gegebene Matrix Matrix, Rotation, oder Placement invertieren.

minvert(Matrix)

minvert(Rotation)

minvert(Placement)

Tuple & Liste

Es kann ein Python tuple- oder ein Listen- Objekt über deren entsprechende Funktionen erstellt werden.

tuple(2; 1; 2)

list(2; 1; 2)

Bedingte Ausdrücke

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

Die folgenden Vergleichsoperatoren sind definiert:

Einheit Beschreibung
== gleich
!= ungleich
> größer als
< kleiner als
>= größer oder gleich
<= kleiner oder gleich

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, muss 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 muss der Ausdruck als Sketch.Constraints.<<A>> geschrieben werden.

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

Menge einer Substanz:

Einheit Beschreibung
mol Mol

Winkel:

Einheit Beschreibung
° Grad (Winkel); Alternative zur Einheit deg
deg Degree; Alternative zur Einheit °
rad Radian
gon Gradian
S Winkelsekunde; Alternative zur Einheit "
Winkelsekunde; Alternative zur Einheit S
M Winkelminute; Alternative zur Einheit '
Winkelminute; Alternative zur Einheit M

Strom:

Einheit Beschreibung
mA Milliampere
A Ampere
kA Kiloampere
MA Megaampere

Energie / Arbeit:

Einheit Beschreibung
J Joule
Ws Wattsekunde; Alternative zur Einheit Joule
VAs Voltamperesekunde; Alternative zur Einheit Joule
CV Coulombvolt; Alternative zur Einheit Joule

Kraft:

Einheit Beschreibung
mN Millinewton
N Newton
kN Kilonewton
MN Meganewton
lbf Pound-force

Länge:

Einheit Beschreibung
nm Nanometer
um Micro-Meter; Alternative zur Einheit µm
µm Micrometer; Alternative zur Einheit um
mm Millimeter
cm Zentimeter
dm Dezimeter
m Meter
km Kilometer
mil Thou (Abk. f. Thousandth of an inch); Alternative zur Einheit thou
thou Thou (Abk. f. Thousandth of an inch); Alternative zur Einheit mil
in Zoll (Einheit), in = inch, Alternative zur Einheit "
" Inch; Alternative zur Einheit in
ft Fuß (Einheit); Alternative zur Einheit '
' Fuß (Einheit); Alternative zur Einheit ft
yd Yard
mi Meile

Lichtstärke:

Einheit Beschreibung
cd Candela

Masse:

Einheit Beschreibung
ug Microgramm; Alternative zur Einheit µg
µg Microgramm; Alternative zur Einheit ug
mg Milligramm
g Gramm
kg Kilogramm
t Tonne (Einheit)
oz Unze
lb Pfund; Alternative zur Einheit lbm
lbm Pfund; Alternative zur Einheit lb
st Stone (Einheit)
cwt Hundredweight

Energie:

Einheit Beschreibung
W Watt(Einheit)
VA Voltampere

Druck:

Einheit Beschreibung
Pa Pascal (Einheit)
kPa Kilo-Pascal (Einheit)
MPa Mega-Pascal (Einheit)
GPa Giga-Pascal (Einheit)
uTorr Micro-Torr; Alternative zu Einheit µTorr
µTorr Micro-Torr; Alternative zu Einheit uTorr
mTorr Milli-Torr
Torr Torr; 1 Torr = 133.32 Pa
psi Pound-force per square inch; 1 psi = 6.895 kPa
ksi Kilo-Pound-force per square inch

Temperatur:

Einheit Beschreibung
uK Microkelvin; Alternative zur Einheit µK
µK Microkelvin; Alternative zur Einheit uK
mK Millikelvin
K Kelvin

Zeit:

Einheit Beschreibung
s Secunde
min Minute
h Stunde

Volumen:

Einheit Beschreibung
l Liter

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

Einheit Beschreibung Alternative
°C Grad Celsius [°C] + 273.15 K
°F Grad Fahrenheit; ([°F] + 459.67) × ​5/9
u Atomare Masseneinheit; Alternative zur Einheit Da (Dalton) = 1.66053906660e-27 kg
Da Dalton; Alternative zur Einheit u 1.66053906660e-27 kg
sr Steradiant nicht direkt
lm Lumen (Einheit) nicht direkt
lx Lux (Einheit) nicht direkt
px Pixel nicht direkt

Ungültige Zeichen und Namen

Das Ausdrucks-Feature ist sehr leistungsfähig. Um das zu ermöglichen gibt es ein paar Einschränkungen bei ein paar Zeichen. Als Abhilfe gibt es in FreeCAD die Möglichkeit anstatt der Objektnamen sog. Bezeichner ('labels') zu verwenden und sich auf diese zu beziehen.

In Fällen, in denen du keine Beschriftung verwenden kannst, wie z. B. der Name einer Skizzenbeschränkung, musst du dir bewusst sein, welche Zeichen nicht erlaubt sind.

Bezeichner

Für Bezeichner gibt es keine ungültigen Zeichen, jedoch müssen einige Zeichen maskiert werden:

Zeichen Beschreibung
', \, " Müssen durch das Voranstellen von \ maskiert werden.

Zum Beispiel muss der Bezeichner Skizze\002 als <<Skizze\002>> referenziert werden.

Namen

Namen von Objekten wie Dimensionen, Skizzen, usw. dürfen folgende Zeichen oder Zeichenfolgen nicht enthalten. Anderenfalls ist der Namen ungültig.

Zeichen / Zeichenfolgen Beschreibung
+, -, *, /, ^, _, <, >, (, ), {, }, [, ], ., ,, = Zeichen die mathematische Operatoren oder mathematische Konstruktionen sind.
A, kA, mA, MA, C, G, F, uF, µF, J, K, ' , ft , °, und viele andere! Zeichen oder Zeichenfolgen, die Einheiten sind.
#, !, ?, §, $, %, &, :, ;, \, |, ~, , ¿, und viele andere! Zeichen, die als Platzhalter verwendet werden oder die Funktionen auslösen.
pi, e Mathematische Konstanten
´, `, ' , " Akzente
Leerzeichen (Space) Ein Leerzeichen definiert das Ende eines Namens und kann daher nicht verwendet werden.

Beispielsweise ist folgender Name gültig: <<Sketch>>.Constraints.T2üßµ@. Hingegen sind diese ungültige Namen: <<Sketch>>.Constraints.test\result_2 (\r bedeutet "Wagenrücklauf (carriage return)") oder<<Sketch>>.Constraints.mol (mol ist eine Einheit).

Da kürzere Namen (vor allem, wenn sie nur ein oder zwei Zeichen haben) leicht zu ungültigen Namen führen können, sollte die Verwendung längerer Namen in Betracht gezogen und/oder eine geeignete Namenskonvention festgelegt werden.

Zell Aliase

Für Kalkulationstabelle SetzeAlias sind nur alphanumerische Zeichen und Unterstriche erlaubt (A bis Z, a bis z, 0 bis 9 und _).

Referenzen auf CAD Daten

Es ist möglich, Daten aus dem Modell selbst in einem Ausdruck zu verwenden. Um auf eine Eigenschaft zu verweisen, verwende object.property. Wenn die Eigenschaft ein Verbund von Feldern ist, kann auf die einzelnen Felder mit object.property.field zugegriffen werden.

Die folgende Tabelle zeigt einige Beispiele:

CAD-Daten Aufruf im Ausdruck Ergebnis
Parametrische Länge eines Quaders im Arbeitsbereich Part Cube.Length Length mit der Einheit mm
Volumen des Würfels Cube.Shape.Volume Volume in mm³ ohne Einheiten
Typ der Würfelform (geometrische Figur) Cube.Shape.ShapeType String: Solid
Bezeichnung des Würfels Cube.Label String: Label
X-Koordinate des Schwerpunktes des Würfels Cube.Shape.CenterOfMass.x X-Koordinate in mm ohne Einheiten
Wert der Beschränkung in einer Skizze Constraints.Width numerischer Wert der benannten Beschränkung "Width" (Breite) in der Skizze, wenn der Ausdruck in der Skizze selbst verwendet wird.
Wert der Beschränkung in einer Skizze MeineSkizze.Constraints.Width numerischer Wert der benannten Beschränkung Width in der Skizze, wenn der Ausdruck außerhalb der Skizze verwendet wird.
Wert eines Alias einer Kalkulationstabelle Spreadsheet.Depth Wert eines Alias "Depth" (Tiefe) in der Kalkulationstabelle Spreadsheet
Wert einer lokalen Eigenschaft eines Objekts Length Wert der Eigenschaft "Length" (Länge) z.B. in einem aufgepolsteren (Pad-) Objekt, wenn der Ausdruck z.B. in DatenLength2 im gleichen Objekt verwendet wird.

Dokumentweit gültige globale Variablen

In FreeCAD gibt es zur Zeit kein Konzept für globale Variablen. Stattdessen können beliebige Variablen mit Hilfe der Arbeitsbereich Kalkulationstabelle als Zellen in einer Kalkulationstabelle definiert werden und dann mit Hilfe der Alias Eigenschaft für die Zelle (Rechtsklick auf die Zelle) einen Namen erhalten. Dann kann von jedem Ausdruck aus auf sie zugegriffen werden, wie auf jede andere Objekteigenschaft auch.

Dokumentenübergreifende Verweise

Es ist (mit Begrenzungen) möglich, eine Eigenschaft eines Objekts in deinem aktuellen Dokument (".FCstd" Datei) durch Verwendung eines Ausdrucks zu definieren, um auf eine Eigenschaft eines Objekts in einem anderen Dokument zu verweisen (".FCstd" file). Zum Beispiel kann eine Zelle in einer Kalkulationstabelle oder die Daten-EigenschaftLänge eines Formteil Würfels usw. in einem Dokument durch einen Ausdruck definiert werden, der auf den X Platzierungswert 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 Verknü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 Mutterdokument mit der Kalkulationstabelle erstellt und gespeichert (benannt) ist, können abhängige Dokumente erstellt werden. Angenommen, du nennst das Mutterdokument master, die Kalkulationstabelle modelConstants und gibst einer Zelle einen Alias-Namen Length, dann kannst du auf den Wert zugreifen als:

master#modelConstants.Length

Hinweis: dass das Mutterdokument geladen sein muss, damit die Werte des Mutterdokuments für das abhängige Dokument verfügbar sind.

Leider meldet der integrierte Prüfer manchmal, dass ein gültiger Name nicht existiert. Tippe trotzdem weiter. Wenn du die vollständige Referenz eingegeben hast, wird die Schaltfläche OK aktiv.

Natürlich liegt es bei dir, die zugehörigen Dokumente später zu laden, wenn du etwas ändern willst.

Bekannte Probleme / Verbleibende 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 Ausdrücke kann mit Klammern nicht gut umgehen und ist nicht in der Lage, einige Ausdrücke korrekt zu analysieren. Zum Beispiel führt = (A1 > A2) ? 1 : 0 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 OK aktiv.
  • FreeCAD hat bisher keinen eingebauten Ausdrucksverwalter, mit dem alle Ausdrücke in einem Dokument aufgeführt und erstellt, gelöscht, abgefragt, etc. werden können. Aber es ist ein Addon verfügbar: fcxref expression manager.
  • Offene Fehler/Tickets für die Ausdrücke (Expressions) können hier nachgeschlagen werden: FreeCAD Bugtracker Expressions category