Expressions
Fonctions générales : min, max, count, sum, stddev et average. Les fonctions générales peuvent prendre un ou plusieurs arguments, séparés par une virgule ou un point-virgule. Les arguments peuvent inclure des plages de données (deux cellules séparées par deux points), par exemple =average(B1:B8). Celles-ci sont interprétées comme les propriétés B1, B2, ..., B8.
introduit dans la version 0.16
Il est maintenant possible de définir des propriétés utilisant des expressions mathématiques. Dans l'interface graphique, les boîtes de dialogues numériques et les champs de saisie qui sont liés à des propriétés contiennent une icône bleue File:Sketcher Expressions.png. En cliquant sur l'icône, ou en tapant le signe égal (=) comme dans un tableur, on fait apparaître l'éditeur d'expression pour cette propriété spécifique.
Une expression FreeCAD est une expression mathématique qui suit la notation pour les opérateurs mathématiques standard et fonctionne comme décrit ci-dessous. En outre, l'expression peut faire référence à d'autres propriétés et également utiliser des conditions. Une unité facultative peut être attachée aux nombres d'une expression.
Les nombres peuvent utiliser une virgule ',' ou un point décimal '.' séparer les chiffres entiers des décimales. Lorsque le marqueur décimal est utilisé, il doit obligatoirement être suivi d'au moins un chiffre. Ainsi, les expressions 1.+2. et 1,+2, ne sont pas valides, mais 1.0+2.0 et 1,0+2,0 sont valables.
Les constantes pi et e sont prédéfinies et doivent être écrites en minuscules.
Les opérateurs et fonctions reconnaissent les unités de mesure et nécessitent des combinaisons valides si elles sont fournies. Par exemple, 2mm + 4mm est une expression valide, tandis que 2mm + 4 ne l'est pas (la raison est qu'une expression comme 1in + 4 sera très probablement interprété comme 1in + 4in par le dessinateur mais comme toutes les unités en interne sont converties au système international SI, et le système est totalement incapable de deviner de quelle unité il s'agit).
Opérateurs pris en charge
Les opérations suivantes sont supportées:
Opération | Description |
---|---|
+ | Addition |
- | Soustraction |
* | Multiplication |
/ | Division |
^ | Exponentiation |
Constantes prises en charge
Les constantes suivantes sont supportées:
Constante | Description |
---|---|
e | nombre d'Euler |
pi | Pi |
Fonctions Supportées
Fonctions Mathématiques Générales
Les fonctions mathématiques suivantes sont disponibles.
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 |
Statistiques et Fonctions Cumulatives
Les fonctions cumulatives suivantes sont disponibles. Elles prennent un ou plusieurs arguments, ceux-ci peuvent être séparés par un point-virgule ";" ou une virgule suivie par un espace ", ". Les arguments peuvent contenir des références aux cellules d'une feuille de calcul ; les références aux cellules sont constituées de la lettre de colonne (en CAPITALES), suivie par le numéro de ligne. On peut passer en argument une plage de cellules (deux références de cellules séparées par le signe deux-points ":"). Exemple : average(B1:B8)
Description : Moyenne des valeurs des cellules x à y
Retourne : sum(x, y) / count(x, y)
Description : Nombre de cellules de x à y
Retourne : Le nombre de cellules de x à y, inclusif
Conditional Expressions
Les expressions conditionnelles s'expriment sous la forme condition ? résultat si VRAI : résultat si FAUX.
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 |
La condition est définie comme une expression qui donnera soit 0 (pour faux) ou différent de 0 (pour vrai). Les opérateurs de comparaison sont les suivants : ==, !=, >, <, >= et <=.
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³.
Les fonctions trigonométriques utilisent les degrés par défaut. Pour les mesures utilisant le radian, il faut ajouter rad suivant la première valeur angulaire dans l'expression. Exemple : cos(45) est identique à cos(pi rad / 4).
The following units are recognized by the expression parser:
Amount of substance:
Unit | Description |
---|---|
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 |
Energy / Work:
Unit | Description |
---|---|
J | Joule |
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 |
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 |
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 |
Expressions conditionnelles
Pressure:
Unit | Description |
---|---|
Pa | Pascal |
kPa | Kilopascal |
MPa | Megapascal |
GPa | Gigapascal |
uTorr | Microtorr; alternative to the unit µTorr |
µTorr | Microtorr; alternative to the unit uTorr |
mTorr | Millitorr |
Torr | Torr |
psi | Pound-force per square inch |
ksi | Kilopound-force per square inch |
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 |
Torque:
Unit | Description |
---|---|
Nm | Newton metre |
Volume:
Unit | Description |
---|---|
l | Liter |
The following commonly used units are not yet supported:
Unit | Description | Alternative |
---|---|---|
C | Coulomb | 1 A*s |
Hz | Hertz | 1 /s |
V | Volt | 1 W/A |
eV | Electronvolt | 1.602176634e-19 J |
kWh | Kilowatt hour | 3.6e6 J |
bar | Bar | 100 kPa |
T | Tesla | 1 kg/s^2/A |
F | Farad | 1 s^4*A^2/m^2/kg |
H | Henry | 1 kg*m^2/s^2/A^2 |
u | Atomic mass unit; alternative to the unit 'Da' | 1.66053906660e-27 kg |
Da | Dalton; alternative to the unit 'u' | 1.66053906660e-27 kg |
cal | Calorie | 4.184 J |
sr | Steradian | not directly |
lm | Lumen | not directly |
lx | Lux | not directly |
Mpsi | Megapound-force per square inch | 1000 ksi |
Références aux données CAD
Il est possible d'utiliser des données provenant de l'objet courant ou d'autres objets du document dans une expression. La syntaxe pour référencer un champ se fait comme ceci : "objet.propriété". Si la propriété est un composé de champs, ils peuvent être accessibles ainsi : "objet.propriété.champs".
Le tableau suivant montre quelques exemples :
Données CAO | Appel dans l'expression | Résultat |
---|---|---|
Longueur paramétrique d'un Cube de l'atelier Part | Cube.Length | Longueur en mm |
Volume du Cube | Cube.Shape.Volume | Volume en mm³ sans unité |
Type de la forme Cube | Cube.Shape.ShapeType | Chaîne de caractère : Solid |
Label du Cube | Cube.Label | Chaîne de caractère : Label |
coordonnée x du centre de gravité du Cube | Cube.Shape.CenterOfMass.x | coordonnée x en mm sans unité |
Valeur d'une contrainte dans une esquisse | Constraints.Largeur | Valeur numérique de la contrainte nommée "Largeur" dans l'esquisse |
Valeur d'une contrainte provenant d'une autre esquisse | MonEsquisse.Constraints.Largeur | Valeur numérique de la contrainte nommée "Largeur" dans l'esquisse nommée "MonEsquisse" |
Valeur d'un alias de feuille de calcul | MaFeuille.Profondeur | Valeur de l'alias nommé "Profondeur" dans la feuille de calcul nommée "MaFeuille" |
Valeur d'une propriété locale | Length | Valeur de la propriété Length, par exemple dans un objet "Pad" on pourrait l'utiliser pour calculer Length2, si celle-ci est utilisé. |
Variables globales
Pour le moment il n'y a pas de notion de variables globales dans FreeCAD. Mais des variables arbitraires peuvent être définies comme des cellules dans une feuille de calcul en utilisant l'atelier Spreadsheet, auquelles on aura donné un nom en utilisant l'alias de la propriété pour la cellule utilisée (clic-droit dans la cellule). Ainsi, elles peuvent être accessibles à partir de toute expression comme toute autre propriété de l'objet.
Liaison entre documents
Il est possible de faire référence à une feuille de calcul d'un document depuis d'autres documents.
Note importante : Imaginez que vous utilisiez le nom d'un document pour le référencer depuis d'autres documents. Lorsque vous sauverez ce document pour la première fois, vous allez certainement lui choisir un nom différent de "Unnamed1" (ou sa version traduite), et là, quand vous allez le ré-ouvrir, les liens seront perdus. Il est donc recommandé de créer en premier le document "maître", puis d'y créer immédiatement la feuille de calcul, de sauver le document maître avec un nom had-hoc et de le fermer. Après l'avoir ouvert à nouveau, son nom sera fixé en interne dans FreeCAD. Ensuite vous pourrez toujours faire des modification mais il ne faudra pas le renommer.
Une fois que le document maître contenant la feuille de calcul est créé et enregistré (nommé), vous pouvez sans risque créer des documents dépendants. Supposons que vous avez nommé le document maître "maitre", que la feuille de calcul ait été renommée "Constantes_modele" et que vous ayez défini l'alias "Longueur" pour une cellule donnée, vous pourrez accéder à un alias comme ceci : "master#Constantes_modele.Longueur". Note : un document maître doit toujours être ouvert pour que ses valeurs soient accessibles au document dépendant.
master#modelConstants.Length
Note that the master document must be loaded for the values in the master to be available to the dependent document.
Malheureusement, le vérificateur intégré suppose parfois qu’aucun nom valide étendu n’existe. Continuez à taper quand même. Lorsque vous avez terminé la référence complète, le bouton OK devient actif.
Bien sûr, vous pouvez charger les documents correspondants à tout moment pour y faire les modifications que vous voudrez.
Problèmes connus / tâches restantes
- Le graphe de dépendance est basé sur la relation entre les objets et le document, et non sur les propriétés. Cela signifie que vous ne pouvez pas renseigner et interroger le même objet, par exemple dans une feuille de calcul, même si il n'y a pas de dépendance cyclique si l'on considère seulement les propriétés, vous ne pouvez pas avoir d'objet dont les dimensions proviennent de la feuille de calcul et calculer son volume dans la même feuille de calcul. Pour contourner le problème, utilisez plusieurs feuilles de calcul, par exemple une pour contrôler votre modèle, et une autre pour les rapports.
- L'analyseur syntaxique d'expressions ne gère pas bien les parenthèses et n'est pas capable d'analyser correctement certaines expressions. Par exemple : "= (A1 > A2) ? 1 : 0" donne une erreur, alors que "= A1 > A2 ? 1 : 0" est accepté. L'expression "= 5 + ((A1>A2) ? 1 : 0)" va contrarier l'analyseur syntaxique dans tous les cas.
- Il n'y a aucun gestionnaire d'expressions où toutes les expressions d'un document seraient répertoriées et où elles pourraient être créées, supprimées, interrogées, etc.
- Les noms des contraintes Sketcher ne doivent contenir aucun blanc lorsque la valeur est calculée par une expression, voir la discussion sur le forum.
- les bogues et tickets ouverts pour les expressions sont référencés sur le Bugtracker de Freecad, catégorie Expressions
- Démarrer avec FreeCAD
- Installation : Téléchargements, Windows, Linux, Mac, Logiciels supplémentaires, Docker, AppImage, Ubuntu Snap
- Bases : À propos de FreeCAD, Interface, Navigation par la souris, Méthodes de sélection, Objet name, Préférences, Ateliers, Structure du document, Propriétés, Contribuer à FreeCAD, Faire un don
- Aide : Tutoriels, Tutoriels vidéo
- Ateliers : Std Base, Arch, Assembly, CAM, Draft, FEM, Inspection, Mesh, OpenSCAD, Part, PartDesign, Points, Reverse Engineering, Robot, Sketcher, Spreadsheet, Surface, TechDraw, Test