Wyrażenia

From FreeCAD Documentation
This page is a translated version of the page Expressions and the translation is 100% complete.

Informacje ogólne

Możliwe jest definiowanie właściwości za pomocą wyrażeń matematycznych. W GUI, pola wyboru lub pola wejściowe, które są powiązane z właściwościami pokazują niebieską ikonę , gdy są aktywowane. Kliknięcie ikony lub wpisanie znaku równości = otwiera edytor wyrażeń dla danej właściwości. Jeśli pole wejściowe pokazuje przycisk ... zamiast ikony, edytor wyrażeń można otworzyć, klikając właściwość prawym przyciskiem myszy i wybierając Wyrażenie ... z menu podręcznego.

Wyrażenie FreeCAD jest wyrażeniem matematycznym zgodnym z notacją dla standardowych operatorów matematycznych, funkcji oraz predefiniowanych stałych opisanych poniżej. Dodatkowo, wyrażenie może odwoływać się do innych wyrażeń warunkowych, a także używać warunków. Liczby w wyrażeniu mogą mieć opcjonalnie dołączoną jednostkę.

W liczbach można używać przecinka , lub kropki dziesiętnej . oddzielającej całe cyfry od części dziesiętnych. Gdy używany jest przecinek, po nim musi następować co najmniej jedna cyfra. Zatem wyrażenia 1.+2. i 1,+2, są nieprawidłowe, ale 1.0 + 2.0 i 1,0 + 2,0 są już poprawne.

Operatory i funkcje są świadome jednostek i wymagają poprawnych kombinacji jednostek, jeśli zostały podane. Na przykład, 2mm + 4mm jest poprawnym wyrażeniem, podczas gdy 2mm + 4. Dotyczy to również odwołań do właściwości obiektu, które mają jednostki, takie jak właściwości Długości. Tak więc Pad001.Length + 1 jest wyrażeniem nieprawidłowym, ponieważ dodaje czystą liczbę do właściwości z jednostkami długości, konieczne jest użycie Pad001.Length + 1mm.

Niektóre błędy związane z jednostkami mogą wydawać się nieintuicyjne, z wyrażeniami albo są odrzucane, albo dają wyniki, które nie pasują do jednostek ustawianej właściwości. Oto kilka przykładów:

1/2mm nie jest interpretowany jako pół milimetra, ale jako 1/(2mm), co daje: 0,5 mm^-1.

sqrt(2)mm nie jest prawidłowe, ponieważ wywołanie funkcji nie jest liczbą. Należy to wprowadzić jako sqrt(2) * 1mm.

Argumenty funkcji

Wiele argumentów funkcji może być oddzielonych średnikiem ; albo przecinkiem, po którym następuje spacja , . W tym drugim przypadku, po wprowadzeniu przecinek jest konwertowany na średnik. Gdy używany jest średnik, spacja nie jest wymagana.

Argumenty mogą zawierać odwołania do komórek w arkuszu kalkulacyjnym. Odwołanie do komórki składa się z wielkiej litery wiersza, po której następuje numer kolumny, na przykład A1. Można też odwołać się do komórki, używając jej aliasu, na przykład Arkusz_kalkulacyjny.DługośćCzęści.

Odwołania do obiektów

Jak pokazano powyżej, można odwoływać się do obiektu poprzez jego DANENazwa. Ale można również użyć jego DANEEtykiety. W przypadku właściwości DANEEtykieta, musi ona być zamknięta w podwójnych symbolach << i >>, na przykład <<Etykieta>>.

Można odwołać się do dowolnej właściwości obiektu. Na przykład, aby odwołać się do wysokości bryły walca, możesz użyć właściwości Cylinder.Height lub <<Etykieta_walca>>.Height.

Więcej informacji na temat odwoływania się do obiektów znajdziesz w akapicie Odwołanie do danych CAD.

Przewiń na górę strony

Obsługiwane stałe

Obsługiwane są następujące stałe:

Nazwa stałej Opis
e Liczba Eulera
pi Pi

Przewiń na górę strony

Obsługiwane operatory

Obsługiwane są następujące operatory:

Operator Opis
+ Dodawanie
- Odejmowanie
* Mnożenie
/ Dzielenie zmiennoprzecinkowe
% Modulo
^ Potęgowanie

