Expressions/fr: Difference between revisions

From FreeCAD Documentation
No edit summary
No edit summary
Line 5: Line 5:
Il possible de contrôler des propriétés en 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.
Il possible de contrôler des propriétés en 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.


<div class="mw-translate-fuzzy">
Une expression FreeCAD est une expression mathématique, suivant la notation normale des opérateurs mathématiques standard (+, -, * et /) et fonctionne comme décrit ci-dessous. En outre, l'expression peut faire référence à d'autres propriétés, et utiliser également des conditions. Les nombres dans une expression peuvent avoir une unité optionnelle attachée à celle-ci.
Une expression FreeCAD est une expression mathématique, suivant la notation normale des opérateurs mathématiques standard (+, -, * et /) et fonctionne comme décrit ci-dessous. En outre, l'expression peut faire référence à d'autres propriétés, et utiliser également des conditions. Les nombres dans une expression peuvent avoir une unité optionnelle attachée à celle-ci.
</div>


Les nombres décimaux peuvent être écrits soit avec une virgule ',' soit avec un point '.' séparant la partie entière de la partie décimale. Quand on utilise un signe séparateur, celui-ci "doit" être suivi par au moins un chiffre. Les expressions '''1.+2.''' et '''1,+2,''' sont donc invalides. Par contre '''1.0+2.0''' et '''1,0+2,0''' sont valides.
Les nombres décimaux peuvent être écrits soit avec une virgule ',' soit avec un point '.' séparant la partie entière de la partie décimale. Quand on utilise un signe séparateur, celui-ci "doit" être suivi par au moins un chiffre. Les expressions '''1.+2.''' et '''1,+2,''' sont donc invalides. Par contre '''1.0+2.0''' et '''1,0+2,0''' sont valides.

Revision as of 15:29, 7 April 2019

introduced in version 0.16

Il possible de contrôler des propriétés en utilisant des expressions mathématiques. Dans l'interface graphique, les boîtes de dialogues numériques et les champs de saisie qui sont liés à des propriétés contiennent une icône bleue File:Sketcher Expressions.png. En cliquant sur l'icône, ou en tapant le signe égal (=) comme dans un tableur, on fait apparaître l'éditeur d'expression pour cette propriété spécifique.

Une expression FreeCAD est une expression mathématique, suivant la notation normale des opérateurs mathématiques standard (+, -, * et /) et fonctionne comme décrit ci-dessous. En outre, l'expression peut faire référence à d'autres propriétés, et utiliser également des conditions. Les nombres dans une expression peuvent avoir une unité optionnelle attachée à celle-ci.

Les nombres décimaux peuvent être écrits soit avec une virgule ',' soit avec un point '.' séparant la partie entière de la partie décimale. Quand on utilise un signe séparateur, celui-ci "doit" être suivi par au moins un chiffre. Les expressions 1.+2. et 1,+2, sont donc invalides. Par contre 1.0+2.0 et 1,0+2,0 sont valides.

Les constantes "pi" et "e" sont prédéfinies et doivent être écrites en minuscules.

Les opérateurs et fonctions reconnaissent les unités de mesure et nécessitent des combinaisons valides si elles sont fournies. Par exemple, 2 mm + 4 mm 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 SI, le système est totalement incapable de deviner de quelle unité il s'agit).

Fonctions Supportées

Fonctions Mathématiques Génériques

Les fonctions mathématiques suivantes sont disponibles.

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 fonctions trigonométriques utilisent les degrés par défaut. Pour les mesures utilisant le radian, il faut ajouter rad suivant la première valeur angulaire dans l'expression. Exemple : cos(45) est identique à cos(pi rad / 4).

abs(x)

Description: Valeur absolue

Returns: valeur >= 0

acos(x)

Description: Arc cosinus; -1 <= x <= 1

Returns: acos(x)

asin(x)

Description: Arc sinus; -1 <= x <= 1

Returns: asin(x)

atan(x)

Description: Arc tangente

Returns: atan(x)

atan2(y, x)

Description: Arc tangente of y / x;

Returns: atan2(y,x)

ceil(x)

Description: Arrondi au nombre entier supérieur

Returns: Le plus petit nombre entier >= x introduced in version 0.16

cos(angle)

Description: Cosinus; n'importe quelle valeur d'angle en dégrés

Returns: -1 <= cos(x) <= 1

cosh(x)

Description: Cosinus hyperbolique de x

Returns: cosh(x)

exp(y)

Description: Fonction exponentielle

Returns: e y

floor(x)

Description: Arrondi au nombre entier inférieur

Returns: Le plus grand nombre entier <= x introduced in version 0.16

log(x)

Description: Fonction logarithme naturel

Returns: loge x

log10(x)

Description: Fonction logarithme de base 10

Returns: log10 x

mod(x, y)

Description: Modulo de x/y

Returns: Reste après avoir divisé x par y

pow(x, y)

Description: Fonction puissance

Returns: x y

round(x)

Description: Fonction arrondi

Returns: x arrondi à l'entier le plus proche introduced in version 0.16

sin(angle)

Description: Sinus; n'importe quelle valeur d'angle en dégrés

Returns: -1 <= sin(x) <= 1

sinh(x)

Description: Sinus hyperbolique de x

Returns: sinh(x)

sqrt(x)

Description: Racine carrée; x >= 0

Returns: Racine carrée x

tan(angle)

Description: Tangente; n'importe quelle valeur d'angle en dégrés

Returns: tan(angle)

tanh(x)

Description: Tangente hyperbolique of x

Returns: tanh(x)

trunc(x)

Description: Fonction partie entière

Returns: x tronqué à l'entier relatif le plus proche introduced in version 0.16

Statistiques et Fonctions Cumulatives

