Expressions/fr: Difference between revisions
No edit summary |
No edit summary |
||
(108 intermediate revisions by 4 users not shown) | |||
Line 2: | Line 2: | ||
{{TOCright}} |
{{TOCright}} |
||
<span id="Overview"></span> |
|||
==Vue d'ensemble== |
|||
== 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|=}} pour ouvrir l'éditeur d'expression pour cette propriété particulière. |
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|=}} pour ouvrir l'éditeur d'expression pour cette propriété particulière. |
||
Une expression FreeCAD est une expression mathématique |
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é]]. |
||
Les nombres peuvent utiliser une virgule {{incode|,}} ou un point décimal {{incode|.}} |
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. |
||
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 |
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}}. |
||
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 : |
|||
Vous pouvez utiliser des [[#Constantes_prises_en_charge|constantes prédéfinies]] et des [[#Fonctions_support.C3.A9es|fonctions]]. |
|||
{{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}}. |
|||
{{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 === |
=== Arguments de la fonction === |
||
Line 20: | Line 26: | ||
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}}. |
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=== |
===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|<<Long_name_of_cylinder>>.Height}}. Pour faire référence à l'objet lui-même, utilisez la pseudo-propriété {{incode|_self}}. Par exemple, vous pouvez utiliser {{incode|Cylinder._self}} ou {{incode|<<Label_of_cylinder>>._self}}. |
|||
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 référencer des objets de liste, utilisez {{incode|<<object_label>>.list[list_index]}} ou {{incode|object_name.list[index_liste]}}. Si vous souhaitez par exemple référencer une contrainte dans une esquisse, utilisez {{incode|<<MySketch>>.Constraints[16]}}. Si vous êtes dans la même esquisse, vous pouvez omettre son nom et utiliser simplement {{incode|Constraints[16]}}.<br/> |
|||
'''Remarque :''' l'index commence par 0, la contrainte 17 a donc l'index 16. |
|||
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]]. |
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}} |
{{Top}} |
||
<span id="Supported_constants"></span> |
|||
== Constantes prises en charge == |
== Constantes prises en charge == |
||
Line 46: | Line 51: | ||
|} |
|} |
||
{{Top}} |
{{Top}} |
||
<span id="Supported_operators"></span> |
|||
== Opérateurs pris en charge == |
== Opérateurs pris en charge == |
||
Line 73: | Line 79: | ||
|} |
|} |
||
{{Top}} |
{{Top}} |
||
<span id="Supported_functions"></span> |
|||
== Fonctions supportées == |
== Fonctions supportées == |
||
<span id="General_mathematical_functions"></span> |
|||
=== Fonctions mathématiques générales === |
=== Fonctions mathématiques générales === |
||
Les fonctions mathématiques suivantes sont prises en charge : |
Les fonctions mathématiques suivantes sont prises en charge : |
||
<span id="Trigonometric_functions"></span> |
|||
==== Fonctions trigonométriques ==== |
==== 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 |
[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° - 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}}. |
||
{| class="wikitable" |
{| class="wikitable" |
||
Line 88: | Line 97: | ||
!style="width: 30%;"|Plage de saisie |
!style="width: 30%;"|Plage de saisie |
||
|- |
|- |
||
| acos(x) |
| {{incode|acos(x)}} |
||
| [https://fr.wikipedia.org/wiki/Arc_cosinus Arc cosinus] |
| [https://fr.wikipedia.org/wiki/Arc_cosinus Arc cosinus] |
||
| -1 <= x <= 1 |
| -1 <= x <= 1 |
||
|- |
|- |
||
| asin(x) |
| {{incode|asin(x)}} |
||
| [https://fr.wikipedia.org/wiki/Arc_sinus Arc sinus] |
| [https://fr.wikipedia.org/wiki/Arc_sinus Arc sinus] |
||
| -1 <= x <= 1 |
| -1 <= x <= 1 |
||
|- |
|- |
||
| atan(x) |
| {{incode|atan(x)}} |
||
| [https://fr.wikipedia.org/wiki/Arc_tangente Arc tangente], retourne la valeur dans la plage -90° < valeur < 90° |
| [https://fr.wikipedia.org/wiki/Arc_tangente Arc tangente], retourne la valeur dans la plage -90° < valeur < 90° |
||
| tout |
| tout |
||
|- |
|- |
||
| atan2(y; x) |
| {{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://fr.wikipedia.org/wiki/Atan2 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 |
| tout, l'entrée invalide x = y = 0 renvoie 0 |
||
|- |
|- |
||
| cos(x) |
| {{incode|cos(x)}} |
||
| [https://fr.wikipedia.org/wiki/Cosinus Cosinus] |
| [https://fr.wikipedia.org/wiki/Cosinus Cosinus] |
||
| tout |
| tout |
||
|- |
|- |
||
| cosh(x) |
| {{incode|cosh(x)}} |
||
| [https://fr.wikipedia.org/wiki/Cosinus_hyperbolique Cosinus hyperbolique] |
| [https://fr.wikipedia.org/wiki/Cosinus_hyperbolique Cosinus hyperbolique] |
||
| tout |
| tout |
||
|- |
|- |
||
| sin(x) |
| {{incode|sin(x)}} |
||
| [https://fr.wikipedia.org/wiki/Sinus_(math%C3%A9matiques) Sinus] |
| [https://fr.wikipedia.org/wiki/Sinus_(math%C3%A9matiques) Sinus] |
||
| tout |
| tout |
||
|- |
|- |
||
| sinh(x) |
| {{incode|sinh(x)}} |
||
| [https://fr.wikipedia.org/wiki/Sinus_hyperbolique Sinus hyperbolique] |
| [https://fr.wikipedia.org/wiki/Sinus_hyperbolique Sinus hyperbolique] |
||
| tout |
| tout |
||
|- |
|- |
||
| tan(x) |
| {{incode|tan(x)}} |
||
| [https://fr.wikipedia.org/wiki/Tangente_(trigonom%C3%A9trie) Tangente] |
| [https://fr.wikipedia.org/wiki/Tangente_(trigonom%C3%A9trie) Tangente] |
||
| tout, sauf x = n*90 avec n = entier impair |
| tout, sauf x = n*90 avec n = entier impair |
||
|- |
|- |
||
| tanh(x) |
| {{incode|tanh(x)}} |
||
| [https://fr.wikipedia.org/wiki/Tangente_hyperbolique Tangente hyperbolique] |
| [https://fr.wikipedia.org/wiki/Tangente_hyperbolique Tangente hyperbolique] |
||
| tout |
| tout |
||
|- |
|- |
||
| hypot(x; y) |
| {{incode|hypot(x; y)}} |
||
| [https://fr.wikipedia.org/wiki/Somme_pythagoricienne Somme pythagoricienne] ('''hypot'''énuse), par ex. hypot(4; 3) = 5. |
| [https://fr.wikipedia.org/wiki/Somme_pythagoricienne Somme pythagoricienne] ('''hypot'''énuse), par ex. hypot(4; 3) = 5. |
||
| x et y >= 0 |
| x et y >= 0 |
||
|- |
|- |
||
| cath(x; y) |
| {{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. |
| É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 |
| x >= y >= 0 |
||
|} |
|} |
||
<span id="Exponential_and_logarithmic_functions"></span> |
|||
==== Fonctions exponentielles et logarithmiques ==== |
==== Fonctions exponentielles et logarithmiques ==== |
||
Line 144: | Line 154: | ||
!style="width: 33%;"|Plage de saisie |
!style="width: 33%;"|Plage de saisie |
||
|- |
|- |
||
| exp(x) |
| {{incode|exp(x)}} |
||
| [https://fr.wikipedia.org/wiki/Fonction_exponentielle Fonction exponentielle] |
| [https://fr.wikipedia.org/wiki/Fonction_exponentielle Fonction exponentielle] |
||
| tout |
| tout |
||
|- |
|- |
||
| log(x) |
| {{incode|log(x)}} |
||
| [https://fr.wikipedia.org/wiki/Logarithme_naturel Logarithme népérien] |
| [https://fr.wikipedia.org/wiki/Logarithme_naturel Logarithme népérien] |
||
| x > 0 |
| x > 0 |
||
|- |
|- |
||
| log10(x) |
| {{incode|log10(x)}} |
||
| [https://fr.wikipedia.org/wiki/Logarithme_d%C3%A9cimal Logarithme décimal] |
| [https://fr.wikipedia.org/wiki/Logarithme_d%C3%A9cimal Logarithme décimal] |
||
| x > 0 |
| x > 0 |
||
|- |
|- |
||
| pow(x; y) |
| {{incode|pow(x; y)}} |
||
| [https://fr.wikipedia.org/wiki/Exposant_(math%C3%A9matiques) Les puissances] |
| [https://fr.wikipedia.org/wiki/Exposant_(math%C3%A9matiques) Les puissances] |
||
| tout |
| tout |
||
|- |
|- |
||
| sqrt(x) |
| {{incode|sqrt(x)}} |
||
| [https://fr.wikipedia.org/wiki/Racine_carr%C3%A9e Racine carrée] |
| [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> |
|||
==== Fonctions d'arrondi, de troncature et de reste ==== |
==== Fonctions d'arrondi, de troncature et de reste ==== |
||
Line 172: | Line 187: | ||
!style="width: 25%;"|Plage de saisie |
!style="width: 25%;"|Plage de saisie |
||
|- |
|- |
||
| abs(x) |
| {{incode|abs(x)}} |
||
| [https://fr.wikipedia.org/wiki/Valeur_absolue Valeur absolue] |
| [https://fr.wikipedia.org/wiki/Valeur_absolue Valeur absolue] |
||
| tout |
| tout |
||
|- |
|- |
||
| ceil(x) |
| {{incode|ceil(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 |
| [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 |
||
| tout |
| tout |
||
|- |
|- |
||
| floor(x) |
| {{incode|floor(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 |
| [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 |
||
| tout |
| tout |
||
|- |
|- |
||
| mod(x; y) |
| {{incode|mod(x; 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. |
| [https://fr.wikipedia.org/wiki/Reste Reste] après la division de ''x'' par ''y'', le signe du résultat est celui du dividende. |
||
| tout sauf y = 0 |
| tout sauf y = 0 |
||
|- |
|- |
||
| round(x) |
| {{incode|round(x)}} |
||
| [https://fr.wikipedia.org/wiki/Arrondi_(math%C3%A9matiques) Arrondi] au nombre entier le plus proche |
| [https://fr.wikipedia.org/wiki/Arrondi_(math%C3%A9matiques) Arrondi] au nombre entier le plus proche |
||
| tout |
| tout |
||
|- |
|- |
||
| trunc(x) |
| {{incode|trunc(x)}} |
||
| [https://fr.wikipedia.org/wiki/Troncature Troncature] au nombre entier le plus proche en direction de zéro |
| [https://fr.wikipedia.org/wiki/Troncature Troncature] au nombre entier le plus proche en direction de zéro |
||
| tout |
| tout |
||
|} |
|} |
||
{{Top}} |
{{Top}} |
||
<span id="Statistical_/_aggregate_functions"></span> |
|||
=== Statistiques et fonctions d'agrégation === |
=== Statistiques et fonctions d'agrégation === |
||
Line 211: | Line 227: | ||
!style="width: 25%;"|Plage de saisie |
!style="width: 25%;"|Plage de saisie |
||
|- |
|- |
||
| average(a; b; c; ...) |
| {{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; ...) |
| Valeur [https://fr.wikipedia.org/wiki/Moyenne_arithm%C3%A9tique Moyenne] des arguments, identique à sum(a; b; c; ...) / count(a; b; c; ...) |
||
| tout |
| tout |
||
|- |
|- |
||
| count(a; b; c; ...) |
| {{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 |
| [https://fr.wikipedia.org/wiki/D%C3%A9nombrement Comptage] des arguments, généralement utilisé pour les plages de cellules |
||
| tout |
| tout |
||
|- |
|- |
||
| max(a; b; c; ...) |
| {{incode|max(a; b; c; ...)}} |
||
| Valeur [https://fr.wikipedia.org/wiki/Extremum Maximum] des arguments |
| Valeur [https://fr.wikipedia.org/wiki/Extremum Maximum] des arguments |
||
| tout |
| tout |
||
|- |
|- |
||
| min(a; b; c; ...) |
| {{incode|min(a; b; c; ...)}} |
||
| Valeur [https://fr.wikipedia.org/wiki/Extremum Minimum] des arguments |
| Valeur [https://fr.wikipedia.org/wiki/Extremum Minimum] des arguments |
||
| tout |
| tout |
||
|- |
|- |
||
| stddev(a; b; c; ...) |
| {{incode|stddev(a; b; c; ...)}} |
||
| [https://fr.wikipedia.org/wiki/%C3%89cart_type Écart type] des valeurs des arguments |
| [https://fr.wikipedia.org/wiki/%C3%89cart_type Écart type] des valeurs des arguments |
||
| tout |
| tout |
||
|- |
|- |
||
| sum(a; b; c; ...) |
| {{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 |
| [https://fr.wikipedia.org/wiki/Somme_(arithm%C3%A9tique) Somme] des valeurs des arguments, généralement utilisé pour les plages de cellules |
||
| tout |
| tout |
||
|} |
|} |
||
{{Top}} |
{{Top}} |
||
<span id="String_manipulation"></span> |
|||
=== Manipulation de chaînes de caractères === |
=== Manipulation de chaînes de caractères === |
||
<span id="String_identification"></span> |
|||
==== Identification de chaînes de caractères ==== |
==== Identification de chaînes de caractères ==== |
||
Line 244: | Line 262: | ||
Dans l'exemple suivant, "TEXT" est reconnu comme une chaîne de caractères : {{incode|<<TEXT>>}}. |
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 ==== |
==== Concaténation de chaînes de caractères ==== |
||
Line 250: | Line 269: | ||
L'exemple suivant {{incode|<<MY>> + <<TEXT>>}} sera concaténé en "MYTEXT". |
L'exemple suivant {{incode|<<MY>> + <<TEXT>>}} sera concaténé en "MYTEXT". |
||
<span id="String_conversion"></span> |
|||
==== Conversion de chaînes de caractères ==== |
==== Conversion de chaînes de caractères ==== |
||
Line 256: | Line 276: | ||
{{incode|str(Box.Length.Value)}} |
{{incode|str(Box.Length.Value)}} |
||
<span id="String_formatting"></span> |
|||
==== Formatage des chaînes de caractères ==== |
==== Formatage des chaînes de caractères ==== |
||
Line 268: | Line 289: | ||
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]. |
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}} |
{{Top}} |
||
<span id="Object_creation_functions"></span> |
|||
=== Créer une fonction === |
|||
=== Fonctions de création d'objets === |
|||
Les objets suivants peuvent être créés dans des expressions |
Les objets suivants peuvent être créés dans des expressions à l'aide des fonctions suivantes : |
||
* Vecteur |
|||
* Matrice |
|||
* Rotation |
|||
* Placement |
|||
{| class="wikitable" |
|||
La fonction {{incode|create}} transmet les arguments suivants au constructeur Python sous-jacent lors de la création de l'objet. |
|||
! 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é. |
|||
Diverses opérations mathématiques telles que la multiplication, l'addition et la soustraction sont prises en charge par les opérateurs mathématiques standard (par exemple, {{incode|*}}, {{incode|+}}, {{incode|-}}). |
|||
Exemple : {{incode|matrix(1; 2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12; 13; 14; 15; 16)}} |
|||
==== Vecteur ==== |
|||
|- |
|||
| {{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 : |
|||
Lorsque {{incode|create}} reçoit {{incode|<<vector>>}} comme 1er argument, les 3 arguments suivants sont respectivement les coordonnées X, Y et Z de {{incode|Vector}}. |
|||
* {{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))}} |
|||
Exemple : |
|||
|- |
|||
| {{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|1.0}}. |
|||
{{incode|create(<<vector>>; 2; 1; 2)}} |
|||
==== Matrice ==== |
|||
Lorsque {{incode|create}} reçoit {{incode|<<matrix>>}} comme 1er argument, les 16 arguments suivants sont les éléments de {{incode|Matrix}} dans l'ordre [https://en.wikipedia.org/wiki/Row-_and_column-major_order row-major (rang-majeur)]. |
|||
Exemple : |
|||
{{incode|create(<<matrix>>; 1; 2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12; 13; 14; 15; 16)}} |
|||
==== Rotation ==== |
|||
Lorsque {{incode|create}} reçoit {{incode|<<rotation>>}} comme 1er argument, il existe deux façons de créer une {{incode|Rotation}} : |
|||
1. Spécifiez un vecteur d'axe et un angle de rotation. |
|||
Exemple : |
|||
{{incode|create(<<rotation>>; create(<<vector>>; 0; 1; 0); 45)}} |
|||
2. Spécifiez 3 rotations autour des axes X, Y et Z comme angles d'Euler. |
|||
Exemple : |
|||
{{incode|create(<<rotation>>; 30; 30; 30)}} |
|||
==== Placement ==== |
|||
Lorsque {{incode|create}} reçoit {{incode|<<placement>>}} comme 1er argument, il existe cinq façons de créer un {{incode|Placement}}. |
|||
Ces combinaisons possibles sont documentées dans le tableau ci-dessous et sont basées sur la page [[Placement_API/fr|Placement API]]. |
|||
{| class="wikitable" |
{| class="wikitable" |
||
! Fonction / Opérateur |
|||
!style="width: 33%;"|Nombre d'arguments |
|||
! |
! Description |
||
|- |
|- |
||
| {{incode|v1 + v2}} |
|||
| 2 |
|||
| Ajouter deux vecteurs. |
|||
| {{incode|create(<<placement>>; Placement)}} |
|||
|- |
|- |
||
| {{incode|v1 - v2}} |
|||
| 2 |
|||
| Soustraire deux vecteurs. |
|||
| {{incode|create(<<placement>>; Matrix)}} |
|||
|- |
|- |
||
| {{incode|v * s}} |
|||
| 3 |
|||
| Échelle uniforme d'un vecteur par {{incode|s}}. |
|||
| {{incode|create(<<placement>>; Base; Rotation)}} |
|||
|- |
|- |
||
| {{incode|vangle(v1; v2)}} |
|||
| 4 |
|||
| Angle en degrés entre deux vecteurs. |
|||
| {{incode|create(<<placement>>; Base; Rotation; Center)}} |
|||
|- |
|- |
||
| {{incode|vcross(v1; v2)}} |
|||
| 4 |
|||
| Produit vectoriel de deux vecteurs <math>v_1 \times v_2</math>. |
|||
| {{incode|create(<<placement>>; Base; Axis; Angle)}} |
|||
|- |
|||
| {{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)}} |
|||
|} |
|} |
||
L'exemple suivant montre la syntaxe pour créer un {{incode|Placement}} à partir d'une {{incode|Base}} (vecteur) et d'une {{incode|Rotation}} : |
|||
{{incode|create(<<placement>>; create(<<vector>>; 2; 1; 2); create(<<rotation>>; create(<<vector>>; 0; 1; 0); 45))}} |
|||
Pour plus de lisibilité, vous pouvez définir les vecteurs et les rotations dans des cellules distinctes, puis faire référence à ces cellules dans votre expression. |
|||
{{Top}} |
{{Top}} |
||
<span id="Matrix_functions"></span> |
|||
=== Fonctions matricielles === |
=== 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é. |
|||
==== mscale ==== |
|||
{| class="wikitable" |
|||
Mettre à l'échelle une {{incode|Matrice}} avec un {{incode|Vecteur}} donné. |
|||
! Fonction |
|||
! Description |
|||
{{incode|mscale(Matrix; Vector)}} |
|||
|- |
|||
{{incode| |
| {{incode|minvert(m)}} |
||
| Calcule la [https://fr.wikipedia.org/wiki/Matrice_inversible matrice inversée]. |
|||
|- |
|||
==== minvert ==== |
|||
| {{incode|mrotate(m; rotation)}} |
|||
| rowspan="3" | [https://fr.wikipedia.org/wiki/Matrice_de_rotation Rotation] soit : |
|||
Inverse la {{incode|Matrice}}, {{incode|Rotation}} ou le {{incode|Placement}} donné. |
|||
* une {{incode|Rotation}} |
|||
* un ({{incode|Vector}}) d'axe et un angle ({{incode|Angle}} avec ou sans unité) |
|||
{{incode|minvert(Matrix)}} |
|||
* trois angles d'Euler {{incode|α}}, {{incode|β}}, {{incode|γ}} |
|||
|- |
|||
{{incode|minvert(Rotation)}} |
|||
| {{incode|mrotate(m; axis; angle)}} |
|||
|- |
|||
{{incode|minvert(Placement)}} |
|||
| {{incode|mrotate(m; α; β; γ)}} |
|||
{{Top}} |
|||
|- |
|||
=== Tuple & liste === |
|||
| {{incode|mrotatex(m; angle)}} |
|||
| [https://fr.wikipedia.org/wiki/Matrice_de_rotation Rotation] autour de l'axe X. |
|||
Vous pouvez créer des objets Python {{incode|tuple}} ou {{incode|list}} via leurs fonctions respectives. |
|||
|- |
|||
{{incode| |
| {{incode|mrotatey(m; angle)}} |
||
| [https://fr.wikipedia.org/wiki/Matrice_de_rotation Rotation] autour de l'axe Y. |
|||
|- |
|||
{{incode|list(2; 1; 2)}} |
|||
| {{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}} |
{{Top}} |
||
<span id="Conditional_expressions"></span> |
|||
== Expressions conditionnelles == |
== 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) |
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). |
||
Les [https://en.wikipedia.org/wiki/Relational_operator#Standard_relational_operators opérateurs relationnels] suivants sont définis: |
Les [https://en.wikipedia.org/wiki/Relational_operator#Standard_relational_operators opérateurs relationnels] suivants sont définis: |
||
Line 400: | Line 502: | ||
|} |
|} |
||
{{Top}} |
{{Top}} |
||
<span id="Units"></span> |
|||
== Unités == |
== Unités == |
||
Line 413: | Line 516: | ||
Les unités suivantes sont reconnues par l’analyseur d’expression: |
Les unités suivantes sont reconnues par l’analyseur d’expression: |
||
<span id="Amount_of_substance"></span> |
|||
=== Quantité de substance === |
=== Quantité de substance === |
||
Line 418: | Line 522: | ||
!style="width: 33%;"|Unité |
!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 |
||
Line 454: | Line 561: | ||
|} |
|} |
||
<span id="Current"></span> |
|||
=== Courant === |
=== Courant === |
||
Line 473: | Line 581: | ||
|} |
|} |
||
<span id="Electric_capacitance"></span> |
|||
=== Capacité électrique === |
|||
{| class="wikitable" |
|||
!style="width: 33%;"|Unité |
|||
!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 === |
=== Énergie/travail === |
||
Line 478: | Line 707: | ||
!style="width: 33%;"|Unité |
!style="width: 33%;"|Unité |
||
!style="width: 66%;"|Description |
!style="width: 66%;"|Description |
||
|- |
|||
| mJ |
|||
| Milli[https://fr.wikipedia.org/wiki/Joule joule] |
|||
|- |
|- |
||
| J |
| J |
||
| [https://fr.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://fr.wikipedia.org/wiki/Joule#%C3%89quivalences Watt-seconde]; alternative à l'unité |
| [https://fr.wikipedia.org/wiki/Joule#%C3%89quivalences Watt-seconde]; alternative à l'unité Joule |
||
|- |
|- |
||
| VAs |
| VAs |
||
| [https://fr.wikipedia.org/wiki/Joule Volt ampère seconde]; alternative à l'unité |
| [https://fr.wikipedia.org/wiki/Joule Volt ampère seconde]; alternative à l'unité Joule |
||
|- |
|- |
||
| CV |
| CV |
||
| [https:// |
| [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] |
|||
|} |
|} |
||
Line 514: | Line 767: | ||
|} |
|} |
||
<span id="Length"></span> |
|||
===Longueur=== |
===Longueur=== |
||
Line 569: | Line 823: | ||
|} |
|} |
||
<span id="Luminous_intensity"></span> |
|||
=== Intensité lumineuse === |
=== Intensité lumineuse === |
||
Line 579: | Line 834: | ||
|} |
|} |
||
<span id="Magnetic_flux"></span> |
|||
=== Flux magnétique === |
|||
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 === |
=== Poids === |
||
Line 619: | Line 902: | ||
|} |
|} |
||
<span id="Power"></span> |
|||
=== Puissance === |
=== Puissance === |
||
Line 628: | Line 912: | ||
| [https://fr.wikipedia.org/wiki/Watt Watt] |
| [https://fr.wikipedia.org/wiki/Watt Watt] |
||
|- |
|- |
||
| |
| kW |
||
| [https://fr.wikipedia.org/wiki/ |
| Kilo[https://fr.wikipedia.org/wiki/Watt watt] |
||
|} |
|} |
||
<span id="Pressure"></span> |
|||
=== Pression === |
=== Pression === |
||
Line 669: | Line 954: | ||
|} |
|} |
||
<span id="Temperature"></span> |
|||
=== Température === |
=== Température === |
||
Line 688: | Line 974: | ||
|} |
|} |
||
<span id="Time"></span> |
|||
=== Temps === |
=== Temps === |
||
Line 702: | Line 989: | ||
| h |
| h |
||
| [https://fr.wikipedia.org/wiki/Heure Heure] |
| [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] |
|||
|} |
|} |
||
Line 709: | Line 1,011: | ||
!style="width: 33%;"|Unité |
!style="width: 33%;"|Unité |
||
!style="width: 66%;"|Description |
!style="width: 66%;"|Description |
||
|- |
|||
| ml |
|||
| Milli[https://fr.wikipedia.org/wiki/Litre litre] |
|||
|- |
|- |
||
| l |
| l |
||
| [https://fr.wikipedia.org/wiki/Litre Litre] |
| [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> |
|||
=== Unités impériales spéciales === |
|||
{| class="wikitable" |
|||
!style="width: 33%;"|Unité |
|||
!style="width: 66%;"|Description |
|||
|- |
|||
| mph |
|||
| [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> |
|||
=== Unités non supportées === |
=== Unités non supportées === |
||
Line 756: | Line 1,079: | ||
|} |
|} |
||
{{Top}} |
{{Top}} |
||
<span id="Invalid_characters_and_names"></span> |
|||
==Caractères et noms non valides== |
==Caractères et noms non valides== |
||
Line 762: | Line 1,086: | ||
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. |
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. |
||
<span id="Labels"></span> |
|||
===Étiquettes=== |
===Étiquettes=== |
||
Line 775: | Line 1,100: | ||
Par exemple, l'étiquette {{incode|Sketch\002}} doit être référencée comme {{incode|<<Sketch\\002>>}}. |
Par exemple, l'étiquette {{incode|Sketch\002}} doit être référencée comme {{incode|<<Sketch\\002>>}}. |
||
<span id="Names"></span> |
|||
===Noms=== |
===Noms=== |
||
Les [[Object_name/fr#Name_.28Nom.29|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" |
{| class="wikitable" |
||
Line 806: | Line 1,132: | ||
'''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. |
'''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=== |
===Alias de cellules=== |
||
Voir [[Spreadsheet_SetAlias/fr#Utilisation|Spreadsheet Alias]]. |
Voir [[Spreadsheet_SetAlias/fr#Utilisation|Spreadsheet Alias]]. |
||
{{Top}} |
{{Top}} |
||
<span id="Reference_to_CAD_data"></span> |
|||
== Référence aux données CAO == |
== Référence aux données CAO == |
||
Il est possible d'utiliser |
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. |
|||
Le tableau suivant montre quelques exemples : |
|||
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" |
{| class="wikitable" |
||
!Données CAO |
!Données CAO |
||
Line 872: | Line 1,208: | ||
|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. |
|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}} |
{{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}} |
{{Top}} |
||
<span id="Cross-document_linking"></span> |
|||
== Liaison entre documents == |
== Liaison entre documents == |
||
Line 887: | Line 1,236: | ||
{{incode|master#modelConstants.Length}} |
{{incode|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. |
|||
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}} |
{{Top}} |
||
<span id="Known_issues_/_remaining_tasks"></span> |
|||
== Problèmes connus / tâches restantes == |
== Problèmes connus / tâches restantes == |
||
* Le graphe de dépendance est basé sur la relation entre les objets et le document, et non sur les propriétés. Cela signifie que vous ne pouvez pas renseigner et interroger le même objet, par exemple dans une feuille de calcul, même si il n'y a pas de dépendance cyclique si l'on considère seulement les propriétés, vous ne pouvez pas avoir d'objet dont les dimensions proviennent de la feuille de calcul et calculer son volume dans la même feuille de calcul. Pour contourner le problème, utilisez plusieurs feuilles de calcul, l'un pour contrôler votre modèle et l'autre pour faire des rapports. |
|||
* L'analyseur syntaxique d'expressions ne gère pas bien les parenthèses et n'est pas capable d'analyser correctement certaines expressions. Par exemple : {{incode|<nowiki>=</nowiki> (A1 > A2) ? 1 : 0}} donne une erreur, alors que {{incode|<nowiki>=</nowiki> A1 > A2 ? 1 : 0}} est accepté. L'expression {{incode|<nowiki>=</nowiki> 5 + ((A1>A2) ? 1 : 0)}} va contrarier l'analyseur syntaxique dans tous les cas. |
|||
* Comme indiqué ci-dessus, malheureusement, le vérificateur intégré prétend parfois qu'un nom valide n'existe pas. Continuez à taper quand même. Une fois la référence complète terminée, le bouton {{Button|OK}} devient actif. |
|||
* 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]. |
* 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]. |
||
* les bogues et tickets ouverts pour les expressions sont référencés sur |
* 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]. |
||
{{Top}} |
{{Top}} |
||
Latest revision as of 09:09, 27 April 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.
Constantes prises en charge
Les constantes suivantes sont prises en charge :
Constante | Description |
---|---|
e | nombre d'Euler |
pi | Pi |
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 |
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
, 1°
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 |
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 |
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.
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 : |
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 Exemple : |
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(α; β; γ)
| ||
create(<<rotation>>; axis; angle)
| ||
create(<<rotation>>; α; β; γ)
| ||
Placement
|
placement(base; rotation)
|
Crée un Placement avec différents paramètres, notamment :
Exemples :
|
placement(base; rotation; center)
| ||
placement(base; axis; angle)
| ||
placement(matrix)
| ||
create(<<placement>>; ...)
|
Fonctions vectorielles
Fonctions : introduit dans la version 1.0.
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)
|
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 :
|
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)
|
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 à |
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 |
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.
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³ ; 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.
Variables globales
Pour le moment il n'y a pas de notion de variables globales dans FreeCAD. Mais des variables arbitraires peuvent être définies comme des cellules dans une feuille de calcul en utilisant l'atelier Spreadsheet, auquelles on aura donné un nom en utilisant l'alias de la propriété pour la cellule utilisée (clic-droit dans la cellule). Ainsi, elles peuvent être accessibles à partir de toute expression comme toute autre propriété de l'objet.
Liaison entre documents
Il est possible (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.
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.
- Scripts FreeCAD : Python, Introduction à Python, Tutoriel sur les scripts Python, Débuter avec les scripts
- Modules : Modules intégrés, Unités, Quantity
- Ateliers : Création d'atelier, Commands Gui, Les commandes, Installer des ateliers supplémentaires
- Maillages et objets Parts : Scripts Mesh, Script de données topologiques, Conversion objet Mesh en Part, PythonOCC
- Objets paramétriques : Objets créés par script, Viewproviders (Icône personnalisée dans l'arborescence)
- Scénographie : Graphe de scène Coin (Inventor), Pivy
- Interface graphique : Création d'interface, Création d'une boite de dialogue (1, 2, 3, 4, 5), PySide, Exemples PySide débutant, intermédiaire, expérimenté
- Macros : Macros, Comment installer des macros
- Intégration : Intégrer FreeCAD, Intégration de FreeCADGui
- Autre : Expressions, Extraits de codes, Fonction - tracer une ligne, Bibliothèque mathématique vectorielle de FreeCAD (déprécié)