Przewiń na górę strony

Obsługiwane funkcje

Ogólne funkcje matematyczne

Obsługiwane są następujące funkcje matematyczne:

Funkcje trygonometryczne

Funkcje trygonometryczne używają stopnia jako domyślnej jednostki. W przypadku miary radianowej, dodaj nazwę jednostki rad za pierwszą wartością w wyrażeniu. Tak więc np. cos(45) jest tym samym co cos(pi rad / 4). W wyrażeniach w stopniach można używać albo nazwę jednostki deg albo symbol jednostki °, np. 360deg - atan2(3; 4) lub 360° - atan2(3; 4). Jeśli wyrażenie nie ma jednostek i musi być przeliczone na stopnie lub radiany dla zgodności, pomnóż je przez 1deg, lub 1rad, odpowiednio, np. (360 - X) * 1deg; (360 - X) * 1°; (0,5 + pi / 2) * 1rad.

Funkcja Opis Zakres wprowadzanych wartości
acos(x) Arc cosine -1 <= x <= 1
asin(x) Arc sine -1 <= x <= 1
atan(x) Arc tangent, zwraca wartość w zakresie > -90° do < 90° cały
atan2(y; x) Arc tangent z "y/x" z uwzględnieniem kwadrantu, zwraca wartość w zakresie > -180° do <= 180° cały, nieprawidłowe dane wejściowe x = y = 0, zwracają 0
cos(x) Cosine cały
cosh(x) Hyperbolic cosine cały
sin(x) Sine cały
sinh(x) Hyperbolic sine cały
tan(x) Tangent cały, z wyjątkiem x = n*90 przy n = nieparzysta liczba całkowita
tanh(x) Hyperbolic tangent cały
hypot(x; y) dodatek Pitagorejski (hypotenuse). Np. hypot(4; 3) = 5. x oraz y >= 0
cath(x; y) Biorąc pod uwagę przeciwprostokątną i jeden bok, zwraca drugi bok trójkąta. Np. cath(5; 3) = 4. x oraz x >= y >= 0

Funkcje wykładnicze i logarytmiczne

Funkcja Opis Zakres wprowadzanych wartości
exp(x) Funkcja wykładnicza cały
log(x) Logarytm naturalny x > 0
log10(x) Logarytm dziesiętny x > 0
pow(x; y) Potęgowanie cały
sqrt(x) Pierwiastek kwadratowy x >= 0
cbrt(x) dostępne w wersji 0.21 Pierwiastek sześcienny cały

Funkcje zaokrąglania, obcinania i reszty

Funkcja Opis Zakres wprowadzanych wartości
abs(x) Wartość bezwzględna cały
ceil(x) Funkcja sufitu, najmniejsza wartość całkowita większa lub równa x cały
floor(x) Funkcja podłogi, największa wartość całkowita mniejsza lub równa x cały
mod(x; y) Reszta po podzieleniu "'x'" przez "'y', znak wyniku to znak dywidendy. cały, z wyjątkiem y = 0
round(x) Zaokrąglanie do najbliższej liczby całkowitej cały
trunc(x) Obcinanie do najbliższej liczby całkowitej w kierunku zera cały

Przewiń na górę strony

Funkcje statystyczne / agregujące

Funkcje agregujące przyjmują jeden lub więcej argumentów.

Poszczególne argumenty funkcji agregujących mogą składać się z zakresów komórek. Zakres komórek jest wyrażony jako dwa odwołania do komórek oddzielone dwukropkiem :, na przykład average(B1:B8) lub sum(A1:A4; B1:B4). Odwołania do komórek mogą również wykorzystywać aliasy komórek, na przykład average(StartTemp:KoniecTemp).

Obsługiwane są następujące funkcje agregacji:

Funkcja Opis Zakres wprowadzanych wartości
average(a; b; c; ...) Średnia wartość argumentów, tak samo jak sum(a; b; c; ...) / count(a; b; c; ...) cały
count(a; b; c; ...) Zlicz wartość argumentów, zwykle używane dla zakresów komórek cały
max(a; b; c; ...) Maksimum wartość argumentów cały
min(a; b; c; ...) Minimum wartość argumentów cały
stddev(a; b; c; ...) Odchylenie standardowe wartości argumentów cały
sum(a; b; c; ...) Suma wartości argumentów, typowo stosowane dla zakresów komórek cały