Les fonctions cumulatives suivantes sont disponibles. Elles prennent un ou plusieurs arguments, ceux-ci peuvent être séparés par un point-virgule ";" ou une virgule suivie par un espace ", ". Les arguments peuvent contenir des références aux cellules d'une feuille de calcul ; les références aux cellules sont constituées de la lettre de colonne (en CAPITALES), suivie par le numéro de ligne. On peut passer en argument une plage de cellules (deux références de cellules séparées par le signe deux-points ":"). Exemple : "average(B1:B8)"

average(x y)

Description: Moyenne des valeurs des cellules x à y

Returns: sum(x, y) / count(x, y)

count(x y)

Description: Nombre de cellules de x à y

Returns: Le nombre de cellules de x à y, inclusif

max(x y)

Description: Valeur maximale dans les cellules x à y

Returns: Valeur maximale

min(x y)

Description: Valeur minimale dans les cellules x à y

Returns: Valeur minimale

stddev(x y)

Description: Ecart type des valeurs dans les cellules x à y

Returns: Ecart type

sum(x y)

Description: Somme des valeurs dans les cellules x à y

Returns: Somme

Expressions conditionnelles

Les expressions conditionnelles s'expriment sous la forme "condition ? expression si VRAI : expression si FAUX".

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 <=.

Références aux données CAD

Il est possible d'utiliser des données provenant de l'objet courant ou d'autres objets du document dans une expression. La syntaxe pour référencer un champ se fait comme ceci: object.property. Si la propriété est un composé de champs, ils peuvent être accessibles comme par exemple: object.property.champs.

Le tableau suivant montre quelques exemples:

Données CAO Appel dans l'expression Résultat
Longueur paramétrique d'un Cube Part-Workbench Cube.Length Longueur en mm
Volume du Cube Cube.Shape.Volume Volume en mm³ sans unité
Type de la forme Cube Cube.Shape.ShapeType Chaîne de caractère : Solid
Label du Cube Cube.Label Chaîne de caractère : Cube
coordonnée x du centre de gravité du Cube Cube.Shape.CenterOfMass.x coordonnée x en mm sans unité
Valeur d'une contrainte dans une esquisse Constraints.Largeur Valeur numérique de la contrainte nommée "Largeur" dans l'esquisse
Valeur d'une contrainte provenant d'une autre esquisse MonEsquisse.Constraints.Largeur Valeur numérique de la contrainte nommée "Largeur" dans l'esquisse nommée "MonEsquisse"
Valeur d'un alias de feuille de calcul MaFeuille.Profondeur Valeur de l'alias nommé "Profondeur" dans la feuille de calcul nommée "MaFeuille"
Valeur d'une propriété locale Length Valeur de la propriété Length, par exemple dans un objet "Pad" on pourrait l'utiliser pour calculer Length2, si celle-ci est utilisé.

Variables globales

Pour le moment il n'y a pas de notion de variables globales dans FreeCAD. Mais des variables arbitraires peuvent être définies comme des cellules dans une feuille de calcul en utilisant l'atelier Spreadsheet, auquelles on aura donné un nom en utilisant l'alias de la propriété pour la cellule utilisée (clic-droit dans la cellule). Ensuite, elles peuvent être accessibles à partir de toute expression comme toute autre propriété de l'objet.

Liaison entre documents

Il est possible de faire référence à une feuille de calcul d'un document depuis d'autres documents.

Note importante : Imaginez que vous utilisiez le nom d'un document pour le référencer depuis d'autres documents. Lorsque vous sauverez ce document pour la première fois, vous allez certainement lui choisir un nom différent de "Unnamed1" (ou sa version traduite), et là, quand vous allez le ré-ouvrir, les liens seront perdus. Il est donc recommandé de créer en premier le document "maître", puis d'y créer immédiatement la feuille de calcul, de sauver le document maître avec un nom had-hoc et de le fermer. Après l'avoir ouvert à nouveau, son nom sera fixé en interne dans FreeCAD. Ensuite vous pourrez toujours faire des modification mais il ne faudra pas le renommer.

Une fois que le document maître contenant la feuille de calcul est créé et enregistré (nommé), vous pouvez sans risque créer des documents dépendants. Supposons que vous avez nommé le document maître "maitre", que la feuille de calcul ait été renommée "Constantes_modele" et que vous ayez défini l'alias "Longueur" pour une cellule donnée, vous pourrez accéder à un alias comme ceci : "master#Constantes_modele.Longueur". Note : un document maître doit toujours être ouvert pour que ses valeurs soient accessibles au document dépendant.

FreeCAD intègre un vérificateur d'expression qui tente de déterminer si vos expressions sont correctes. Ce système est parfois plus déroutant qu'autre chose, il passe le plus clair de son temps à faire des erreurs d'analyse ou à prétendre que tel ou tel nom n'existe pas. Continuez juste à taper votre expression. À la toute fin, et si elle est correcte, le signal rouge disparaîtra et il sera content.

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

Problèmes connus / tâches restantes

  • Le graphe de dépendance est basé sur la relation entre les objets et le document, et non sur les propriétés. Cela signifie que vous ne pouvez pas renseigner et interroger le même objet, par exemple dans une feuille de calcul, même si il n'y a pas de dépendance cyclique lorsque l'on considère seulement les propriétés. Pour contourner le problème, utilisez plusieurs feuilles de calcul, par exemple une pour contrôler votre modèle, et une autre pour les rapports.
  • L'analyseur syntaxique des 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é (parfois... n.d.t.). Dans tout les cas l'expression "= 5 + ((A1>A2) ? 1 : 0)" va fâcher l'analyseur syntaxique.
  • 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 bogues et tickets ouverts pour les Expressions peuvent être trouvés sur le Bugtracker de Freecad, catégorie Expressions