Expressions/fr: Difference between revisions

From FreeCAD Documentation
(Created page with "== Opérateurs pris en charge ==")
No edit summary
 
(539 intermediate revisions by 7 users not shown)
Line 1: Line 1:
<languages/>
<languages/>
{{TOCright}}


<span id="Overview"></span>
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.
== Présentation ==


Il est possible de définir des propriétés à l'aide d'expressions mathématiques. Dans l'interface graphique, les zones de sélection numérique ou les champs de saisie liés aux propriétés contiennent une icône bleue [[Image:Bound-expression.svg|24px]]. Cliquez sur l'icône ou tapez le signe égal {{KEY|&#61;}} pour ouvrir l'éditeur d'expression pour cette propriété particulière.
{{Version/fr|0.16}}


Une expression FreeCAD est une expression mathématique utilisant les [[#Opérateurs_pris_en_charge|opérateurs]] mathématiques standard, les [[#Fonctions_supportées|fonctions]] et [[#Constantes_prises_en_charge|constantes prédéfinies]] comme décrit ci-dessous. En outre, une expression peut faire référence à des propriétés d'objet et utiliser des [[#Expressions_conditionnelles|conditions]]. Les nombres d'une expression peuvent être éventuellement associés à une [[#Unités|unité]].
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 [[Image:Sketcher_Expressions.png|24px]]. 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.


Les nombres peuvent utiliser une virgule {{incode|,}} ou un point décimal {{incode|.}} pour séparer les chiffres entiers des décimales. Lorsque le séparateur décimal est utilisé, il ''doit'' être suivi d'au moins un chiffre. Ainsi, les expressions {{incode|1. + 2.}} et {{incode|1, + 2,}} ne sont pas valides, mais {{incode|1.0 + 2.0}} et {{incode|1,0 + 2,0}} le sont.
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 opérateurs et fonctions reconnaissent les unités de mesure et nécessitent des combinaisons valides si elles sont fournies. Par exemple, {{incode|2mm + 4mm}} est une expression valide, tandis que {{incode|2mm + 4}} ne l'est pas. Cela s'applique également aux références aux propriétés d'objets qui ont des unités, telles que les propriétés de longueur. Ainsi, {{incode|Pad001.Length + 1}} n'est pas valide car cela additionne un nombre pur à une propriété avec des unités de longueur, il faut {{incode|Pad001.Length + 1mm}}.
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.


Certaines erreurs liées à l'unité peuvent sembler peu intuitives, les expressions étant rejetées ou produisant des résultats qui ne correspondent pas aux unités de la propriété définie. En voici quelques exemples :
Les constantes ''pi'' et ''e'' sont prédéfinies et doivent être écrites en minuscules.


{{incode|1/2mm}} n'est pas interprété comme un demi-millimètre mais comme {{incode|1/(2mm)}}, ce qui donne : {{incode|0,5 mm^-1}}.
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).


{{incode|sqrt(2)mm}} n'est pas valide car l'appel de la fonction n'est pas un nombre. Il doit être saisi sous la forme {{incode|sqrt(2) * 1mm}}.

<span id="Function_arguments"></span>
=== Arguments de la fonction ===

Lorsqu'une fonction prend plusieurs arguments, ceux-ci peuvent être séparés par un point-virgule {{incode|;}} ou une virgule <em>suivie par un espace</em> {{incode|, }}. Dans ce derniers cas, la virgule est convertie en point-virgule après la saisie. Quand on utilise un point-virgule, il n'est pas nécessaire de finir la ligne par un espace.

Les arguments peuvent inclure des références à des cellules dans une feuille de calcul. Une référence de cellule se compose de la lettre en majuscule de la ligne de la cellule suivie de son numéro de colonne, par exemple {{incode|A1}}. Une cellule peut également être référencée en utilisant l'alias de la cellule, par exemple {{incode|Spreadsheet.MyPartWidth}}.

<span id="Referencing_objects"></span>
===Référencement d'objets===

Comme indiqué ci-dessus, vous pouvez référencer un objet par sa {{PropertyData|Name}}. Mais vous pouvez également utiliser sa {{PropertyData|Label}}. Dans le cas d'une {{PropertyData|Label}}, vous devez l'entourer de double symboles {{incode|<<}} et {{incode|>>}}, comme ceci {{incode|<<Label>>}}.

Vous pouvez référencer n'importe quelle propriété numérique d'un objet. Par exemple, pour référencer la hauteur d'un cylindre, vous pouvez utiliser {{incode|Cylinder.Height}} ou {{incode|<<Label_of_cylinder>>.Height}}.

Pour plus d'informations sur le référencement des objets, voir [[#R.C3.A9f.C3.A9rence_aux_donn.C3.A9es_CAO|Référence aux données CAO]].
{{Top}}
<span id="Supported_constants"></span>
== Constantes prises en charge ==

Les constantes suivantes sont prises en charge :

{| class="wikitable"
!style="width: 33%;"|Constante
!style="width: 66%;"|Description
|-
| style="text-align:center;" | '''e'''
| [https://fr.wikipedia.org/wiki/E_(nombre) nombre d'Euler]
|-
| style="text-align:center;" | '''pi'''
| [https://fr.wikipedia.org/wiki/Pi Pi]
|}
{{Top}}
<span id="Supported_operators"></span>
== Opérateurs pris en charge ==
== Opérateurs pris en charge ==


Les opérateurs suivants sont pris en charge :
The following operators are supported:

{| class="wikitable float-right mw-collapsible mw-uncollapsed"
{| class="wikitable"
!style="width: 33%;"|Operator
!style="width: 33%;"|Opération
!style="width: 66%;"|Description
!style="width: 66%;"|Description
|-
|-
| style="text-align:center;" |'''+'''
| +
| [https://en.wikipedia.org/wiki/Addition Addition]
| [https://fr.wikipedia.org/wiki/Addition Addition]
|-
|-
| style="text-align:center;" |'''-'''
| -
| [https://en.wikipedia.org/wiki/Subtraction Subtraction]
| [https://fr.wikipedia.org/wiki/Soustraction Soustraction]
|-
|-
| style="text-align:center;" |'''*'''
| *
| [https://en.wikipedia.org/wiki/Multiplication Multiplication]
| [https://fr.wikipedia.org/wiki/Multiplication Multiplication]
|-
|-
| style="text-align:center;" |'''/'''
| /
| [https://en.wikipedia.org/wiki/Division_(mathematics) Division]
| [https://fr.wikipedia.org/wiki/Division Division] en virgule flottante
|-
|-
| style="text-align:center;" | '''%'''
| ^
| [https://en.wikipedia.org/wiki/Exponentiation Exponentiation]
| [https://fr.wikipedia.org/wiki/Reste Reste]
|-
| style="text-align:center;" |'''^'''
| [https://fr.wikipedia.org/wiki/Exponentiation Exponentiation]
|}
|}
{{Top}}
<span id="Supported_functions"></span>
== Fonctions supportées ==


<span id="General_mathematical_functions"></span>
<div class="mw-translate-fuzzy">
=== Fonctions mathématiques générales ===
Lorsqu'une fonction prend plusieurs arguments, ceux-ci peuvent être séparés par un point-virgule (';') ou une virgule <em>suivie par un espace</em> (", ").
Dans ce derniers cas, la virgule est convertie en point-virgule après la saisie.
Quand on utilise un point-virgule, il n'est pas nécessaire de finir la ligne par un espace.
</div>


Les fonctions mathématiques suivantes sont prises en charge :
<div class="mw-translate-fuzzy">
{{APIFunction/fr |abs|x| Valeur absolue | valeur <nowiki> >= 0 </nowiki> }}
{{APIFunction/fr |acos|x| Arc cosinus ; <nowiki> -1 <= x <= 1 </nowiki>| acos(x) }}
{{APIFunction/fr |asin|x| Arc sinus ; <nowiki> -1 <= x <= 1 </nowiki> | asin(x) }}
{{APIFunction/fr |atan|x| Arc tangente | atan(x) }}
{{APIFunction/fr |atan2|y, x| Arc tangente of y / x | atan2(y,x) }}
{{APIFunction/fr |ceil|x| Arrondi au nombre entier supérieur | Le plus petit nombre entier &gt;&#61; x {{Version|0.16}} }}
{{APIFunction/fr |cos|angle| Cosinus ; n'importe quelle valeur d'angle en degrés | <nowiki> -1 <= cos(x) <= 1 </nowiki> }}
{{APIFunction/fr |cosh|x| Cosinus hyperbolique de x | cosh(x) }}
{{APIFunction/fr |exp|y| Fonction exponentielle | e<sup> y</sup> }}
{{APIFunction/fr |floor|x| Arrondi au nombre entier inférieur | Le plus grand nombre entier &lt;&#61; x {{Version|0.16}} }}
{{APIFunction/fr |log|x| Fonction logarithme naturel | log<sub>e</sub> x }}
{{APIFunction/fr |log10|x| Fonction logarithme de base 10 | log<sub>10</sub> x }}
{{APIFunction/fr |mod|x, y| Modulo de x/y | Reste après avoir divisé x par y }}
{{APIFunction/fr |pow|x, y| Fonction puissance | x<sup> y</sup> }}
{{APIFunction/fr |round|x| Fonction arrondi | x arrondi à l'entier le plus proche {{Version|0.16}} }}
{{APIFunction/fr |sin|angle| Sinus ; n'importe quelle valeur d'angle en degrés | <nowiki> -1 <= sin(x) <= 1 </nowiki> }}
{{APIFunction/fr |sinh|x| Sinus hyperbolique de x | sinh(x) }}
{{APIFunction/fr |sqrt|x| Racine carrée ; <nowiki> x >= 0 </nowiki> | Racine carrée x }}
{{APIFunction/fr |tan|angle| Tangente ; n'importe quelle valeur d'angle en degrés | tan(angle) }}
{{APIFunction/fr |tanh|x| Tangente hyperbolique of x | tanh(x) }}
{{APIFunction/fr |trunc|x| Fonction partie entière | x tronqué à l'entier relatif le plus proche {{Version|0.16}} }}
</div>


<span id="Trigonometric_functions"></span>
== Fonctions Supportées ==
==== Fonctions trigonométriques ====


[https://fr.wikipedia.org/wiki/Fonction_trigonom%C3%A9trique Les fonctions trigonométriques] utilisent le degré comme unité par défaut. Pour les radians, ajoutez {{incode|rad}} après la <em>première</em> valeur dans une expression. Ainsi, par exemple, {{incode|cos(45)}} est identique à {{incode|cos(pi rad / 4)}}. Les expressions en degrés peuvent utiliser soit {{incode|deg}} soit {{incode|°}}, par exemple {{incode|360deg - atan2(3 ; 4)}} ou {{incode|360&deg; - atan2(3 ; 4)}}. Si une expression est sans unité et doit être convertie en degrés ou en radians pour des raisons de compatibilité, multipliez-la par {{incode|1deg}}, {{incode|1°}} ou {{incode|1rad}} selon le cas, par exemple {{incode|(360 - X) * 1deg}}; {{incode|(360 - X) * 1°}}; {{incode|(0.5 + pi / 2) * 1rad}}.
=== General Mathematical Functions ===


{| class="wikitable"
Les fonctions mathématiques suivantes sont disponibles.
!style="width: 15%;"|Fonction

!style="width: 55%;"|Description
Multiple arguments to a function may be separated by either a semicolon ';' or a comma <em>followed by a space</em> ', '. In the latter case, the comma is converted to a semicolon after entry. When a semicolon is used, no trailing space is necessary.
!style="width: 30%;"|Plage de saisie

[https://en.wikipedia.org/wiki/Trigonometric_functions Trigonometric functions] use degree as their default unit. For radian measure, add '''rad''' following the <em>first</em> value in an expression. So e.g. '''cos(45)''' is the same as '''cos(pi rad / 4)'''.<br/>
These trigonometric functions are supported:
{| class="wikitable float-right mw-collapsible mw-collapsed"
!style="width: 33%;"|Function
!style="width: 33%;"|Description
!style="width: 33%;"|Value range
|-
|-
| acos(x)
| {{incode|acos(x)}}
| [https://en.wikipedia.org/wiki/Inverse_trigonometric_functions#Basic_properties Arc cosine]
| [https://fr.wikipedia.org/wiki/Arc_cosinus Arc cosinus]
| -1 <= x <= 1
| -1 <= x <= 1
|-
|-
| asin(x)
| {{incode|asin(x)}}
| [https://en.wikipedia.org/wiki/Inverse_trigonometric_functions#Basic_properties Arc sine]
| [https://fr.wikipedia.org/wiki/Arc_sinus Arc sinus]
| -1 <= x <= 1
| -1 <= x <= 1
|-
|-
| atan(x)
| {{incode|atan(x)}}
| [https://en.wikipedia.org/wiki/Inverse_trigonometric_functions#Basic_properties Arc tangent]
| [https://fr.wikipedia.org/wiki/Arc_tangente Arc tangente], retourne la valeur dans la plage -90° < valeur < 90°
| all
| tout
|-
|-
| atan2(x, y)
| {{incode|atan2(y; x)}}
| [https://fr.wikipedia.org/wiki/Atan2 atan2] de la comptabilité ''y/x'' pour le quadrant, retour de la valeur dans la plage -180° < valeur <= 180°
| [https://en.wikipedia.org/wiki/Inverse_trigonometric_functions#Basic_properties Arc tangent] of ''x/y''
| all, except y = 0
| tout, l'entrée invalide x = y = 0 renvoie 0
|-
|-
| cos(x)
| {{incode|cos(x)}}
| [https://en.wikipedia.org/wiki/Trigonometric_functions#Right-angled_triangle_definitions Cosine]
| [https://fr.wikipedia.org/wiki/Cosinus Cosinus]
| all
| tout
|-
|-
| cosh(x)
| {{incode|cosh(x)}}
| [https://en.wikipedia.org/wiki/Hyperbolic_function#Trigonometric_definitions Hyperbolic cosine]
| [https://fr.wikipedia.org/wiki/Cosinus_hyperbolique Cosinus hyperbolique]
| all
| tout
|-
|-
| sin(x)
| {{incode|sin(x)}}
| [https://en.wikipedia.org/wiki/Trigonometric_functions#Right-angled_triangle_definitions Sine]
| [https://fr.wikipedia.org/wiki/Sinus_(math%C3%A9matiques) Sinus]
| all
| tout
|-
|-
| sinh(x)
| {{incode|sinh(x)}}
| [https://en.wikipedia.org/wiki/Hyperbolic_function#Trigonometric_definitions Hyperbolic sine]
| [https://fr.wikipedia.org/wiki/Sinus_hyperbolique Sinus hyperbolique]
| all
| tout
|-
|-
| tan(x)
| {{incode|tan(x)}}
| [https://en.wikipedia.org/wiki/Trigonometric_functions#Right-angled_triangle_definitions Tangent]
| [https://fr.wikipedia.org/wiki/Tangente_(trigonom%C3%A9trie) Tangente]
| all, except of x = n·90 with n = integer
| tout, sauf x = n*90 avec n = entier impair
|-
|-
| tanh(x)
| {{incode|tanh(x)}}
| [https://en.wikipedia.org/wiki/Hyperbolic_function#Trigonometric_definitions Hyperbolic tangent]
| [https://fr.wikipedia.org/wiki/Tangente_hyperbolique Tangente hyperbolique]
| all
| tout
|-
| {{incode|hypot(x; y)}}
| [https://fr.wikipedia.org/wiki/Somme_pythagoricienne Somme pythagoricienne] ('''hypot'''énuse), par ex. hypot(4; 3) = 5.
| x et y >= 0
|-
| {{incode|cath(x; y)}}
| Étant donné l'hypoténuse, et un côté, donne l'autre côté du triangle, par ex. cath(5; 3) = 4.
| x >= y >= 0
|}
|}


<span id="Exponential_and_logarithmic_functions"></span>
These functions for exponentiation and logarithmization are supported:
==== Fonctions exponentielles et logarithmiques ====
{| class="wikitable float-right mw-collapsible mw-collapsed"

!style="width: 33%;"|Function
{| class="wikitable"
!style="width: 33%;"|Fonction
!style="width: 33%;"|Description
!style="width: 33%;"|Description
!style="width: 33%;"|Value range
!style="width: 33%;"|Plage de saisie
|-
|-
| exp(x)
| {{incode|exp(x)}}
| [https://en.wikipedia.org/wiki/Exponential_function#Formal_definition Exponential function]
| [https://fr.wikipedia.org/wiki/Fonction_exponentielle Fonction exponentielle]
| all
| tout
|-
|-
| log(x)
| {{incode|log(x)}}
| [https://en.wikipedia.org/wiki/Natural_logarithm Natural logarithm]
| [https://fr.wikipedia.org/wiki/Logarithme_naturel Logarithme népérien]
| x > 0
| x > 0
|-
|-
| log10(x)
| {{incode|log10(x)}}
| [https://en.wikipedia.org/wiki/Common_logarithm Common logarithm]
| [https://fr.wikipedia.org/wiki/Logarithme_d%C3%A9cimal Logarithme décimal]
| x > 0
| x > 0
|-
|-
| pow(x, y)
| {{incode|pow(x; y)}}
| [https://en.wikipedia.org/wiki/Exponentiation Exponentiation]
| [https://fr.wikipedia.org/wiki/Exposant_(math%C3%A9matiques) Les puissances]
| all
| tout
|-
|-
| sqrt(x)
| {{incode|sqrt(x)}}
| [https://en.wikipedia.org/wiki/Square_root Square root]
| [https://fr.wikipedia.org/wiki/Racine_carr%C3%A9e Racine carrée]
| x >= 0
| x >= 0
|-
| {{incode|cbrt(x)}} {{Version/fr|0.21}}
| [https://fr.wikipedia.org/wiki/Racine_cubique Racine cubique]
| tout
|}
|}


<span id="Rounding,_truncation_and_remainder_functions"></span>
These functions for rounding, truncation and remainder are supported:
==== Fonctions d'arrondi, de troncature et de reste ====
{| class="wikitable float-right mw-collapsible mw-collapsed"

!style="width: 20%;"|Function
{| class="wikitable"
!style="width: 20%;"|Fonction
!style="width: 55%;"|Description
!style="width: 55%;"|Description
!style="width: 25%;"|Value range
!style="width: 25%;"|Plage de saisie
|-
|-
| abs(x)
| {{incode|abs(x)}}
| [https://en.wikipedia.org/wiki/Absolute_value Absolute value]
| [https://fr.wikipedia.org/wiki/Valeur_absolue Valeur absolue]
| all
| tout
|-
|-
| ceil(x)
| {{incode|ceil(x)}}
| [https://en.wikipedia.org/wiki/Floor_and_ceiling_functions Ceiling function] smallest integer value greater than or equal to x
| [https://fr.wikipedia.org/wiki/Partie_enti%C3%A8re_et_partie_fractionnaire#Fonction_partie_enti%C3%A8re Partie entière par excès], la plus petite valeur entière supérieure ou égale à x
| all
| tout
|-
|-
| floor(x)
| {{incode|floor(x)}}
| [https://en.wikipedia.org/wiki/Floor_and_ceiling_functions Floor function], largest integer value less than or equal to x
| [https://fr.wikipedia.org/wiki/Partie_enti%C3%A8re_et_partie_fractionnaire#Fonction_partie_enti%C3%A8re Partie entière], la plus grande valeur entière inférieure ou égale à x
| all
| tout
|-
|-
| mod(x, y)
| {{incode|mod(x; y)}}
| [https://en.wikipedia.org/wiki/Remainder Remainder] after dividing ''x'' by ''y''
| [https://fr.wikipedia.org/wiki/Reste Reste] après la division de ''x'' par ''y'', le signe du résultat est celui du dividende.
| all, except y = 0
| tout sauf y = 0
|-
|-
| round(x)
| {{incode|round(x)}}
| [https://en.wikipedia.org/wiki/Rounding Rounding] to the nearest integer
| [https://fr.wikipedia.org/wiki/Arrondi_(math%C3%A9matiques) Arrondi] au nombre entier le plus proche
| all
| tout
|-
|-
| trunc(x)
| {{incode|trunc(x)}}
| [https://en.wikipedia.org/wiki/Truncation Truncation] to the nearest integer
| [https://fr.wikipedia.org/wiki/Troncature Troncature] au nombre entier le plus proche en direction de zéro
| all
| tout
|}
|}
{{Top}}
<span id="Statistical_/_aggregate_functions"></span>
=== Statistiques et fonctions d'agrégation ===


[https://fr.wikipedia.org/wiki/Fonction_d%27agr%C3%A9gation Les fonctions d'agrégation] prennent un ou plusieurs arguments.<br>
<div class="mw-translate-fuzzy">
=== 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 <em>suivie par un espace</em> ", ".
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)''
</div>


Les arguments individuels pour agréger les fonctions peuvent être constitués de plages de cellules. Une plage de cellules est exprimée sous la forme de deux références de cellule séparées par deux points {{Incode|:}}, par exemple {{Incode|average(B1:B8)}} ou {{Incode|sum(A1:A4; B1:B4)}}.
<div class="mw-translate-fuzzy">
Les références de cellule peuvent également utiliser des alias de cellule, par exemple {{Incode|average(StartTemp:EndTemp)}}.
{{APIFunction/fr |average|x y| Moyenne des valeurs des cellules x à y | sum(x, y) / count(x, y) }}
{{APIFunction/fr |count|x y| Nombre de cellules de x à y | Le nombre de cellules de x à y, inclusif }}
{{APIFunction/fr |max|x y| Valeur maximale dans les cellules x à y | Valeur maximale }}
{{APIFunction/fr |min|x y| Valeur minimale dans les cellules x à y | Valeur minimale }}
{{APIFunction/fr |stddev|x y| Écart type des valeurs dans les cellules x à y | Ecart type }}
{{APIFunction/fr |sum|x y| Somme des valeurs dans les cellules x à y | Somme }}
</div>


Les fonctions d'agrégation suivantes sont prises en charge :
== Conditional Expressions ==


<div class="mw-translate-fuzzy">
{| class="wikitable"
!style="width: 20%;"|Fonction
Les expressions conditionnelles s'expriment sous la forme ''condition ? résultat si VRAI : résultat si FAUX''.
!style="width: 55%;"|Description
</div>
!style="width: 25%;"|Plage de saisie
|-
| {{incode|average(a; b; c; ...)}}
| Valeur [https://fr.wikipedia.org/wiki/Moyenne_arithm%C3%A9tique Moyenne] des arguments, identique à sum(a; b; c; ...) / count(a; b; c; ...)
| tout
|-
| {{incode|count(a; b; c; ...)}}
| [https://fr.wikipedia.org/wiki/D%C3%A9nombrement Comptage] des arguments, généralement utilisé pour les plages de cellules
| tout
|-
| {{incode|max(a; b; c; ...)}}
| Valeur [https://fr.wikipedia.org/wiki/Extremum Maximum] des arguments
| tout
|-
| {{incode|min(a; b; c; ...)}}
| Valeur [https://fr.wikipedia.org/wiki/Extremum Minimum] des arguments
| tout
|-
| {{incode|stddev(a; b; c; ...)}}
| [https://fr.wikipedia.org/wiki/%C3%89cart_type Écart type] des valeurs des arguments
| tout
|-
| {{incode|sum(a; b; c; ...)}}
| [https://fr.wikipedia.org/wiki/Somme_(arithm%C3%A9tique) Somme] des valeurs des arguments, généralement utilisé pour les plages de cellules
| tout
|}
{{Top}}
<span id="String_manipulation"></span>
=== Manipulation de chaînes de caractères ===

<span id="String_identification"></span>
==== Identification de chaînes de caractères ====

Les chaînes de caractères sont identifiées dans les expressions en les entourant de doubles chevrons ouvrants/fermants (comme les étiquettes).

Dans l'exemple suivant, "TEXT" est reconnu comme une chaîne de caractères : {{incode|<<TEXT>>}}.

<span id="String_concatenation"></span>
==== Concaténation de chaînes de caractères ====

Les chaînes de caractères peuvent être concaténées à l'aide du signe '+'.

L'exemple suivant {{incode|<<MY>> + <<TEXT>>}} sera concaténé en "MYTEXT".

<span id="String_conversion"></span>
==== Conversion de chaînes de caractères ====

Les valeurs numériques peuvent être converties en chaînes de caractères avec la fonction {{incode|str}} :

{{incode|str(Box.Length.Value)}}

<span id="String_formatting"></span>
==== Formatage des chaînes de caractères ====

Le formatage des chaînes de caractères est pris en charge en utilisant le (vieux) style % de Python.

Tous les spécificateurs % tels que définis dans la [https://docs.python.org/3/library/stdtypes.html#printf-style-string-formatting documentation Python].

Par exemple, supposons que vous ayez un cube par défaut de 10mm de côté nommé "Box" (nomination par défaut de FreeCAD), l'expression suivante {{incode|<<Cube length : %s>> % Box.Length}} se développera en "Cube length : 10.0 mm"

Au dessus d'un spécificateur de %, utilisez la syntaxe suivante : {{incode|<<Cube length is %s and width is %s>> % tuple(Box.Length; Box.Width)}}. Ou utilisez la concaténation : {{incode|<<Cube length is %s>> % Box.Length + << and width is %s>> % Box.Width}}. Les deux se développeront en "Cube length is 10.0 mm and width is 10.0 mm".

Un exemple de fichier FreeCAD utilisant le formatage des chaînes de caractères est disponible [https://forum.freecadweb.org/viewtopic.php?f=8&t=58657 dans le forum].
{{Top}}
<span id="Object_creation_functions"></span>
=== Fonctions de création d'objets ===

Les objets suivants peuvent être créés dans des expressions à l'aide des fonctions suivantes :

{| class="wikitable"
! Type
! Fonction
! Description
|-
| {{incode|Tuple}}
| {{incode|tuple(a; b; ...)}}
| Exemple : {{incode|tuple(2; 1; 2)}}
|-
| {{incode|List}}
| {{incode|list(a; b; ...)}}
| Exemple : {{incode|list(2; 1; 2)}}
|-
| rowspan="2" | [[Vector API|{{incode|Vector}}]]
| {{incode|vector(x; y; z)}}
| rowspan="2" | Crée un vecteur en utilisant trois valeurs unitaires sans unité ou valeurs unitaires {{incode|Length}}.
Exemple : {{incode|vector(2; 1; 3)}}
|-
| {{incode|create(<<vector>>; x; y; z)}}
|-
| rowspan="2" | [[Matrix API|{{incode|Matrix}}]]
|
matrix(
a<sub>11</sub>; a<sub>12</sub>; a<sub>13</sub>; a<sub>14</sub>;
a<sub>21</sub>; a<sub>22</sub>; a<sub>23</sub>; a<sub>24</sub>;
a<sub>31</sub>; a<sub>32</sub>; a<sub>33</sub>; a<sub>34</sub>;
a<sub>41</sub>; a<sub>42</sub>; a<sub>43</sub>; a<sub>44</sub>
)
| rowspan="2" | Crée une matrice 4x4 dans l'[https://en.wikipedia.org/wiki/Row-_and_column-major_order ordre rangée-majeur (en)] :
<math>
\begin{bmatrix}
a_{11} & a_{12} & a_{13} & a_{14} \\
a_{21} & a_{22} & a_{23} & a_{24} \\
a_{31} & a_{32} & a_{33} & a_{34} \\
a_{41} & a_{42} & a_{43} & a_{44} \\
\end{bmatrix}
</math>

Un minimum d'un argument peut être fourni, comme {{incode|matrix(1)}} qui crée une matrice identité.

Exemple : {{incode|matrix(1; 2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12; 13; 14; 15; 16)}}
|-
| {{incode|create(<<matrix>>; a<sub>11</sub>; a<sub>12</sub>; ...; a<sub>44</sub>)}}
|-
| rowspan="4" | {{incode|Rotation}}
| {{incode|rotation(axis; angle)}}
| rowspan="4" | Crée une {{incode|Rotation}} en spécifiant ses {{incode|axis}} ({{incode|Vector}}) et unité d'{{incode|angle}} ({{incode|Angle}} ou pas d'unité) ou trois angles d'Euler {{incode|α}}, {{incode|β}}, {{incode|γ}}.
Exemples :
* {{incode|rotation(vector(0; 1; 0); 45)}}
* {{incode|create(<<rotation>>; 30; 30; 30)}}
|-
| {{incode|rotation(α; β; γ)}}
|-
| {{incode|create(<<rotation>>; axis; angle)}}
|-
| {{incode|create(<<rotation>>; α; β; γ)}}
|-
| rowspan="5" | [[Placement_API|{{incode|Placement}}]]
| {{incode|placement(base; rotation)}}
| rowspan="5" | Crée un {{incode|Placement}} avec différents paramètres, notamment :
* {{incode|base}} : emplacement de la base ({{incode|Vecteur}})
* {{incode|center}} : emplacement du centre ({{incode|Vecteur}})
* {{incode|rotation}} : {{incode|Rotation}}
* {{incode|axis}} : axe de rotation ({{incode|Vecteur}})
* {{incode|angle}} : angle de rotation (sans unité ou valeur unitaire d'{{incode|Angle}})
* {{incode|matrix}} : {{incode|Matrice}}

Exemples :
* {{incode|placement(vector(2; 1; 3); rotation(vector(0; 0; 1); 45))}}
* {{incode|create(<<placement>>; create(<<vector>>; 2; 1; 2); create(<<rotation>>; create(<<vector>>; 0; 1; 0); 45))}}
|-
| {{incode|placement(base; rotation; center)}}
|-
| {{incode|placement(base; axis; angle)}}
|-
| {{incode|placement(matrix)}}
|-
| {{incode|create(<<placement>>; ...)}}
|}
{{Top}}
<span id="Vector_functions"></span>
=== Fonctions vectorielles ===

Fonctions : {{Version/fr|0.22}}.

{| class="wikitable"
! Fonction / Opérateur
! Description
|-
| {{incode|v1 + v2}}
| Ajouter deux vecteurs.
|-
| {{incode|v1 - v2}}
| Soustraire deux vecteurs.
|-
| {{incode|v * s}}
| Échelle uniforme d'un vecteur par {{incode|s}}.
|-
| {{incode|vangle(v1; v2)}}
| Angle en degrés entre deux vecteurs.
|-
| {{incode|vcross(v1; v2)}}
| Produit vectoriel de deux vecteurs <math>v_1 \times v_2</math>.
|-
| {{incode|v1 * v2}}
| rowspan="2" | Produit scalaire de deux vecteurs <math>v_1 \cdot v_2</math>.
|-
| {{incode|vdot(v1; v2)}}
|-
| {{incode|vlinedist(v1; v2; v3)}}
| Distance entre le vecteur {{incode|v1}} et une ligne passant par {{incode|v2}} dans la direction {{incode|v3}}.
|-
| {{incode|vlinesegdist(v1; v2; v3)}}
| Distance entre le vecteur {{incode|v1}} et le point le plus proche d'un segment de droite allant de {{incode|v2}} à {{incode|v3}}.
|-
| {{incode|vlineproj(v1; v2; v3)}}
| Projeter le vecteur {{incode|v1}} sur une droite passant par {{incode|v2}} dans le sens {{incode|v3}}.
|-
| {{incode|vnormalize(v)}}
| Normaliser un vecteur en un vecteur unitaire.
|-
| {{incode|vplanedist(v1)}}
| Distance entre le vecteur {{incode|v1}} et un plan défini par un point {{incode|v2}} et une normale {{incode|v3}}.
|-
| {{incode|vplaneproj(v1)}}
| Projeter le vecteur {{incode|v1}} sur un plan défini par un point {{incode|v2}} et une normale {{incode|v3}}.
|-
| {{incode|vscale(v; sx; sy; sz)}}
| rowspan="4" | Mettre à l'échelle de façon non uniforme un vecteur de {{incode|sx}} dans la direction X, {{incode|sy}} dans la direction Y et {{incode|sz}} dans la direction Z.
|-
| {{incode|vscalex(v; sx)}}
|-
| {{incode|vscaley(v; sy)}}
|-
| {{incode|vscalez(v; sz)}}
|}
{{Top}}
<span id="Matrix_functions"></span>
=== Fonctions matricielles ===

{{incode|Rotation}} et {{incode|Placement}} peuvent être représentés par une {{incode|Matrix}}. Les fonctions suivantes dans le tableau ci-dessous, {{incode|Matrix}}, {{incode|Rotation}} ou {{incode|Placement}}, prennent toutes comme premier paramètre {{incode|m}}. Le type de l'objet renvoyé est le même que l'objet fourni en premier argument, sauf si l'on utilise {{incode|mtranslate}} sur une {{incode|Rotation}}, auquel cas c'est un {{incode|Placement}} qui sera renvoyé.

{| class="wikitable"
! Fonction
! Description
|-
| {{incode|minvert(m)}}
| Calcule la [https://fr.wikipedia.org/wiki/Matrice_inversible matrice inversée].
|-
| {{incode|mrotate(m; rotation)}}
| rowspan="3" | [https://fr.wikipedia.org/wiki/Matrice_de_rotation Rotation] soit :
* une {{incode|Rotation}}
* un ({{incode|Vector}}) d'axe et un angle ({{incode|Angle}} avec ou sans unité)
* trois angles d'Euler {{incode|α}}, {{incode|β}}, {{incode|γ}}
|-
| {{incode|mrotate(m; axis; angle)}}
|-
| {{incode|mrotate(m; α; β; γ)}}
|-
| {{incode|mrotatex(m; angle)}}
| [https://fr.wikipedia.org/wiki/Matrice_de_rotation Rotation] autour de l'axe X.
|-
| {{incode|mrotatey(m; angle)}}
| [https://fr.wikipedia.org/wiki/Matrice_de_rotation Rotation] autour de l'axe Y.
|-
| {{incode|mrotatez(m; angle)}}
| [https://fr.wikipedia.org/wiki/Matrice_de_rotation Rotation] autour de l'axe Z.
|-
| {{incode|mtranslate(m; vector)}}
| rowspan="2" | [https://fr.wikipedia.org/wiki/Translation#Coordonn%C3%A9es_homog%C3%A8nes Translation] par un {{incode|vector}} ({{incode|Vector}}) ou des valeurs X, Y, Z. Si une {{incode|Rotation}} est translatée, l'objet retourné est un {{incode|Placement}}.
|-
| {{incode|mtranslate(m; x; y; z)}}
|-
| {{incode|mscale(m; vector)}}
| rowspan="2" | [https://en.wikipedia.org/wiki/Scaling_(geometry)#Matrix_representation Mise à l'échelle] par un {{incode|vector}} ({{incode|Vector}}) ou des valeurs X, Y, Z.
|-
| {{incode|mscale(m; x; y; z)}}
|}
{{Top}}
<span id="Conditional_expressions"></span>
== Expressions conditionnelles ==

Les expressions conditionnelles sont de la forme {{incode|condition ? resultTrue : resultFalse}}. (''condition ? résultat si VRAI : résultat si FAUX''). La condition est définie comme une expression dont le résultat est {{incode|0}} (faux) ou différent de zéro (vrai).


The following [https://en.wikipedia.org/wiki/Relational_operator#Standard_relational_operators relational operators] are defined:
Les [https://en.wikipedia.org/wiki/Relational_operator#Standard_relational_operators opérateurs relationnels] suivants sont définis:
{| class="wikitable float-right mw-collapsible mw-uncollapsed"
{| class="wikitable"
!style="width: 33%;"|Unit
!style="width: 33%;"|Unité
!style="width: 66%;"|Description
!style="width: 66%;"|Description
|-
|-
| style="text-align:center;" | '''=='''
| ==
| equal to
| égal à
|-
|-
| style="text-align:center;" | '''!='''
| !=
| différent de
| not equal to
|-
|-
| style="text-align:center;" | '''>'''
| >
| strictement plus grand que
| greater than
|-
|-
| style="text-align:center;" | '''<'''
| <
| strictement plus petit que
| less than
|-
|-
| style="text-align:center;" | '''>='''
| >=
| greater than or equal to
| plus grand ou égal à
|-
|-
| style="text-align:center;" | '''<='''
| <=
| less than or equal to
| plus petit ou égal à
|}
|}
{{Top}}
<span id="Units"></span>
== Unités ==


Les unités peuvent être directement utilisées dans des expressions. L'analyseur les connecte à la valeur précédente. Donc {{incode|2mm}} ou {{incode|2 mm}} sont valides tandis que {{incode|mm}} est invalide car il n'y a pas de valeur.
<div class="mw-translate-fuzzy">
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 <=.
</div>


Toutes les valeurs doivent avoir une unité. Par conséquent, vous devez généralement utiliser une unité pour les valeurs dans les feuilles de calcul.<br/>
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.
Dans certains cas, cela fonctionne même sans unité, par exemple si vous avez dans la cellule B1 du calculateur, juste le nombre {{incode|1.5}} et qu'il se reporte à la hauteur du pavé. Cela ne fonctionne que parce que la hauteur du pad prédéfinit l'unité {{incode|mm}} utilisée si aucune unité n'est donnée. Il échouera néanmoins si vous utilisez pour la hauteur du pad, par exemple {{incode|Sketch1.Constraints.Width - Spreadsheet.B1}} car {{incode|Sketch1.Constraints.Width}} a une unité et {{incode|Spreadsheet.B1}} n'en a pas.


Les unités avec des exposants peuvent être directement entrées. Donc, par exemple {{incode|mm^3}} sera reconnu comme mm³ et {{incode|m^3}} sera reconnu comme m³.
All values must have a unit. Therefore you must in general use a unit for values in spreadsheets.<br/>
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.


Si vous avez une variable dont le nom est celui d'une unité, vous devez mettre la variable entre {{incode|<< >>}} pour éviter qu'elle ne soit reconnue comme une unité. Par exemple, si vous avez la dimension {{incode|Sketch.Constraints.A}}, elle serait reconnue comme l'unité Ampère. Par conséquent, vous devez l'écrire dans l'expression sous la forme {{incode|Sketch.Constraints.<<A>>}}.
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 unités suivantes sont reconnues par l’analyseur d’expression:
<div class="mw-translate-fuzzy">
Les fonctions trigonométriques utilisent les degrés par défaut.
Pour les mesures utilisant le radian, il faut ajouter '''rad''' suivant la <em>première</em> valeur angulaire dans l'expression.
Exemple : cos(45) est identique à cos(pi rad / 4).
</div>


<span id="Amount_of_substance"></span>
The following units are recognized by the expression parser:
=== Quantité de substance ===


{| class="wikitable"
Amount of substance:
!style="width: 33%;"|Unité
{| class="wikitable float-right mw-collapsible mw-collapsed"
!style="width: 33%;"|Unit
!style="width: 66%;"|Description
!style="width: 66%;"|Description
|-
| mmol
| Milli[https://fr.wikipedia.org/wiki/Mole_(unit%C3%A9) mole]
|-
|-
| mol
| mol
| [https://en.wikipedia.org/wiki/Mole_(unit) Mole]
| [https://fr.wikipedia.org/wiki/Mole_(unit%C3%A9) Mole]
|}
|}


Angle:
=== Angle ===

{| class="wikitable float-right mw-collapsible mw-collapsed"
{| class="wikitable"
!style="width: 33%;"|Unit
!style="width: 33%;"|Unité
!style="width: 66%;"|Description
!style="width: 66%;"|Description
|-
|-
| °
| °
| [https://en.wikipedia.org/wiki/Degree_(angle) Degree]; alternative to the unit ''deg''
| [https://fr.wikipedia.org/wiki/Degree_(angle) Degré]; alternative à l'unité deg
|-
|-
| deg
| deg
| [https://en.wikipedia.org/wiki/Degree_(angle) Degree]; alternative to the unit ''°''
| [https://fr.wikipedia.org/wiki/Degree_(angle) Degré]; alternative à l'unité °
|-
|-
| rad
| rad
| [https://en.wikipedia.org/wiki/Radian Radian]
| [https://fr.wikipedia.org/wiki/Radian Radian]
|-
|-
| gon
| gon
| [https://en.wikipedia.org/wiki/Gon_(unit) Gradian]
| [https://fr.wikipedia.org/wiki/Gon_(unit) Gradian]
|-
|-
| S
| S
| [https://en.wikipedia.org/wiki/Minute_and_second_of_arc Second of arc]
| [https://fr.wikipedia.org/wiki/Sous-unit%C3%A9s_du_degr%C3%A9 Seconde d'arc]; alternative à l'unité ″
|-
|-
| ″
| ″
| [https://en.wikipedia.org/wiki/Minute_and_second_of_arc Second of arc]; alternative to the unit ''S''
| [https://fr.wikipedia.org/wiki/Sous-unit%C3%A9s_du_degr%C3%A9 Seconde d'arc]; alternative à l'unité S
|-
|-
| M
| M
| [https://en.wikipedia.org/wiki/Minute_and_second_of_arc Minute of arc]
| [https://fr.wikipedia.org/wiki/Sous-unit%C3%A9s_du_degr%C3%A9 Minute d'arc]; alternative à l'unité ′
|-
|-
| ′
| ′
| [https://en.wikipedia.org/wiki/Minute_and_second_of_arc Minute of arc]; alternative to the unit ''M''
| [https://fr.wikipedia.org/wiki/Sous-unit%C3%A9s_du_degr%C3%A9 Minute d'arc]; alternative à l'unité M
|}
|}


Current:
<span id="Current"></span>
=== Courant ===
{| class="wikitable float-right mw-collapsible mw-collapsed"

!style="width: 33%;"|Unit
{| class="wikitable"
!style="width: 33%;"|Unité
!style="width: 66%;"|Description
!style="width: 66%;"|Description
|-
|-
| mA
| mA
| Milli[https://en.wikipedia.org/wiki/Ampere ampere]
| Milli[https://fr.wikipedia.org/wiki/Amp%C3%A8re ampère]
|-
|-
| A
| A
| [https://en.wikipedia.org/wiki/Ampere Ampere]
| [https://fr.wikipedia.org/wiki/Amp%C3%A8re Ampère]
|-
|-
| kA
| kA
| Kilo[https://en.wikipedia.org/wiki/Ampere ampere]
| Kilo[https://fr.wikipedia.org/wiki/Amp%C3%A8re ampère]
|-
|-
| MA
| MA
| Mega[https://en.wikipedia.org/wiki/Ampere ampere]
| Méga[https://fr.wikipedia.org/wiki/Amp%C3%A8re ampère]
|}
|}


<span id="Electric_capacitance"></span>
Energy / Work:
=== Capacité électrique ===
{| class="wikitable float-right mw-collapsible mw-collapsed"

!style="width: 33%;"|Unit
{| class="wikitable"
!style="width: 33%;"|Unité
!style="width: 66%;"|Description
!style="width: 66%;"|Description
|-
| pF
| Pico[https://fr.wikipedia.org/wiki/Farad farad]
|-
| nF
| Nano[https://fr.wikipedia.org/wiki/Farad farad]
|-
| uF
| Micro[https://fr.wikipedia.org/wiki/Farad farad]; alternative à l'unité ''µF''
|-
| µF
| Micro[https://fr.wikipedia.org/wiki/Farad farad]; alternative à l'unité ''uF''
|-
| mF
| Milli[https://fr.wikipedia.org/wiki/Farad farad]
|-
| F
| [https://fr.wikipedia.org/wiki/Farad Farad]; 1 F = 1 s^4·A^2/m^2/kg
|}

<span id="Electric_charge"></span>
=== Charge électrique ===

{| class="wikitable"
!style="width: 33%;"|Unité
!style="width: 66%;"|Description
|-
| C
| [https://fr.wikipedia.org/wiki/Coulomb Coulomb]; 1 C = 1 A*s
|}

<span id="Electric_conductivity"></span>
=== Conductivité électrique ===

{| class="wikitable"
!style="width: 33%;"|Unité
!style="width: 66%;"|Description
|-
| uS
| Micro[https://fr.wikipedia.org/wiki/Siemens_(unit%C3%A9) siemens]; alternative à l'unité µS
|-
| µS
| Micro[https://fr.wikipedia.org/wiki/Siemens_(unit%C3%A9) siemens]; alternative à l'unité µS
|-
| mS
| Milli[https://fr.wikipedia.org/wiki/Siemens_(unit%C3%A9) siemens]
|-
| S
| [https://fr.wikipedia.org/wiki/Siemens_(unit%C3%A9) Siemens]; 1 S = 1 s^3·A^2/kg/m^2
|-
| kS
| Kilo[https://fr.wikipedia.org/wiki/Siemens_(unit%C3%A9) Siemens]
|-
| MS
| Mega[https://fr.wikipedia.org/wiki/Siemens_(unit%C3%A9) Siemens]
|}

<span id="Electric_inductance"></span>
=== Inductance électrique ===

{| class="wikitable"
!style="width: 33%;"|Unité
!style="width: 66%;"|Description
|-
| nH
| Nano[https://fr.wikipedia.org/wiki/Henry_(unit%C3%A9) henry]
|-
| uH
| Micro[https://fr.wikipedia.org/wiki/Henry_(unit%C3%A9) henry]; alternative à l'unité ''µH''
|-
| µH
| Micro[https://fr.wikipedia.org/wiki/Henry_(unit%C3%A9) henry]; alternative à l'unité ''uH''
|-
| mH
| Milli[https://fr.wikipedia.org/wiki/Henry_(unit%C3%A9) henry]
|-
| H
| [https://fr.wikipedia.org/wiki/Henry_(unit%C3%A9) Henry]; 1 H = 1 kg·m^2/s^2/A^2
|}

<span id="Electric_potential"></span>
=== Potentiel électrique ===

{| class="wikitable"
!style="width: 33%;"|Unité
!style="width: 66%;"|Description
|-
| mV
| Milli[https://fr.wikipedia.org/wiki/Volt volt]
|-
| V
| [https://fr.wikipedia.org/wiki/Volt Volt]
|-
| kV
| Kilo[https://fr.wikipedia.org/wiki/Volt volt]
|}

<span id="Electric_resistance"></span>
=== Résistance électrique ===

{| class="wikitable"
!style="width: 33%;"|Unité
!style="width: 66%;"|Description
|-
| Ohm
| [https://fr.wikipedia.org/wiki/Ohm_(unit%C3%A9) Ohm]; 1 Ohm = 1 kg·m^2/s^3/A^2
|-
| kOhm
| Kilo[https://fr.wikipedia.org/wiki/Ohm_(unit%C3%A9) ohm]
|-
| MOhm
| Méga[https://fr.wikipedia.org/wiki/Ohm_(unit%C3%A9) ohm]
|}

<span id="Energy/work"></span>
=== Énergie/travail ===

{| class="wikitable"
!style="width: 33%;"|Unité
!style="width: 66%;"|Description
|-
| mJ
| Milli[https://fr.wikipedia.org/wiki/Joule joule]
|-
|-
| J
| J
| [https://en.wikipedia.org/wiki/Joule Joule]
| [https://fr.wikipedia.org/wiki/Joule Joule]
|-
| kJ
| Kilo[https://fr.wikipedia.org/wiki/Joule joule]
|-
| eV
| [https://fr.wikipedia.org/wiki/%C3%89lectronvolt Électronvolt]; 1 eV = 1.602176634e-19 J
|-
| keV
| Kilo[https://fr.wikipedia.org/wiki/%C3%89lectronvolt électronvolt]
|-
| MeV
| Méga[https://fr.wikipedia.org/wiki/%C3%89lectronvolt électronvolt]
|-
| kWh
| [https://fr.wikipedia.org/wiki/Kilowatt-heure Kilowatt-heure]; 1 kWh = 3.6e6 J
|-
|-
| Ws
| Ws
| [https://en.wikipedia.org/wiki/Joule#Watt_second Watt second]; alternative to the unit ''Joule''
| [https://fr.wikipedia.org/wiki/Joule#%C3%89quivalences Watt-seconde]; alternative à l'unité Joule
|-
|-
| VAs
| VAs
| [https://en.wikipedia.org/wiki/Joule Volt-ampere-second]; alternative to the unit ''Joule''
| [https://fr.wikipedia.org/wiki/Joule Volt ampère seconde]; alternative à l'unité Joule
|-
|-
| CV
| CV
| [https://en.wikipedia.org/wiki/Joule Coulomb·Volt]; alternative to the unit ''Joule''
| [https://fr.wikipedia.org/wiki/Joule Coulomb-volt]; alternative à l'unité Joule
|-
| cal
| [https://fr.wikipedia.org/wiki/Calorie Calorie]; 1 cal = 4.184 J
|-
| kcal
| Kilo[https://fr.wikipedia.org/wiki/Calorie calorie]
|}
|}


Force:
=== Force ===

{| class="wikitable float-right mw-collapsible mw-collapsed"
{| class="wikitable"
!style="width: 33%;"|Unit
!style="width: 33%;"|Unité
!style="width: 66%;"|Description
!style="width: 66%;"|Description
|-
|-
| mN
| mN
| Milli[https://en.wikipedia.org/wiki/Newton_(unit) newton]
| [https://fr.wikipedia.org/wiki/Newton_(unit%C3%A9) millinewton]
|-
|-
| N
| N
| [https://en.wikipedia.org/wiki/Newton_(unit) Newton]
| [https://fr.wikipedia.org/wiki/Newton_(unit%C3%A9) Newton]
|-
|-
| kN
| kN
| Kilo[https://en.wikipedia.org/wiki/Newton_(unit) newton]
| [https://fr.wikipedia.org/wiki/Newton_(unit%C3%A9) kilonewton]
|-
|-
| MN
| MN
| Mega[https://en.wikipedia.org/wiki/Newton_(unit) newton]
| [https://fr.wikipedia.org/wiki/Newton_(unit%C3%A9) méganewton]
|-
|-
| lbf
| lbf
| [https://en.wikipedia.org/wiki/Pound_(force) Pound of force]
| [https://fr.wikipedia.org/wiki/Livre-force Livre-force]
|}
|}


Length:
<span id="Length"></span>
===Longueur===
{| class="wikitable float-right mw-collapsible mw-collapsed"

!style="width: 33%;"|Unit
{| class="wikitable"
!style="width: 33%;"|Unité
!style="width: 66%;"|Description
!style="width: 66%;"|Description
|-
|-
| nm
| nm
| Nano[https://en.wikipedia.org/wiki/Metre meter]
| [https://fr.wikipedia.org/wiki/M%C3%A8tre nanomètre]
|-
|-
| um
| um
| Micro[https://en.wikipedia.org/wiki/Metre meter]; alternative to the unit ''µm''
| [https://fr.wikipedia.org/wiki/M%C3%A8tre micromètre]; alternative à l'unité µm
|-
|-
| µm
| µm
| Micro[https://en.wikipedia.org/wiki/Metre meter]; alternative to the unit ''mu''
| [https://fr.wikipedia.org/wiki/M%C3%A8tre micromètre]; alternative à l'unité um
|-
|-
| mm
| mm
| Milli[https://en.wikipedia.org/wiki/Metre meter]
| [https://fr.wikipedia.org/wiki/M%C3%A8tre millimètre]
|-
|-
| cm
| cm
| Centi[https://en.wikipedia.org/wiki/Metre meter]
| [https://fr.wikipedia.org/wiki/M%C3%A8tre centimètre]
|-
|-
| mm
| m
| Milli[https://en.wikipedia.org/wiki/Metre meter]
| [https://fr.wikipedia.org/wiki/M%C3%A8tre mètre]
|-
|-
| dm
| dm
| Deci[https://en.wikipedia.org/wiki/Metre meter]
| [https://fr.wikipedia.org/wiki/M%C3%A8tre décimètre]
|-
| m
| [https://en.wikipedia.org/wiki/Metre Meter]
|-
|-
| km
| km
| Kilo[https://en.wikipedia.org/wiki/Metre meter]
| [https://fr.wikipedia.org/wiki/M%C3%A8tre kilomètre]
|-
|-
| mil
| mil
| [https://en.wikipedia.org/wiki/Thousandth_of_an_inch Thousandth of an inch]; alternative to the unit ''thou''
| [https://en.wikipedia.org/wiki/Thousandth_of_an_inch millième de pouce]; alternative à l'unité thou
|-
|-
| thou
| thou
| [https://en.wikipedia.org/wiki/Thousandth_of_an_inch Thousandth of an inch]; alternative to the unit ''mil''
| [https://en.wikipedia.org/wiki/Thousandth_of_an_inch millième de pouce]; alternative à l'unité mil
|-
|-
| in
| in
| [https://en.wikipedia.org/wiki/Inch Inch]
| [https://fr.wikipedia.org/wiki/Pouce_(unit%C3%A9) pouce]; alternative à l'unité "
|-
| "
| [https://fr.wikipedia.org/wiki/Pouce_(unit%C3%A9) pouce]; alternative à l'unité in
|-
|-
| ft
| ft
| [https://en.wikipedia.org/wiki/Foot_(unit) Foot]; alternative to the unit '
| [https://fr.wikipedia.org/wiki/Pied_(unit%C3%A9) pied]; alternative à l'unité '
|-
|-
| '
| '
| [https://en.wikipedia.org/wiki/Foot_(unit) Foot]; alternative to the unit ''ft''
| [https://fr.wikipedia.org/wiki/Pied_(unit%C3%A9) pied]; alternative à l'unité ft
|-
|-
| yd
| yd
| [https://en.wikipedia.org/wiki/Yard Yard]
| [https://fr.wikipedia.org/wiki/Verge_(unit%C3%A9) yard ou verge]
|-
|-
| mi
| mi
| [https://en.wikipedia.org/wiki/Mile Mile]
| [https://fr.wikipedia.org/wiki/Mille_(unit%C3%A9) mille]
|}
|}


<span id="Luminous_intensity"></span>
Luminous intensity:
=== Intensité lumineuse ===
{| class="wikitable float-right mw-collapsible mw-collapsed"

!style="width: 33%;"|Unit
{| class="wikitable"
!style="width: 33%;"|Unité"
!style="width: 66%;"|Description
!style="width: 66%;"|Description
|-
|-
| cd
| cd
| [https://en.wikipedia.org/wiki/Candela Candela]
| [https://fr.wikipedia.org/wiki/Candela Candela]
|}
|}


<span id="Magnetic_flux"></span>
Mass:
=== Flux magnétique ===
{| class="wikitable float-right mw-collapsible mw-collapsed"

!style="width: 33%;"|Unit
Flux d'induction magnétique
{| class="wikitable"
!style="width: 33%;"|Unité
!style="width: 66%;"|Description
|-
| Wb
| [https://fr.wikipedia.org/wiki/Weber_(unit%C3%A9) Weber]; 1 Wb = 1 kg*m^2/s^2/A
|}

<span id="Magnetic_flux_density"></span>
=== Densité de flux magnétique ===

Densité de flux magnétique :
{| class="wikitable float-right"
!style="width: 33%;"|Unité
!style="width: 66%;"|Description
|-
| G
| [https://fr.wikipedia.org/wiki/Gauss_(unit%C3%A9) Gauss]; 1 G = 1 e-4 T
|-
| T
| [https://fr.wikipedia.org/wiki/Tesla_(unit%C3%A9) Tesla]; 1 T = 1 kg/s^2/A
|}

<span id="Mass"></span>
=== Poids ===

{| class="wikitable"
!style="width: 33%;"|Unité
!style="width: 66%;"|Description
!style="width: 66%;"|Description
|-
|-
| ug
| ug
| Micro[https://en.wikipedia.org/wiki/Gram gram]; alternative to the unit ''µg''
| [https://fr.wikipedia.org/wiki/Gramme microgramme]; alternative à l'unité µg
|-
|-
| µg
| µg
| Micro[https://en.wikipedia.org/wiki/Gram gram]; alternative to the unit ''ug''
| [https://fr.wikipedia.org/wiki/Gramme microgramme]; alternative à l'unité ug
|-
|-
| mg
| mg
| Milli[https://en.wikipedia.org/wiki/Gram gram]
| [https://fr.wikipedia.org/wiki/Gramme milligramme]
|-
|-
| g
| g
| [https://en.wikipedia.org/wiki/Gram Gram]
| [https://fr.wikipedia.org/wiki/Gramme gramme]
|-
|-
| kg
| kg
| Kilo[https://en.wikipedia.org/wiki/Gram gram]
| [https://fr.wikipedia.org/wiki/Gramme kilogramme]
|-
|-
| t
| t
| [https://en.wikipedia.org/wiki/Tonne Tonne]
| [https://fr.wikipedia.org/wiki/Tonne Tonne]
|-
|-
| oz
| oz
| [https://en.wikipedia.org/wiki/Ounce Ounce]
| [https://fr.wikipedia.org/wiki/Once_(unit%C3%A9) Once]
|-
|-
| lb
| lb
| [https://en.wikipedia.org/wiki/Pound_(mass) Pound]; alternative to the unit ''lbm''
| [https://fr.wikipedia.org/wiki/Livre_(unit%C3%A9_de_masse) livre]; alternative à l'unité lbm
|-
|-
| lbm
| lbm
| [https://en.wikipedia.org/wiki/Pound_(mass) Pound]; alternative to the unit ''lb''
| [https://fr.wikipedia.org/wiki/Livre_(unit%C3%A9_de_masse) Pound]; alternative à l'unité lb
|-
|-
| st
| st
| [https://en.wikipedia.org/wiki/Stone_(weight) Stone]
| [https://fr.wikipedia.org/wiki/Stone_(unit%C3%A9) Stone]
|-
|-
| cwt
| cwt
Line 449: Line 902:
|}
|}


<span id="Power"></span>
<div class="mw-translate-fuzzy">
=== Expressions conditionnelles ===
=== Puissance ===

</div>
{| class="wikitable"
!style="width: 33%;"|Unité
!style="width: 66%;"|Description
|-
| W
| [https://fr.wikipedia.org/wiki/Watt Watt]
|-
| kW
| Kilo[https://fr.wikipedia.org/wiki/Watt watt]
|}

<span id="Pressure"></span>
=== Pression ===


{| class="wikitable"
Pressure:
!style="width: 33%;"|Unité
{| class="wikitable float-right mw-collapsible mw-collapsed"
!style="width: 33%;"|Unit
!style="width: 66%;"|Description
!style="width: 66%;"|Description
|-
|-
| Pa
| Pa
| [https://en.wikipedia.org/wiki/Pascal_(unit) Pascal]
| [https://fr.wikipedia.org/wiki/Pascal_(unit%C3%A9) pascal]
|-
|-
| kPa
| kPa
| Kilo[https://en.wikipedia.org/wiki/Pascal_(unit) pascal]
| Kilo[https://fr.wikipedia.org/wiki/Pascal_(unit%C3%A9) pascal]
|-
|-
| MPa
| MPa
| Mega[https://en.wikipedia.org/wiki/Pascal_(unit) pascal]
| Méga[https://fr.wikipedia.org/wiki/Pascal_(unit%C3%A9) pascal]
|-
|-
| GPa
| GPa
| Giga[https://en.wikipedia.org/wiki/Pascal_(unit) pascal]
| Giga[https://fr.wikipedia.org/wiki/Pascal_(unit%C3%A9) pascal]
|-
|-
| uTorr
| uTorr
| Micro[https://en.wikipedia.org/wiki/Torr torr]; alternative to the unit ''µTorr''
| Micro[https://fr.wikipedia.org/wiki/Torr torr]; alternative à l'unité µTorr
|-
|-
| µTorr
| µTorr
| Micro[https://en.wikipedia.org/wiki/Torr torr]; alternative to the unit ''uTorr''
| Micro[https://fr.wikipedia.org/wiki/Torr torr]; alternative à l'unité uTorr
|-
|-
| mTorr
| mTorr
| Milli[https://en.wikipedia.org/wiki/Torr torr]
| Milli[https://fr.wikipedia.org/wiki/Torr torr]
|-
|-
| Torr
| Torr
| [https://en.wikipedia.org/wiki/Torr Torr]
| [https://fr.wikipedia.org/wiki/Torr Torr]; 1 Torr = 133.32 Pa
|-
|-
| psi
| psi
| [https://en.wikipedia.org/wiki/Pounds_per_square_inch Pound-force per square inch]
| [https://fr.wikipedia.org/wiki/Livre-force_par_pouce_carr%C3%A9 Livre-force par pouce carré]; 1 psi = 6.895 kPa
|-
|-
| ksi
| ksi
| Kilo[https://en.wikipedia.org/wiki/Pounds_per_square_inch pound-force per square inch]
| Kilo[https://fr.wikipedia.org/wiki/Livre-force_par_pouce_carr%C3%A9 livre-force par pouce carré]
|}
|}


Temperature:
<span id="Temperature"></span>
=== Température ===
{| class="wikitable float-right mw-collapsible mw-collapsed"

!style="width: 33%;"|Unit
{| class="wikitable"
!style="width: 33%;"|Unité
!style="width: 66%;"|Description
!style="width: 66%;"|Description
|-
|-
| uK
| uK
| Micro[https://en.wikipedia.org/wiki/Kelvin kelvin]; alternative to the unit ''µK''
| [https://fr.wikipedia.org/wiki/Kelvin microkelvin]; alternative à l'unité µK
|-
|-
| µK
| µK
| Micro[https://en.wikipedia.org/wiki/Kelvin kelvin]; alternative to the unit ''uK''
| [https://fr.wikipedia.org/wiki/Kelvin microkelvin]; alternative à l'unité uK
|-
|-
| mK
| mK
| Milli[https://en.wikipedia.org/wiki/Kelvin kelvin]
| [https://fr.wikipedia.org/wiki/Kelvin millikelvin]
|-
|-
| K
| K
| [https://en.wikipedia.org/wiki/Kelvin Kelvin]
| [https://fr.wikipedia.org/wiki/Kelvin Kelvin]
|}
|}


<span id="Time"></span>
Time:
=== Temps ===
{| class="wikitable float-right mw-collapsible mw-collapsed"

!style="width: 33%;"|Unit
{| class="wikitable"
!style="width: 33%;"|Unité
!style="width: 66%;"|Description
!style="width: 66%;"|Description
|-
|-
| s
| s
| [https://en.wikipedia.org/wiki/Second Second]
| [https://fr.wikipedia.org/wiki/Seconde_(temps) Seconde]
|-
|-
| min
| min
| [https://en.wikipedia.org/wiki/Minute Minute]
| [https://fr.wikipedia.org/wiki/Minute_(temps) Minute]
|-
|-
| h
| h
| [https://en.wikipedia.org/wiki/Hour Hour]
| [https://fr.wikipedia.org/wiki/Heure Heure]
|-
| Hz (1/s)
| [https://fr.wikipedia.org/wiki/Hertz Hertz]
|-
| kHz
| Kilo[https://fr.wikipedia.org/wiki/Hertz hertz],
|-
| MHz
| Méga[https://fr.wikipedia.org/wiki/Hertz hertz]
|-
| GHz
| Giga[https://fr.wikipedia.org/wiki/Hertz hertz]
|-
| THz
| Téra[https://fr.wikipedia.org/wiki/Hertz hertz]
|}
|}


=== Volume ===
Torque:

{| class="wikitable float-right mw-collapsible mw-collapsed"
{| class="wikitable"
!style="width: 33%;"|Unit
!style="width: 33%;"|Unité
!style="width: 66%;"|Description
!style="width: 66%;"|Description
|-
|-
| Nm
| ml
| [https://en.wikipedia.org/wiki/Newton_metre Newton metre]
| Milli[https://fr.wikipedia.org/wiki/Litre litre]
|-
| l
| [https://fr.wikipedia.org/wiki/Litre Litre]
|-
| cft
| [https://fr.wikipedia.org/wiki/Pied_(unit%C3%A9) Pied cubique]
|}
|}


<span id="Special_imperial_units"></span>
Volume:
=== Unités impériales spéciales ===
{| class="wikitable float-right mw-collapsible mw-collapsed"

!style="width: 33%;"|Unit
{| class="wikitable"
!style="width: 33%;"|Unité
!style="width: 66%;"|Description
!style="width: 66%;"|Description
|-
|-
| l
| mph
| [https://en.wikipedia.org/wiki/Litre Liter]
| [https://fr.wikipedia.org/wiki/Mille_par_heure Mille par heure]
|-
| sqft
| [https://fr.wikipedia.org/wiki/Pied_carr%C3%A9 Pied carré]
|}
|}


<span id="Unsupported_units"></span>
The following commonly used units are not yet supported:
=== Unités non supportées ===
{| class="wikitable float-right mw-collapsible mw-collapsed"

!style="width: 25%;"|Unit
Les unités suivantes, couramment utilisées, ne sont pas encore prises en charge ; pour certaines, une alternative est proposée :

{| class="wikitable"
!style="width: 25%;"|Unité
!style="width: 50%;"|Description
!style="width: 50%;"|Description
!style="width: 25%;"|Alternative
!style="width: 25%;"|Alternative
|-
|-
| C
| °C
| [https://en.wikipedia.org/wiki/Coulomb Coulomb]
| [https://en.wikipedia.org/wiki/Celsius Celsius ]
| [°C] + 273.15 K
| 1 A*s
|-
|-
| Hz
| °F
| [https://en.wikipedia.org/wiki/Hertz Hertz]
| [https://en.wikipedia.org/wiki/Fahrenheit Fahrenheit];
| ([°F] + 459.67) × ​5/9
| 1 /s
|-
| V
| [https://en.wikipedia.org/wiki/Volt Volt]
| 1 W/A
|-
| eV
| [https://en.wikipedia.org/wiki/Electronvolt Electronvolt]
| 1.602176634e-19 J
|-
| kWh
| [https://en.wikipedia.org/wiki/Kilowatt_hour Kilowatt hour]
| 3.6e6 J
|-
| bar
| [https://en.wikipedia.org/wiki/Bar_(unit) Bar]
| 100 kPa
|-
| T
| [https://en.wikipedia.org/wiki/Tesla_(unit) Tesla]
| 1 kg/s^2/A
|-
| F
| [https://en.wikipedia.org/wiki/Farad Farad]
| 1 s^4*A^2/m^2/kg
|-
| H
| [https://en.wikipedia.org/wiki/Henry_(unit) Henry]
| 1 kg*m^2/s^2/A^2
|-
|-
| u
| u
| [https://en.wikipedia.org/wiki/Unified_atomic_mass_unit Atomic mass unit]; alternative to the unit 'Da'
| [https://fr.wikipedia.org/wiki/Unit%C3%A9_de_masse_atomique_unifi%C3%A9e Unité de masse atomique unifiée]; alternative à l'unité Da
| 1.66053906660e-27 kg
| 1.66053906660e-27 kg
|-
|-
| Da
| Da
| [https://en.wikipedia.org/wiki/Unified_atomic_mass_unit Dalton]; alternative to the unit 'u'
| [https://fr.wikipedia.org/wiki/Unit%C3%A9_de_masse_atomique_unifi%C3%A9e Dalton]; alternative à l'unité u
| 1.66053906660e-27 kg
| 1.66053906660e-27 kg
|-
| cal
| [https://en.wikipedia.org/wiki/Calorie Calorie]
| 4.184 J
|-
|-
| sr
| sr
| [https://en.wikipedia.org/wiki/Steradian Steradian]
| [https://fr.wikipedia.org/wiki/Steradian Steradian]
| Pas directement
| not directly
|-
|-
| lm
| lm
| [https://en.wikipedia.org/wiki/Lumen_(unit) Lumen]
| [https://fr.wikipedia.org/wiki/Lumen_(unit%C3%A9) Lumen]
| Pas directement
| not directly
|-
|-
| lx
| lx
| [https://en.wikipedia.org/wiki/Lux Lux]
| [https://fr.wikipedia.org/wiki/Lux_(unit%C3%A9) Lux]
| Pas directement
| not directly
|-
|-
| Mpsi
| px
| Mega[https://en.wikipedia.org/wiki/Pounds_per_square_inch pound-force per square inch]
| [https://fr.wikipedia.org/wiki/Pixel Pixel]
| Pas directement
| 1000 ksi
|}
|}
{{Top}}
<span id="Invalid_characters_and_names"></span>
==Caractères et noms non valides==


La fonction expression est très puissante mais pour atteindre cette puissance, elle présente certaines limitations concernant certains caractères. Pour surmonter cela, FreeCAD propose d'utiliser des étiquettes et de les référencer à la place des noms d'objets. Dans les étiquettes, vous pouvez utiliser presque tous les caractères spéciaux.
== Références aux données CAD ==


Dans les cas où vous ne pouvez pas utiliser une étiquette, telle que le nom des contraintes d'une esquisse, vous devez savoir quels caractères ne sont pas autorisés.
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".


<span id="Labels"></span>
Le tableau suivant montre quelques exemples :
===Étiquettes===
{|{{Prettytable}}

Pour les [[Object_name/fr#Label_.28Etiquette.29|étiquettes]], il n'y a pas de caractères non valides, cependant certains caractères doivent être évités:
{| class="wikitable"
!style="width: 33%;"|Caractères
!style="width: 66%;"|Description
|-
| {{incode|'}}, {{incode|\}}, {{incode|"}}
| Doivent être évités en ajoutant {{incode|\}} devant eux.
|}

Par exemple, l'étiquette {{incode|Sketch\002}} doit être référencée comme {{incode|<<Sketch\\002>>}}.

<span id="Names"></span>
===Noms===

Les [[Object_name/fr#Name_.28Nom.29|Noms]] des objets tels que des dimensions, des esquisses, etc. ne doivent pas avoir les caractères ou les séquences de caractères répertoriés ci-dessous, sinon le nom n'est pas valide:

{| class="wikitable"
!style="width: 33%;"|Caractères / Séquences de caractères
!style="width: 66%;"|Description
|-
| '''+''', '''-''', '''*''', '''/''', '''^''', '''_''', '''<''', '''>''', '''(''', ''')''', '''{''', '''}''', '''[''', ''']''', '''.''', ''',''', '''='''
| Caractères qui sont des opérateurs mathématiques ou qui font partie de constructions mathématiques
|-
| '''A''', '''kA''', '''mA''', '''MA''', '''C''', '''G''', '''F''', '''uF''', '''µF''', '''J''', '''K''', ''' ' ''', ''' ft ''', '''°''' et bien d'autres!
| Caractères et séquences de caractères qui sont des unités (voir le paragraphe [[Unit.C3.A9s|unités]])
|-
| '''#''', '''!''', '''?''', '''§''', '''$''', '''%''', '''&''', ''':''', ''';''', '''\''', '''<nowiki>|</nowiki>''', '''~''', '''∆''', '''¿''', and many more!
| Caractères utilisés comme espace réservé ou pour déclencher des opérations spéciales
|-
| '''pi''', '''e'''
| Constantes mathématiques
|-
| '''´''', '''`''', ''' ' ''', '''"'''
| Caractères utilisés pour les accents
|-
| espace
| Un espace définit la fin d'un nom et ne peut donc pas être utilisé
|}

Par exemple, le nom suivant est valide: {{incode|<<Sketch>>.Constraints.T2üßµ@}}, alors que ces noms sont non valables: {{incode|<<Sketch>>.Constraints.test\result_2}} (\r signifie "retour chariot") ou {{incode|<<Sketch>>.Constraints.mol}} (mol est une unité).

'''Remarque:''' puisque des noms plus courts (surtout s'ils n'ont qu'un ou deux caractères) peuvent facilement entraîner des noms invalides, envisagez d'utiliser des noms plus longs et/ou d'établir une convention de dénomination appropriée.

<span id="Cell_aliases"></span>
===Alias de cellules===

Voir [[Spreadsheet_SetAlias/fr#Utilisation|Spreadsheet Alias]].
{{Top}}
<span id="Reference_to_CAD_data"></span>
== Référence aux données CAO ==

Il est possible d'utiliser des données du modèle lui-même dans une expression. Pour référencer une propriété, utilisez {{incode|object_name.property}} ou {{incode|<<object_label>>.property}}, les étiquettes doivent être incluses dans {{incode|<<}} et {{incode|>>}}. Si vous souhaitez utiliser des étiquettes, elles doivent être uniques.

Tous les exemples suivants font référence à l'objet par son nom, mais dans tous les cas, l'étiquette de l'objet peut également être utilisée.

Si la propriété est un composé de champs, chaque champs est accessible sous la forme {{incode|object_name.property.field}}.

Pour référencer les objets de la liste, utilisez {{incode|object_name.list[list_index]}}. Si vous souhaitez référencer une contrainte dans une esquisse, utilisez {{incode|Sketch.Constraints[16]}}. Si vous êtes dans la même esquisse, vous pouvez omettre son nom et utiliser simplement {{incode|Constraints[16]}}. Notez que l'index commence à 0, et que la contrainte 17 doit donc être référencée par {{incode|Constraints[16]}}.

Pour référencer l'objet lui-même, utilisez la pseudo-propriété {{incode|_self}} : {{incode|object_name._self}}.

Le tableau suivant montre plus davantage d'exemples :
{| class="wikitable"
!Données CAO
!Données CAO
!Appel dans l'expression
!Appel dans l'expression
!Résultat
!Résultat
|-
|-
|Longueur paramétrique d'un Cube de l'atelier Part
|Longueur d'un [[Part_Box/fr|Part Cube]]
|Cube.Length
|{{incode|Box.Length}}
|Longueur en mm
|Longueur avec unités (mm)
|-
|-
|Volume du Cube
|Volume du Cube
|Cube.Shape.Volume
|{{incode|Box.Shape.Volume}}
|Volume en mm&sup3; sans unité
|Volume en mm&sup3 ; sans unités
|-
|-
|Type de la forme Cube
|Type de forme du Cube
|Cube.Shape.ShapeType
|{{incode|Box.Shape.ShapeType}}
|String : Solide
|Chaîne de caractère : Solid
|-
|-
|Label du Cube
|Etiquette du Cube
|Cube.Label
|{{incode|Box.Label}}
|Chaîne de caractère : Label
|String : Label
|-
|-
|coordonnée x du centre de gravité du Cube
|Coordonnée X du centre de masse du Cube
|Cube.Shape.CenterOfMass.x
|{{incode|Box.Shape.CenterOfMass.x}}
|coordonnée x en mm sans unité
|Coordonnée X en mm sans unité
|-
|-
|Coordonnée X de l'emplacement du Cube
|Valeur d'une contrainte dans une esquisse
|{{incode|Box.Placement.Base.x}}
|Constraints.Largeur
|Coordonnée X avec unités (mm)
|Valeur numérique de la contrainte nommée "Largeur" dans l'esquisse
|-
|-
|Composante X de l'axe de rotation du placement du Cube
|Valeur d'une contrainte provenant d'une autre esquisse
|{{incode|Box.Placement.Rotation.Axis.x}}
|MonEsquisse.Constraints.Largeur
|Composante X du vecteur unitaire en mm sans unités
|Valeur numérique de la contrainte nommée "Largeur" dans l'esquisse nommée "MonEsquisse"
|-
|Angle de rotation du placement du Cube
|{{incode|Box.Placement.Rotation.Angle}}
|Angle de rotation avec unités (deg)
|-
|Objet Cube complet
|{{incode|Box._self}}
|Objet de type <Part::PartFeature>>.
|-
|Valeur de la contrainte dans une esquisse
|{{incode|Constraints.Width}}
|Valeur numérique de la contrainte nommée {{incode|Width}} dans l'esquisse, si l'expression est utilisée dans l'esquisse elle-même.
|-
|Valeur de la contrainte dans une esquisse
|{{incode|MonSketch.Constraints.Width}}
|Valeur numérique de la contrainte nommée {{incode|Width}} dans l'esquisse, si l'expression est utilisée en dehors de l'esquisse.
|-
|-
|Valeur d'un alias de feuille de calcul
|Valeur d'un alias de feuille de calcul
|{{incode|Spreadsheet.Depth}}
|MaFeuille.Profondeur
|Valeur de l'alias nommé "Profondeur" dans la feuille de calcul nommée "MaFeuille"
|Valeur de l'alias {{incode|Depth}} dans la feuille de calcul {{incode|Spreadsheet}}.
|-
|-
|Valeur d'une propriété locale
|Valeur d'une propriété locale
|Length
|{{incode|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é.
|Valeur de la propriété {{PropertyData|Length}} dans, par exemple, un objet Pad, si l'expression est utilisée dans, par exemple, {{PropertyData|Length2}} dans le même objet.
|}
|}


<span id="Cyclic_dependencies"></span>
=== Dépendances cycliques ===

FreeCAD vérifie les dépendances en se basant sur la relation entre les objets du document, et non sur les propriétés. Cela signifie que vous ne pouvez pas fournir des données à un objet et interroger ce même objet pour obtenir des résultats. Par exemple, même s'il n'y a pas de dépendances cycliques lorsque les propriétés elles-mêmes sont prises en compte, vous ne pouvez pas avoir un objet qui obtient ses dimensions à partir d'une feuille de calcul et ensuite afficher le volume de cet objet dans la même feuille de calcul. Vous devez utiliser deux feuilles de calcul, l'une pour piloter votre modèle et l'autre pour les rapports.

En guise de solution de contournement, il est possible d'afficher une plage de cellules de la deuxième feuille de calcul dans la première (ou vice versa) en créant une [[Spreadsheet_Workbench/fr#Liaison_entre_cellules|liaison entre cellules]] avec l'option {{MenuCommand|Masquer la dépendance de la liaison}}.

Une autre façon de contourner les dépendances cycliques consiste à masquer la référence en utilisant la fonction {{incode|href}} ou {{incode|hiddenref}} pour chaque expression, par exemple : {{incode|href(Box.Length)}}.

Remarquez que les deux solutions mentionnées doivent être utilisées avec prudence, et qu'elles ne fonctionnent pas si les propriétés qui sont rapportées dépendent de dimensions qui sont pilotées à partir de la même feuille de calcul.
{{Top}}
<span id="Document-wide_global_variables"></span>
== Variables globales ==
== 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 [[Spreadsheet Workbench/fr|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.
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 [[Spreadsheet Workbench/fr|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.
{{Top}}

<span id="Cross-document_linking"></span>
== Liaison entre documents ==
== Liaison entre documents ==


Il est possible (avec limitations) de définir une propriété d'un objet dans votre document actuel (fichier ".FCstd") en utilisant une expression pour référencer une propriété d'un objet contenu dans un autre document (fichier ".FCstd"). Par exemple, une cellule dans une feuille de calcul ou la {{PropertyData/fr|Length}} d'un cube de pièce, etc. dans un document peut être définie par une expression faisant référence à la valeur de placement X ou à une autre propriété d'un objet contenu dans un autre document.
<div class="mw-translate-fuzzy">
Il est possible de faire référence à une feuille de calcul d'un document depuis d'autres documents.
</div>


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.
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 avec la feuille de calcul est créé et enregistré (nommé), vous pouvez créer des documents dépendants en toute sécurité. Par exemple, si vous nommez le document maître {{incode|master}}, la feuille de calcul {{incode|modelConstants}} et attribuez à une cellule un nom d'alias {{incode|Length}}, vous pouvez ensuite accéder à la valeur comme suit:
<div class="mw-translate-fuzzy">
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.
</div>


master#modelConstants.Length
{{incode|master#modelConstants.Length}}


Note that the master document must be loaded for the values in the master to be available to the dependent document.
Remarquez que le document maître doit être chargé pour que les valeurs de ce dernier soient disponibles pour le document dépendant.

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 {{Button|OK}} devient actif.


Bien sûr, vous pouvez charger les documents correspondants à tout moment pour y faire les modifications que vous voudrez.
Bien sûr, vous pouvez charger les documents correspondants à tout moment pour y faire les modifications que vous voudrez.
{{Top}}

<span id="Known_issues_/_remaining_tasks"></span>
== Problèmes connus / tâches restantes ==
== Problèmes connus / tâches restantes ==


* FreeCAD ne dispose pas encore d'un gestionnaire d'expressions intégré où toutes les expressions d'un document sont listées et peuvent être créées, supprimées, interrogées etc... Une extension est disponible : [https://github.com/gbroques/fcxref fcxref expression manager].
* 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.
* les bogues et tickets ouverts pour les expressions sont référencés sur [https://github.com/FreeCAD/FreeCAD/issues?q=is%3Aissue+is%3Aopen+label%3AExpressions GitHub].
* 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.
{{Top}}
* 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 [https://forum.freecadweb.org/viewtopic.php?p=302500#p302381; la discussion sur le forum].
* les bogues et tickets ouverts pour les expressions sont référencés sur le [https://freecadweb.org/tracker/set_project.php?project_id=4;20 Bugtracker de Freecad, catégorie Expressions]

{{Userdocnavi/fr}}
[[Category:User Documentation/fr]]
[[Category:API/fr]]


{{Powerdocnavi{{#translation:}}}}
{{clear}}
[[Category:Spreadsheet{{#translation:}}]]

Latest revision as of 22:06, 9 January 2024

Présentation

Il est possible de définir des propriétés à l'aide d'expressions mathématiques. Dans l'interface graphique, les zones de sélection numérique ou les champs de saisie liés aux propriétés contiennent une icône bleue . Cliquez sur l'icône ou tapez le signe égal = pour ouvrir l'éditeur d'expression pour cette propriété particulière.

Une expression FreeCAD est une expression mathématique utilisant les opérateurs mathématiques standard, les fonctions et constantes prédéfinies comme décrit ci-dessous. En outre, une expression peut faire référence à des propriétés d'objet et utiliser des conditions. Les nombres d'une expression peuvent être éventuellement associés à une unité.

Les nombres peuvent utiliser une virgule , ou un point décimal . pour séparer les chiffres entiers des décimales. Lorsque le séparateur décimal est utilisé, il doit ê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 le sont.

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. Cela s'applique également aux références aux propriétés d'objets qui ont des unités, telles que les propriétés de longueur. Ainsi, Pad001.Length + 1 n'est pas valide car cela additionne un nombre pur à une propriété avec des unités de longueur, il faut Pad001.Length + 1mm.

Certaines erreurs liées à l'unité peuvent sembler peu intuitives, les expressions étant rejetées ou produisant des résultats qui ne correspondent pas aux unités de la propriété définie. En voici quelques exemples :

1/2mm n'est pas interprété comme un demi-millimètre mais comme 1/(2mm), ce qui donne : 0,5 mm^-1.

sqrt(2)mm n'est pas valide car l'appel de la fonction n'est pas un nombre. Il doit être saisi sous la forme sqrt(2) * 1mm.

Arguments de la fonction

Lorsqu'une fonction prend plusieurs arguments, ceux-ci peuvent être séparés par un point-virgule ; ou une virgule suivie par un espace , . Dans ce derniers cas, la virgule est convertie en point-virgule après la saisie. Quand on utilise un point-virgule, il n'est pas nécessaire de finir la ligne par un espace.

Les arguments peuvent inclure des références à des cellules dans une feuille de calcul. Une référence de cellule se compose de la lettre en majuscule de la ligne de la cellule suivie de son numéro de colonne, par exemple A1. Une cellule peut également être référencée en utilisant l'alias de la cellule, par exemple Spreadsheet.MyPartWidth.

Référencement d'objets

Comme indiqué ci-dessus, vous pouvez référencer un objet par sa DonnéesName. Mais vous pouvez également utiliser sa DonnéesLabel. Dans le cas d'une DonnéesLabel, vous devez l'entourer de double symboles << et >>, comme ceci <<Label>>.

Vous pouvez référencer n'importe quelle propriété numérique d'un objet. Par exemple, pour référencer la hauteur d'un cylindre, vous pouvez utiliser Cylinder.Height ou <<Label_of_cylinder>>.Height.

Pour plus d'informations sur le référencement des objets, voir Référence aux données CAO.

En haut

Constantes prises en charge

Les constantes suivantes sont prises en charge :

Constante Description
e nombre d'Euler
pi Pi

En haut

Opérateurs pris en charge

Les opérateurs suivants sont pris en charge :

Opération Description
+ Addition
- Soustraction
* Multiplication
/ Division en virgule flottante
% Reste
^ Exponentiation

En haut

Fonctions supportées

Fonctions mathématiques générales

Les fonctions mathématiques suivantes sont prises en charge :

Fonctions trigonométriques

Les fonctions trigonométriques utilisent le degré comme unité par défaut. Pour les radians, ajoutez rad après la première valeur dans une expression. Ainsi, par exemple, cos(45) est identique à cos(pi rad / 4). Les expressions en degrés peuvent utiliser soit deg soit °, par exemple 360deg - atan2(3 ; 4) ou 360° - atan2(3 ; 4). Si une expression est sans unité et doit être convertie en degrés ou en radians pour des raisons de compatibilité, multipliez-la par 1deg, ou 1rad selon le cas, par exemple (360 - X) * 1deg; (360 - X) * 1°; (0.5 + pi / 2) * 1rad.

Fonction Description Plage de saisie
acos(x) Arc cosinus -1 <= x <= 1
asin(x) Arc sinus -1 <= x <= 1
atan(x) Arc tangente, retourne la valeur dans la plage -90° < valeur < 90° tout
atan2(y; x) atan2 de la comptabilité y/x pour le quadrant, retour de la valeur dans la plage -180° < valeur <= 180° tout, l'entrée invalide x = y = 0 renvoie 0
cos(x) Cosinus tout
cosh(x) Cosinus hyperbolique tout
sin(x) Sinus tout
sinh(x) Sinus hyperbolique tout
tan(x) Tangente tout, sauf x = n*90 avec n = entier impair
tanh(x) Tangente hyperbolique tout
hypot(x; y) Somme pythagoricienne (hypoténuse), par ex. hypot(4; 3) = 5. x et y >= 0
cath(x; y) Étant donné l'hypoténuse, et un côté, donne l'autre côté du triangle, par ex. cath(5; 3) = 4. x >= y >= 0

Fonctions exponentielles et logarithmiques

Fonction Description Plage de saisie
exp(x) Fonction exponentielle tout
log(x) Logarithme népérien x > 0
log10(x) Logarithme décimal x > 0
pow(x; y) Les puissances tout
sqrt(x) Racine carrée x >= 0
cbrt(x) introduit dans la version 0.21 Racine cubique tout

Fonctions d'arrondi, de troncature et de reste

Fonction Description Plage de saisie
abs(x) Valeur absolue tout
ceil(x) Partie entière par excès, la plus petite valeur entière supérieure ou égale à x tout
floor(x) Partie entière, la plus grande valeur entière inférieure ou égale à x tout
mod(x; y) Reste après la division de x par y, le signe du résultat est celui du dividende. tout sauf y = 0
round(x) Arrondi au nombre entier le plus proche tout
trunc(x) Troncature au nombre entier le plus proche en direction de zéro tout

En haut

Statistiques et fonctions d'agrégation

Les fonctions d'agrégation prennent un ou plusieurs arguments.

Les arguments individuels pour agréger les fonctions peuvent être constitués de plages de cellules. Une plage de cellules est exprimée sous la forme de deux références de cellule séparées par deux points :, par exemple average(B1:B8) ou sum(A1:A4; B1:B4). Les références de cellule peuvent également utiliser des alias de cellule, par exemple average(StartTemp:EndTemp).

Les fonctions d'agrégation suivantes sont prises en charge :

Fonction Description Plage de saisie
average(a; b; c; ...) Valeur Moyenne des arguments, identique à sum(a; b; c; ...) / count(a; b; c; ...) tout
count(a; b; c; ...) Comptage des arguments, généralement utilisé pour les plages de cellules tout
max(a; b; c; ...) Valeur Maximum des arguments tout
min(a; b; c; ...) Valeur Minimum des arguments tout
stddev(a; b; c; ...) Écart type des valeurs des arguments tout
sum(a; b; c; ...) Somme des valeurs des arguments, généralement utilisé pour les plages de cellules tout

En haut

Manipulation de chaînes de caractères

Identification de chaînes de caractères

Les chaînes de caractères sont identifiées dans les expressions en les entourant de doubles chevrons ouvrants/fermants (comme les étiquettes).

Dans l'exemple suivant, "TEXT" est reconnu comme une chaîne de caractères : <<TEXT>>.

Concaténation de chaînes de caractères

Les chaînes de caractères peuvent être concaténées à l'aide du signe '+'.

L'exemple suivant <<MY>> + <<TEXT>> sera concaténé en "MYTEXT".

Conversion de chaînes de caractères

Les valeurs numériques peuvent être converties en chaînes de caractères avec la fonction str :

str(Box.Length.Value)

Formatage des chaînes de caractères

Le formatage des chaînes de caractères est pris en charge en utilisant le (vieux) style % de Python.

Tous les spécificateurs % tels que définis dans la documentation Python.

Par exemple, supposons que vous ayez un cube par défaut de 10mm de côté nommé "Box" (nomination par défaut de FreeCAD), l'expression suivante <<Cube length : %s>> % Box.Length se développera en "Cube length : 10.0 mm"

Au dessus d'un spécificateur de %, utilisez la syntaxe suivante : <<Cube length is %s and width is %s>> % tuple(Box.Length; Box.Width). Ou utilisez la concaténation : <<Cube length is %s>> % Box.Length + << and width is %s>> % Box.Width. Les deux se développeront en "Cube length is 10.0 mm and width is 10.0 mm".

Un exemple de fichier FreeCAD utilisant le formatage des chaînes de caractères est disponible dans le forum.

En haut

Fonctions de création d'objets

Les objets suivants peuvent être créés dans des expressions à l'aide des fonctions suivantes :

Type Fonction Description
Tuple tuple(a; b; ...) Exemple : tuple(2; 1; 2)
List list(a; b; ...) Exemple : list(2; 1; 2)
Vector vector(x; y; z) Crée un vecteur en utilisant trois valeurs unitaires sans unité ou valeurs unitaires Length.

Exemple : 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
)
Crée une matrice 4x4 dans l'ordre rangée-majeur (en) :

Un minimum d'un argument peut être fourni, comme matrix(1) qui crée une matrice identité.

Exemple : 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) Crée une Rotation en spécifiant ses axis (Vector) et unité d'angle (Angle ou pas d'unité) ou trois angles d'Euler α, β, γ.

Exemples :

  • rotation(vector(0; 1; 0); 45)
  • create(<<rotation>>; 30; 30; 30)
rotation(α; β; γ)
create(<<rotation>>; axis; angle)
create(<<rotation>>; α; β; γ)
Placement placement(base; rotation) Crée un Placement avec différents paramètres, notamment :
  • base : emplacement de la base (Vecteur)
  • center : emplacement du centre (Vecteur)
  • rotation : Rotation
  • axis : axe de rotation (Vecteur)
  • angle : angle de rotation (sans unité ou valeur unitaire d'Angle)
  • matrix : Matrice

Exemples :

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

En haut

Fonctions vectorielles

Fonctions : introduit dans la version 0.22.

Fonction / Opérateur Description
v1 + v2 Ajouter deux vecteurs.
v1 - v2 Soustraire deux vecteurs.
v * s Échelle uniforme d'un vecteur par s.
vangle(v1; v2) Angle en degrés entre deux vecteurs.
vcross(v1; v2) Produit vectoriel de deux vecteurs .
v1 * v2 Produit scalaire de deux vecteurs .
vdot(v1; v2)
vlinedist(v1; v2; v3) Distance entre le vecteur v1 et une ligne passant par v2 dans la direction v3.
vlinesegdist(v1; v2; v3) Distance entre le vecteur v1 et le point le plus proche d'un segment de droite allant de v2 à v3.
vlineproj(v1; v2; v3) Projeter le vecteur v1 sur une droite passant par v2 dans le sens v3.
vnormalize(v) Normaliser un vecteur en un vecteur unitaire.
vplanedist(v1) Distance entre le vecteur v1 et un plan défini par un point v2 et une normale v3.
vplaneproj(v1) Projeter le vecteur v1 sur un plan défini par un point v2 et une normale v3.
vscale(v; sx; sy; sz) Mettre à l'échelle de façon non uniforme un vecteur de sx dans la direction X, sy dans la direction Y et sz dans la direction Z.
vscalex(v; sx)
vscaley(v; sy)
vscalez(v; sz)

En haut

Fonctions matricielles

Rotation et Placement peuvent être représentés par une Matrix. Les fonctions suivantes dans le tableau ci-dessous, Matrix, Rotation ou Placement, prennent toutes comme premier paramètre m. Le type de l'objet renvoyé est le même que l'objet fourni en premier argument, sauf si l'on utilise mtranslate sur une Rotation, auquel cas c'est un Placement qui sera renvoyé.

Fonction Description
minvert(m) Calcule la matrice inversée.
mrotate(m; rotation) Rotation soit :
  • une Rotation
  • un (Vector) d'axe et un angle (Angle avec ou sans unité)
  • trois angles d'Euler α, β, γ
mrotate(m; axis; angle)
mrotate(m; α; β; γ)
mrotatex(m; angle) Rotation autour de l'axe X.
mrotatey(m; angle) Rotation autour de l'axe Y.
mrotatez(m; angle) Rotation autour de l'axe Z.
mtranslate(m; vector) Translation par un vector (Vector) ou des valeurs X, Y, Z. Si une Rotation est translatée, l'objet retourné est un Placement.
mtranslate(m; x; y; z)
mscale(m; vector) Mise à l'échelle par un vector (Vector) ou des valeurs X, Y, Z.
mscale(m; x; y; z)

En haut

Expressions conditionnelles

Les expressions conditionnelles sont de la forme condition ? resultTrue : resultFalse. (condition ? résultat si VRAI : résultat si FAUX). La condition est définie comme une expression dont le résultat est 0 (faux) ou différent de zéro (vrai).

Les opérateurs relationnels suivants sont définis:

Unité Description
== égal à
!= différent de
> strictement plus grand que
< strictement plus petit que
>= plus grand ou égal à
<= plus petit ou égal à

En haut

Unités

Les unités peuvent être directement utilisées dans des expressions. L'analyseur les connecte à la valeur précédente. Donc 2mm ou 2 mm sont valides tandis que mm est invalide car il n'y a pas de valeur.

Toutes les valeurs doivent avoir une unité. Par conséquent, vous devez généralement utiliser une unité pour les valeurs dans les feuilles de calcul.
Dans certains cas, cela fonctionne même sans unité, par exemple si vous avez dans la cellule B1 du calculateur, juste le nombre 1.5 et qu'il se reporte à la hauteur du pavé. Cela ne fonctionne que parce que la hauteur du pad prédéfinit l'unité mm utilisée si aucune unité n'est donnée. Il échouera néanmoins si vous utilisez pour la hauteur du pad, par exemple Sketch1.Constraints.Width - Spreadsheet.B1 car Sketch1.Constraints.Width a une unité et Spreadsheet.B1 n'en a pas.

Les unités avec des exposants peuvent être directement entrées. Donc, par exemple mm^3 sera reconnu comme mm³ et m^3 sera reconnu comme m³.

Si vous avez une variable dont le nom est celui d'une unité, vous devez mettre la variable entre << >> pour éviter qu'elle ne soit reconnue comme une unité. Par exemple, si vous avez la dimension Sketch.Constraints.A, elle serait reconnue comme l'unité Ampère. Par conséquent, vous devez l'écrire dans l'expression sous la forme Sketch.Constraints.<<A>>.

Les unités suivantes sont reconnues par l’analyseur d’expression:

Quantité de substance

Unité Description
mmol Millimole
mol Mole

Angle

Unité Description
° Degré; alternative à l'unité deg
deg Degré; alternative à l'unité °
rad Radian
gon Gradian
S Seconde d'arc; alternative à l'unité ″
Seconde d'arc; alternative à l'unité S
M Minute d'arc; alternative à l'unité ′
Minute d'arc; alternative à l'unité M

Courant

Unité Description
mA Milliampère
A Ampère
kA Kiloampère
MA Mégaampère

Capacité électrique

Unité Description
pF Picofarad
nF Nanofarad
uF Microfarad; alternative à l'unité µF
µF Microfarad; alternative à l'unité uF
mF Millifarad
F Farad; 1 F = 1 s^4·A^2/m^2/kg

Charge électrique

Unité Description
C Coulomb; 1 C = 1 A*s

Conductivité électrique

Unité Description
uS Microsiemens; alternative à l'unité µS
µS Microsiemens; alternative à l'unité µS
mS Millisiemens
S Siemens; 1 S = 1 s^3·A^2/kg/m^2
kS KiloSiemens
MS MegaSiemens

Inductance électrique

Unité Description
nH Nanohenry
uH Microhenry; alternative à l'unité µH
µH Microhenry; alternative à l'unité uH
mH Millihenry
H Henry; 1 H = 1 kg·m^2/s^2/A^2

Potentiel électrique

Unité Description
mV Millivolt
V Volt
kV Kilovolt

Résistance électrique

Unité Description
Ohm Ohm; 1 Ohm = 1 kg·m^2/s^3/A^2
kOhm Kiloohm
MOhm Mégaohm

Énergie/travail

Unité Description
mJ Millijoule
J Joule
kJ Kilojoule
eV Électronvolt; 1 eV = 1.602176634e-19 J
keV Kiloélectronvolt
MeV Mégaélectronvolt
kWh Kilowatt-heure; 1 kWh = 3.6e6 J
Ws Watt-seconde; alternative à l'unité Joule
VAs Volt ampère seconde; alternative à l'unité Joule
CV Coulomb-volt; alternative à l'unité Joule
cal Calorie; 1 cal = 4.184 J
kcal Kilocalorie

Force

Unité Description
mN millinewton
N Newton
kN kilonewton
MN méganewton
lbf Livre-force

Longueur

Unité Description
nm nanomètre
um micromètre; alternative à l'unité µm
µm micromètre; alternative à l'unité um
mm millimètre
cm centimètre
m mètre
dm décimètre
km kilomètre
mil millième de pouce; alternative à l'unité thou
thou millième de pouce; alternative à l'unité mil
in pouce; alternative à l'unité "
" pouce; alternative à l'unité in
ft pied; alternative à l'unité '
' pied; alternative à l'unité ft
yd yard ou verge
mi mille

Intensité lumineuse

Unité" Description
cd Candela

Flux magnétique

Flux d'induction magnétique

Unité Description
Wb Weber; 1 Wb = 1 kg*m^2/s^2/A

Densité de flux magnétique

Densité de flux magnétique :

Unité Description
G Gauss; 1 G = 1 e-4 T
T Tesla; 1 T = 1 kg/s^2/A

Poids

Unité Description
ug microgramme; alternative à l'unité µg
µg microgramme; alternative à l'unité ug
mg milligramme
g gramme
kg kilogramme
t Tonne
oz Once
lb livre; alternative à l'unité lbm
lbm Pound; alternative à l'unité lb
st Stone
cwt Hundredweight

Puissance

Unité Description
W Watt
kW Kilowatt

Pression

Unité Description
Pa pascal
kPa Kilopascal
MPa Mégapascal
GPa Gigapascal
uTorr Microtorr; alternative à l'unité µTorr
µTorr Microtorr; alternative à l'unité uTorr
mTorr Millitorr
Torr Torr; 1 Torr = 133.32 Pa
psi Livre-force par pouce carré; 1 psi = 6.895 kPa
ksi Kilolivre-force par pouce carré

Température

Unité Description
uK microkelvin; alternative à l'unité µK
µK microkelvin; alternative à l'unité uK
mK millikelvin
K Kelvin

Temps

Unité Description
s Seconde
min Minute
h Heure
Hz (1/s) Hertz
kHz Kilohertz,
MHz Mégahertz
GHz Gigahertz
THz Térahertz

Volume

Unité Description
ml Millilitre
l Litre
cft Pied cubique

Unités impériales spéciales

Unité Description
mph Mille par heure
sqft Pied carré

Unités non supportées

Les unités suivantes, couramment utilisées, ne sont pas encore prises en charge ; pour certaines, une alternative est proposée :

Unité Description Alternative
°C Celsius [°C] + 273.15 K
°F Fahrenheit; ([°F] + 459.67) × ​5/9
u Unité de masse atomique unifiée; alternative à l'unité Da 1.66053906660e-27 kg
Da Dalton; alternative à l'unité u 1.66053906660e-27 kg
sr Steradian Pas directement
lm Lumen Pas directement
lx Lux Pas directement
px Pixel Pas directement

En haut

Caractères et noms non valides

La fonction expression est très puissante mais pour atteindre cette puissance, elle présente certaines limitations concernant certains caractères. Pour surmonter cela, FreeCAD propose d'utiliser des étiquettes et de les référencer à la place des noms d'objets. Dans les étiquettes, vous pouvez utiliser presque tous les caractères spéciaux.

Dans les cas où vous ne pouvez pas utiliser une étiquette, telle que le nom des contraintes d'une esquisse, vous devez savoir quels caractères ne sont pas autorisés.

Étiquettes

Pour les étiquettes, il n'y a pas de caractères non valides, cependant certains caractères doivent être évités:

Caractères Description
', \, " Doivent être évités en ajoutant \ devant eux.

Par exemple, l'étiquette Sketch\002 doit être référencée comme <<Sketch\\002>>.

Noms

Les Noms des objets tels que des dimensions, des esquisses, etc. ne doivent pas avoir les caractères ou les séquences de caractères répertoriés ci-dessous, sinon le nom n'est pas valide:

Caractères / Séquences de caractères Description
+, -, *, /, ^, _, <, >, (, ), {, }, [, ], ., ,, = Caractères qui sont des opérateurs mathématiques ou qui font partie de constructions mathématiques
A, kA, mA, MA, C, G, F, uF, µF, J, K, ' , ft , ° et bien d'autres! Caractères et séquences de caractères qui sont des unités (voir le paragraphe unités)
#, !, ?, §, $, %, &, :, ;, \, |, ~, , ¿, and many more! Caractères utilisés comme espace réservé ou pour déclencher des opérations spéciales
pi, e Constantes mathématiques
´, `, ' , " Caractères utilisés pour les accents
espace Un espace définit la fin d'un nom et ne peut donc pas être utilisé

Par exemple, le nom suivant est valide: <<Sketch>>.Constraints.T2üßµ@, alors que ces noms sont non valables: <<Sketch>>.Constraints.test\result_2 (\r signifie "retour chariot") ou <<Sketch>>.Constraints.mol (mol est une unité).

Remarque: puisque des noms plus courts (surtout s'ils n'ont qu'un ou deux caractères) peuvent facilement entraîner des noms invalides, envisagez d'utiliser des noms plus longs et/ou d'établir une convention de dénomination appropriée.

Alias de cellules

Voir Spreadsheet Alias.

En haut

Référence aux données CAO

Il est possible d'utiliser des données du modèle lui-même dans une expression. Pour référencer une propriété, utilisez object_name.property ou <<object_label>>.property, les étiquettes doivent être incluses dans << et >>. Si vous souhaitez utiliser des étiquettes, elles doivent être uniques.

Tous les exemples suivants font référence à l'objet par son nom, mais dans tous les cas, l'étiquette de l'objet peut également être utilisée.

Si la propriété est un composé de champs, chaque champs est accessible sous la forme object_name.property.field.

Pour référencer les objets de la liste, utilisez object_name.list[list_index]. Si vous souhaitez référencer une contrainte dans une esquisse, utilisez Sketch.Constraints[16]. Si vous êtes dans la même esquisse, vous pouvez omettre son nom et utiliser simplement Constraints[16]. Notez que l'index commence à 0, et que la contrainte 17 doit donc être référencée par Constraints[16].

Pour référencer l'objet lui-même, utilisez la pseudo-propriété _self : object_name._self.

Le tableau suivant montre plus davantage d'exemples :

Données CAO Appel dans l'expression Résultat
Longueur d'un Part Cube Box.Length Longueur avec unités (mm)
Volume du Cube Box.Shape.Volume Volume en mm&sup3 ; sans unités
Type de forme du Cube Box.Shape.ShapeType String : Solide
Etiquette du Cube Box.Label String : Label
Coordonnée X du centre de masse du Cube Box.Shape.CenterOfMass.x Coordonnée X en mm sans unité
Coordonnée X de l'emplacement du Cube Box.Placement.Base.x Coordonnée X avec unités (mm)
Composante X de l'axe de rotation du placement du Cube Box.Placement.Rotation.Axis.x Composante X du vecteur unitaire en mm sans unités
Angle de rotation du placement du Cube Box.Placement.Rotation.Angle Angle de rotation avec unités (deg)
Objet Cube complet Box._self Objet de type <Part::PartFeature>>.
Valeur de la contrainte dans une esquisse Constraints.Width Valeur numérique de la contrainte nommée Width dans l'esquisse, si l'expression est utilisée dans l'esquisse elle-même.
Valeur de la contrainte dans une esquisse MonSketch.Constraints.Width Valeur numérique de la contrainte nommée Width dans l'esquisse, si l'expression est utilisée en dehors de l'esquisse.
Valeur d'un alias de feuille de calcul Spreadsheet.Depth Valeur de l'alias Depth dans la feuille de calcul Spreadsheet.
Valeur d'une propriété locale Length Valeur de la propriété DonnéesLength dans, par exemple, un objet Pad, si l'expression est utilisée dans, par exemple, DonnéesLength2 dans le même objet.

Dépendances cycliques

FreeCAD vérifie les dépendances en se basant sur la relation entre les objets du document, et non sur les propriétés. Cela signifie que vous ne pouvez pas fournir des données à un objet et interroger ce même objet pour obtenir des résultats. Par exemple, même s'il n'y a pas de dépendances cycliques lorsque les propriétés elles-mêmes sont prises en compte, vous ne pouvez pas avoir un objet qui obtient ses dimensions à partir d'une feuille de calcul et ensuite afficher le volume de cet objet dans la même feuille de calcul. Vous devez utiliser deux feuilles de calcul, l'une pour piloter votre modèle et l'autre pour les rapports.

En guise de solution de contournement, il est possible d'afficher une plage de cellules de la deuxième feuille de calcul dans la première (ou vice versa) en créant une liaison entre cellules avec l'option Masquer la dépendance de la liaison.

Une autre façon de contourner les dépendances cycliques consiste à masquer la référence en utilisant la fonction href ou hiddenref pour chaque expression, par exemple : href(Box.Length).

Remarquez que les deux solutions mentionnées doivent être utilisées avec prudence, et qu'elles ne fonctionnent pas si les propriétés qui sont rapportées dépendent de dimensions qui sont pilotées à partir de la même feuille de calcul.

En haut

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.

En haut

Liaison entre documents

Il est possible (avec limitations) de définir une propriété d'un objet dans votre document actuel (fichier ".FCstd") en utilisant une expression pour référencer une propriété d'un objet contenu dans un autre document (fichier ".FCstd"). Par exemple, une cellule dans une feuille de calcul ou la DonnéesLength d'un cube de pièce, etc. dans un document peut être définie par une expression faisant référence à la valeur de placement X ou à une autre propriété d'un objet contenu dans un autre document.

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 avec la feuille de calcul est créé et enregistré (nommé), vous pouvez créer des documents dépendants en toute sécurité. Par exemple, si vous nommez le document maître master, la feuille de calcul modelConstants et attribuez à une cellule un nom d'alias Length, vous pouvez ensuite accéder à la valeur comme suit:

master#modelConstants.Length

Remarquez que le document maître doit être chargé pour que les valeurs de ce dernier soient disponibles pour le document dépendant.

Bien sûr, vous pouvez charger les documents correspondants à tout moment pour y faire les modifications que vous voudrez.

En haut

Problèmes connus / tâches restantes

  • FreeCAD ne dispose pas encore d'un gestionnaire d'expressions intégré où toutes les expressions d'un document sont listées et peuvent être créées, supprimées, interrogées etc... Une extension est disponible : fcxref expression manager.
  • les bogues et tickets ouverts pour les expressions sont référencés sur GitHub.

En haut