Przewiń na górę strony

Operacje na ciągach znaków

Rozpoznawanie łańcucha znaków

Łańcuchy są identyfikowane w wyrażeniach przez otoczenie ich podwójnymi daszkami otwierającymi/zamykającymi (podobnie jak etykiety).

W poniższym przykładzie "TEXT" jest rozpoznawany jako ciąg znaków : <<TEXT>>.

Łączenie łańcuchów znaków

Łańcuchy mogą być sumowane przy użyciu znaku +.

Na przykład <<Mój>> + <<TEKST>> będzie złączone do "MójTEKST".

konwersja łańcuchów znaków

Wartości numeryczne można konwertować na ciągi za pomocą funkcji str:

str(Box.Length.Value)

Formatowanie łańcucha znaków

Formatowanie ciągów jest obsługiwane za pomocą (starego) sposobu środowiska Python w %-styl.

Wszystkie specyfikatory % są zdefiniowane w dokumentacji środowiska Python.

Na przykład, zakładając, że masz sześcian o domyślnej długości boków 10mm o nazwie "Sześcian" (domyślne nazewnictwo FreeCAD), następujące wyrażenie <<Długość sześcianu: %s>> % Box.Length zostanie rozwinięte do "Długość sześcianu: 10.0mm".

Dla więcej niż jednego specyfikatora % należy użyć następującej składni: <<długość sześcianu to %s, a szerokość to %s>> % tuple(Box.Length; Box.Width). Można też użyć operacji łączenia: <<Długość sześcianu wynosi %s>> % Box.Length + << a szerokość wynosi %s>> % Box.Width zostanie rozwinięte do "Długość sześcianu wynosi 10.0 mm a szerokość 10.0 mm".

Na forum dostępny jest przykładowy plik FreeCAD wykorzystujący formatowanie ciągów znaków.

Przewiń na górę strony

Funkcje tworzenia obiektów

W wyrażeniach można tworzyć następujące obiekty za pomocą następujących funkcji:

Typ Funkcja Opis
Tuple tuple(a; b; ...) Przykład: tuple(2; 1; 2)
List list(a; b; ...) Przykład: list(2; 1; 2)
Vector vector(x; y; z) Utwórz wektor używając trzech wartości jednostkowych bez jednostek lub Długości.

Przykład: vector(2; 1; 3)

create(<<vector>>; x; y; z)
Matrix
matrix(
  a11; a12; a13; a14;
  a21; a22; a23; a24;
  a31; a32; a33; a34;
  a41; a42; a43; a44
)
Create a 4x4 matrix in row-major order:

Można podać minimum 1 argument, np. matrix(1), który tworzy macierz tożsamości.

Przykład: matrix(1; 2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12; 13; 14; 15; 16)

create(<<matrix>>; a11; a12; ...; a44)
Rotation rotation(axis; angle) Utwórz Rotation określając jego axis. (Vector) i angle (Angle jednostkowy lub bezjednostkowy), lub trzy kąty Eulera. α, β, γ.

Przykład:

  • rotation(vector(0; 1; 0); 45)
  • create(<<rotation>>; 30; 30; 30)
rotation(α; β; γ)
create(<<rotation>>; axis; angle)
create(<<rotation>>; α; β; γ)
Placement placement(base; rotation) Utwórz Placement z różnymi parametrami, w tym:
  • base: położenie podstawowe (Vector)
  • center: położenie środka (Vector)
  • rotation: Rotation
  • axis: oś obrotu (Vector)
  • angle: kąt obrotu (unit-less or Angle unit value)
  • matrix: Matrix

Przykład:

  • placement(vector(2; 1; 3); rotation(vector(0; 0; 1); 45))
  • create(<<placement>>; create(<<vector>>; 2; 1; 2); create(<<rotation>>; create(<<vector>>; 0; 1; 0); 45))
placement(base; rotation; center)
placement(base; axis; angle)
placement(matrix)
create(<<placement>>; ...)

Przewiń na górę strony

Funkcje wektorów

Funkcje: dostępne w wersji 1.0.

Funkcja / Operator Opis
v1 + v2 Dodaj dwa wektory.
v1 - v2 Odejmowanie dwóch wektorów.
v * s Jednolite skalowanie wektora przez s.
vangle(v1; v2) Kąt między dwoma wektorami w stopniach.
vcross(v1; v2) Iloczyn krzyżowy dwóch wektorów .
v1 * v2 Iloczyn kropkowy dwóch wektorów .
vdot(v1; v2)
vlinedist(v1, v2, v3) Odległość między wektorem v1 a linią przechodzącą przez v2 w kierunku v3.
vlinesegdist(v1; v2; v3) Odległość między wektorem v1 a najbliższym punktem na odcinku linii od v2 do v3.
vlineproj(v1; v2; v3) Rzutuj wektor v1 na linię przechodzącą przez v2 w kierunku v3.
vnormalize(v) Normalizuje wektor do wektora jednostkowego.
vplanedist(v1) Odległość między wektorem v1 a płaszczyzną zdefiniowaną przez punkt v2 i normalną v3.
vplaneproj(v1) Rzutuje wektor v1 na płaszczyznę zdefiniowaną przez punkt v2 i normalną v3.
vscale(v; sx; sy; sz) Niejednolite skalowanie wektora przez sx w kierunku X, sy w kierunku Y i sz w kierunku Z.
vscalex(v; sx)
vscaley(v; sy)
vscalez(v; sz)

Przewiń na górę strony

Funkcje macierzy

Rotation oraz Placement może być reprezentowana przez Matrix. Poniższe funkcje przyjmują Matrix, Rotation lub Placement jako pierwszy parametr, oznaczony w poniższej tabeli przez m. Typ zwracanego obiektu jest taki sam jak obiekt podany w pierwszym argumencie, z wyjątkiem użycia mtranslate na Rotation, w którym to przypadku zwrócony zostanie Placement.

Funkcja Opis
minvert(m) Oblicz Inverse matrix.
mrotate(m; rotation) Rotate przez:
  • Rotation
  • oś (Vector) i kąt (Angle jednostkowy lub bezjednostkowy)
  • trzy kąty Eulera α, β, γ
mrotate(m; axis; angle)
mrotate(m; α; β; γ)
mrotatex(m; angle) Rotate wokół osi X.
mrotatey(m; angle) Rotate wokół osi Y.
mrotatez(m; angle) Rotate wokół osi Z.
mtranslate(m; vector) Przekształć za pomocą vector (Vector) lub wartości X, Y, Z. Jeśli przekształcenie dotyczy Rotation, zwróconym obiektem jest Placement.
mtranslate(m; x; y; z)
mscale(m; vector) Skaluj za pomocą vector (Vector) lub wartości X, Y, Z.
mscale(m; x; y; z)

Przewiń na górę strony

Wyrażenia warunkowe

Wyrażenia warunkowe mają postać condition ? resultTrue : resultFalse. Warunek jest zdefiniowany jako wyrażenie, które oblicza się albo jako 0 Fałsz lub niezerowe Prawda.

Zdefiniowane są następujące operatory relacyjne:

Operator Opis
== jest równy
!= nie jest równy
> większy niż
< mniejszy niż
>= większy lub równy
<= mniejszy lub równy

Przewiń na górę strony

Jednostki

Jednostki mogą być używane bezpośrednio w wyrażeniach. Parser łączy je z poprzedzającą wartością. Tak więc wartość 2mm lub 2 mm jest zapisana poprawne, podczas gdy mm jest niepoprawna, ponieważ nie ma poprzedzającego określenia wielkości / ilości.

Wszystkie wartości muszą mieć swoją jednostkę. Dlatego musisz generalnie używać jednostki dla wartości w arkuszach kalkulacyjnych.
W niektórych przypadkach działa to nawet bez jednostki, na przykład jeśli masz np. w komórce B1 arkusza kalkulacyjnego tylko liczbę 1.5 i odnosisz się do niej jako do wysokości wyciągnięcia. Działa to tylko dlatego, że wysokość wyciągnięcia określa wstępnie jednostkę mm, która jest używana, jeśli nie podano jednostki. Nie powiedzie się jednak, jeśli jako wysokości wyciągnięcia użyjesz np. Szkic1.Constraints.Width - Arkusz_kalkulacyjny.B1, ponieważ Szkic1.Constraints.Width ma określoną jednostkę, a Arkusz_kalkulacyjny.B1 nie.

Jednostki z wykładnikami mogą być wprowadzane bezpośrednio. Tak więc np. mm^3 zostanie rozpoznane jako mm³, a m^3 jako .

Jeśli masz zmienną, której nazwa jest jednostką, musisz umieścić ją pomiędzy << >>, aby zapobiec rozpoznaniu jej jako jednostki. Na przykład, jeśli masz wymiar Szkic.Constraints.A to zostałby on rozpoznany jako jednostka ampera. Dlatego musisz zapisać go w wyrażeniu jako Szkic.Constraints.<<A>>.

Parser wyrażeń rozpoznaje następujące jednostki:

Ilość materii

Jednostka Opis
mmol MilliMasa molowa
mol Mol

Kąt

Jednostka Opis
° Stopień; alternatywa dla jednostki deg
deg Stopień; alternatywa dla jednostki °
rad Radian
gon Gradian
S Sekunda kątowa, alternatywa dla jednostki ″
Sekunda kątowa, alternatywa dla jednostki S
M Minuta kątowa, alternatywa dla jednostki '
Minuta kątowa; alternatywa dla jednostki M

Prąd

Jednostka Opis
mA Milliamper
A Amper
kA Kiloamper
MA Megaamper

Pojemność elektryczna

Pojemność elektryczna:

Jednostka Opis
pF Pikofarad,
nF Nanofarad,
uF Mikrofarad; alternatywa dla jednostki µF,
µF Mikrofarad; alternatywa dla jednostki uF,
mF Millifarad,
F Farad; 1 F = 1 s^4·A^2/m^2/kg,

Ładunek elektryczny

Ładunek elektryczny:

Jednostka Opis
C Kolumb; 1 C = 1 A·s

Przewodnictwo elektryczne

Jednostka Opis
uS Microsiemens; alternatywa dla jednostki µS
µS Microsiemens; alternatywa dla jednostki uS
mS Millisiemens
S Siemens; 1 S = 1 s^3·A^2/kg/m^2
kS KiloSiemens
MS MegaSiemens

Indukcyjność elektryczna

Indukcyjność elektryczna:

Jednostka Opis
nH Nanohenr,
uH Mikrohenr; alternatywa dla jednostki µH,
µH Mikrohenr; alternatywa dla jednostki uH,
mH Millihenr, H [v Henry]; 1 H = 1 kg·m^2/s^2/A^2,

Potencjał elektryczny

Potencjał elektryczny:

Jednostka Opis
mV Milliwolt
V Wolt
kV Kilowolt

Opór elektryczny

Rezystancja elektryczna:

Jednostka Opis
Ohm Om; 1 Ohm = 1 kg·m^2/s^3/A^2,
kOhm Kiloom,
MOhm Megaom,

Energia / praca

Jednostka Opis
mJ MilliDżul
J Dżul
kJ KiloDżul
eV Elektronowolt, 1 eV = 1.602176634e-19 J
keV KiloElektronowolt
MeV MegaElektronowolt
kWh Kilowatogodzina, 1 kWh = 3.6e6 J
Ws Watosekunda, alternatywa dla jednostki Dżul
VAs Woltoamperosekunda, alternatywa dla jednostki Dżul
CV Kulomb-wolt, alternatywa dla jednostki Dżul
cal Kaloria, 1 cal = 4.184 J
kcal KiloKaloria

Siła

Jednostka Opis
mN Milliniuton
N Niuton
kN Kiloniuton
MN Meganiuton
lbf Funt-siła

Długość

Jednostka Opis
nm Nanometr
mu Micrometr, alternatywa dla jednostki µm
µm Micrometr, alternatywa dla jednostki mu
mm Millimetr
cm Centimetr
dm Decimetr
m Metr
km Kilometr
mil Tysięczne części cala, alternatywa dla jednostki thou
thou Tysięczne części cala, alternatywa dla jednostki mil
in Cal, alternatywa dla jednostki "
" Cal, alternatywa dla jednostki in
ft Stopa, alternatywa dla jednostki '
' Stopa, alternatywa dla jednostki ft
yd Jard
mi Mila

Natężenie światła

Jednostka Opis
cd Kandela

Strumień magnetyczny

Strumień magnetyczny:

Jednostka Opis
Wb Weber; 1 Wb = 1 kg*m^2/s^2/A,

Gęstość strumienia magnetycznego

Gęstość strumienia magnetycznego:

Jednostka Opis
G Gaus; 1 G = 1 e-4 T,
T Tesla; 1 T = 1 kg/s^2/A,

Masa

Jednostka Opis
ug Microgram, alternatywa dla jednostki µg
µg Microgram, alternatywa dla jednostki ug
mg Milligram
g Gram
kg Kilogram
t Tona
oz Uncja
lb Funt, alternatywa dla jednostki lbm
lbm Funt, alternatywa dla jednostki lb
st Kamień
cwt Waga stu-kilowa (kwintał)

Siła

Jednostka Opis
W Wat
kW KiloWat

Ciśnienie

Jednostka Opis
Pa Paskal
kPa Kilopaskal
MPa Megapaskal
GPa Gigapaskal
uTorr Microtor, alternatywa dla jednostki µTorr
µTorr Microtor, alternatywa dla jednostki uTorr
mTorr Millitor
Torr Tor; 1 Torr = 133.32 Pa
psi Funt na cal kwadratowy; 1 psi = 6.895 kPa
kpsi KiloFunt na cal kwadratowy

Temperatura

Jednostka Opis
uK Microkelwin, alternatywa dla jednostki µK
µK Microkelwin, alternatywa dla jednostki uK
mK Millikelwin
K Kelwin

Czas

Jednostka Opis
s Second
min Minuta
h Godzina
Hz (1/s) Herc
kHz KiloHerc,
MHz MegaHerc
GHz GigaHerc
THz TeraHerc

Objętość

Jednostka Opis
ml MilliLitr
l Litr
cft Stopa sześcienna

Specjalne jednostki brytyjskie

Jednostka Opis
mph Mila na godzinę
sqft Stopa kwadratowa

Jednostki nieobsługiwane

Poniższe powszechnie używane jednostki nie są jeszcze obsługiwane, dla niektórych podano alternatywę:

Jednostka Opis Zamiennik
°C Celsjusz [°C] + 273.15 K
°F Fahrenheit; ([°F] + 459.67) × ​5/9
u Jednostka masy atomowej, alternatywa dla jednostki Da 1.66053906660e-27 kg
Da Dalton, alternatywa dla jednostki u 1.66053906660e-27 kg
sr Steradian nie bezpośrednio
lm Lumen nie bezpośrednio
lx Luks nie bezpośrednio
px Piksel nie bezpośrednio

Przewiń na górę strony

Nieprawidłowe znaki i nazwy

Funkcja wyrażeń jest bardzo potężna, ale aby osiągnąć tę moc, ma pewne ograniczenia dotyczące niektórych znaków. Aby temu zaradzić, FreeCAD oferuje możliwość używania etykiet i odwoływania się do nich zamiast do nazw obiektów. W etykietach można używać prawie wszystkich znaków specjalnych.

W przypadkach, w których nie można użyć etykiety, takich jak nazwa wiązań szkicu, należy być świadomym, których znaków nie wolno używać.

Etykiety

Dla etykiet nie ma nieprawidłowych znaków, jednak niektóre znaki muszą być wyprowadzone:

Znak Opis
', \, " Wymaga wyprowadzenia poprzez dodanie znaku poprzedzającego \.

Na przykład etykieta Sketch\002 musi być określona jako <<Sketch\\002>>.

Nazwy

Nazwy obiektów takich jak wymiary, szkice itp. nie mogą posiadać znaków lub sekwencji znaków wymienionych poniżej, w przeciwnym razie nazwa jest niepoprawna:

Znak / Ciąg znaków Opis
+, -, *, /, ^, _, <, >, (, ), {, }, [, ], ., ,, = Znaki, które są operatorami matematycznymi lub częścią konstrukcji matematycznych
A, kA, mA, MA, J, K, ' , ft , °, i wiele więcej! Znaki i ich ciągi, które są jednostkami, (patrz akapit Jednostki)
#, !, ?, §, $, %, &, :, ;, \, |, ~, , ¿, i wiele więcej! Znaki używane jako symbol listy lub wyzwalają specjalne operacje
pi, e Stałe matematyczne
´, `, ' , " Znaki używane do akcentowania
spacja Spacja określa koniec nazwy i dlatego nie może być użyta

Na przykład, prawidłowa jest następująca nazwa: <<Sketch>>.Constraints.T2üßµ@. Natomiast następujące nazwy są niepoprawne: <<Sketch>>.Constraints.test\result_2 (\r oznacza "powrót karetki") lub <<Sketch>>.Constraints.mol (mol to jednostka).

Ponieważ krótsze nazwy (zwłaszcza jeśli mają tylko jeden lub dwa znaki) mogą łatwo doprowadzić do nieprawidłowych nazw, rozważ użycie dłuższych nazw i / lub ustalenie odpowiedniej konwencji nazewnictwa.

Przypisania do komórek

Zobacz stronę Definiuj alias.

Przewiń na górę strony

Odwołanie do danych CAD

Możliwe jest użycie danych z samego modelu w wyrażeniu. Aby odwołać się do właściwości użyj object_name.property lub <<object_label>>.property, etykiety muszą być zawarte w << i >>. Jeśli chcesz używać etykiet, muszą one być unikalne.

Wszystkie następne przykłady odwołują się do obiektu poprzez jego nazwę, ale we wszystkich przypadkach można również użyć etykiety obiektu.

Jeśli właściwość jest złożeniem pól, dostęp do poszczególnych pól można uzyskać jako object_name.property.field.

Aby odwołać się do obiektów listy, użyj właściwości <<Etykieta_obiektu>>.lista[index_listy] lub Nazwa_obiektu.lista[index_listy]. Jeśli chcesz na przykład odwołać się do wiązania w szkicu, użyj właściwości <<Nazwa_szkicu>>.Wiązanie[16]. Jeśli znajdujesz się w tym samym szkicu, możesz pominąć jego nazwę i po prostu użyć właściwości Wiązanie[16]. Uwaga: Numeracja indeksów zaczyna się od 0, dlatego Wiązanie17 ma indeks Wiązanie[16].

Aby odwołać się do samego obiektu, należy użyć pseudo-właściwości _self: object_name._self.

Poniższa tabela przedstawia kilka przykładów:

dane CAD Odwołanie do wyrażenia Wynik
Parametr długości sześcianu środowiska pracy Część Cube.Length Długość w mm
Objętość sześcianu Cube.Shape.Volume Objętość w mm³ bez jednostek
Typ kształtu sześcianu Cube.Shape.ShapeType String: Bryła
Etykieta sześcianu Cube.Label String: Etykieta
Współrzędna x środka masy sześcianu Cube.Shape.CenterOfMass.x Współrzędna x w mm, bez jednostek
Składowa X osi obrotu umiejscowienia Sześcianu Box.Placement.Rotation.Axis.x
Kąt obrotu dla umiejscowienia Sześcianu Box.Placement.Rotation.Angle Kąt obrotu w jednostkach (deg)
Pełny obiekt Sześcianu Box._self Obiekt typu <Part::PartFeature>.
Wartość wiązania w szkicu Constraints.Width Wartość numeryczna nazwanego wiązania Width w szkicu, jeśli wyrażenie jest używane w samym szkicu.
Wartość wiązania w szkicu MySketch.Constraints.Width Wartość numeryczna nazwanego wiązania Width w szkicu, jeśli wyrażenie jest używane poza szkicem.
Wartość aliasu arkusza kalkulacyjnego Spreadsheet.Depth Wartość aliasu Depth w arkuszu kalkulacyjnym Spreadsheet
Wartość lokalnej właściwości Length Wartość właściwości DANELength np. w obiekcie Pad, jeżeli wyrażenie jest użyte np. w DANELength2 w tym samym obiekcie.

Zależności cykliczne

FreeCAD sprawdza zależności na podstawie relacji między obiektami dokumentu, a nie właściwościami. Oznacza to, że nie można dostarczyć danych do obiektu i zapytać tego samego obiektu o wyniki. Na przykład, nawet jeśli nie ma cyklicznych zależności, gdy brane są pod uwagę same właściwości, nie można mieć obiektu, który pobiera swoje wymiary z arkusza kalkulacyjnego, a następnie wyświetla objętość tego obiektu w tym samym arkuszu kalkulacyjnym. Musisz użyć dwóch arkuszy kalkulacyjnych, jednego do obsługi modelu, a drugiego do raportowania.

Jako obejście można wyświetlić zakres komórek z drugiego arkusza kalkulacyjnego w pierwszym (lub odwrotnie), tworząc komórki powiązane opcją Ukryj zależność powiązań.

Innym sposobem na obejście zależności cyklicznych jest ukrycie odniesienia za pomocą funkcji href lub hiddenref dla poszczególnych wyrażeń, na przykład: href(Box.Length).

Należy pamiętać, że oba wspomniane obejścia powinny być stosowane z ostrożnością i że nie działają, jeśli raportowane właściwości zależą od wymiarów, które są sterowane z tego samego arkusza kalkulacyjnego.

Przewiń na górę strony

Zmienne globalne w obrębie dokumentu

W tej chwili w programie FreeCAD nie ma koncepcji zmiennych globalnych. Zamiast tego zmienne mogą być definiowane jako komórki w arkuszu kalkulacyjnym za pomocą środowiska roboczego Arkusz kalkulacyjny, a następnie można im nadać nazwę za pomocą właściwości aliasu dla komórki (kliknij prawym przyciskiem myszy na komórkę). Następnie można się do nich odwoływać z dowolnego wyrażenia, tak jak do innych właściwości obiektu.

Przewiń na górę strony

Powiązania między dokumentami

Możliwe jest (z ograniczeniami) zdefiniowanie właściwości obiektu w bieżącym dokumencie (plik ".FCstd") za pomocą Wyrażenia odwołującego się do właściwości obiektu znajdującego się w innym dokumencie (plik ".FCstd"). Na przykład, komórka w arkuszu kalkulacyjnym lub właściwość DANEDługość sześcianu środowiska Część itp. w jednym dokumencie mogą być zdefiniowane przez Wyrażenie, które odwołuje się do wartości X Umiejscowienia lub innej właściwości obiektu znajdującego się w innym dokumencie.

Nazwa dokumentu jest używana do odwoływania się do jego zawartości z innych dokumentów. Przy pierwszym zapisie dokumentu wybieramy nazwę pliku, która zazwyczaj różni się od początkowej domyślnej nazwy "Nienazwany1". Aby uniknąć utraty linków w przypadku zmiany nazwy dokumentu głównego przy zapisie, zaleca się najpierw utworzenie dokumentu głównego, utworzenie w nim arkusza kalkulacyjnego i zapisanie go. Następnie można nadal wprowadzać zmiany w pliku i jego arkuszu kalkulacyjnym, ale nie należy modyfikować jego nazwy.

Po utworzeniu i zapisaniu (nazwaniu) dokumentu głównego z arkuszem kalkulacyjnym można bezpiecznie tworzyć dokumenty zależne. Na przykład, zakładając, że nazwiesz dokument główny master, arkusz kalkulacyjny modelConstants i nadasz komórce alias nazwy Length, możesz następnie uzyskać dostęp do wartości jako:

master#modelConstants.Length

Należy pamiętać, że dokument źródłowy musi być wczytany, aby wartości z dokumentu źródłowego były dostępne dla dokumentu powiązanego.

Oczywiście, to do Ciebie zależy, czy wczytasz odpowiednie dokumenty później, gdy będziesz chciał coś zmienić.

Przewiń na górę strony

Znane problemy / niezrealizowane zadania

  • FreeCAD nie ma jeszcze wbudowanego menedżera wyrażeń, w którym wszystkie wyrażenia w dokumencie są wymienione i mogą być tworzone, usuwane, odpytywane itp. Dostępny jest jednak dodatek: fcxref expression manager.
  • Otwarte zgłoszenia błędów dla wyrażeń można znaleźć na stronie GitHub.

Przewiń na górę strony