Expressions/fr

Vue d'ensemble
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 qui suit la notation pour les opérateurs mathématiques standard et fonctionne comme décrit ci-dessous. En outre, l'expression peut faire référence à d'autres propriétés et également utiliser des conditions. Une unité facultative peut être attachée aux nombres d'une expression.

Les nombres peuvent utiliser une virgule ou un point décimal  séparanr 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 et  ne sont pas valides, mais  et  sont valables.

Les opérateurs et fonctions reconnaissent les unités de mesure et nécessitent des combinaisons valides si elles sont fournies. Par exemple, est une expression valide, tandis que  ne l'est pas (la raison en est qu'une expression comme  sera très probablement interprétée comme  par les humains, mais comme toutes les unités sont converties au système SI en interne, le système n'est pas en mesure de deviner). Ces unités sont actuellement reconnues.

Vous pouvez utiliser des constantes prédéfinies et des fonctions.

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. Une cellule peut également être référencée en utilisant l'alias de la cellule, par exemple.

Référencement d'objets
Vous pouvez faire référence à un objet par sa ou sa. Dans le cas d'une, vous devez l'entourer de double symboles et , comme ceci.

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 ou. Pour faire référence à l'objet lui-même, utilisez la pseudo-propriété. Par exemple, vous pouvez utiliser ou.

Pour référencer des objets de liste, utilisez ou. Si vous souhaitez par exemple référencer une contrainte dans une esquisse, utilisez. Si vous êtes dans la même esquisse, vous pouvez omettre son nom et utiliser simplement. 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éférence aux données CAO.

Constantes prises en charge
Les constantes suivantes sont prises en charge :

Opérateurs pris en charge
Les opérateurs suivants sont pris en charge :

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 la mesure du radian, ajoutez après la première valeur dans une expression. Ainsi, par exemple, est identique à. Les expressions en degrés peuvent utiliser soit soit, par exemple  ou. Si une expression est sans unité et doit être convertie en degrés ou en radians pour des raisons de compatibilité, multipliez-la par, ou  selon le cas, par exemple  ;  ;.

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 ou. Les références de cellule peuvent également utiliser des alias de cellule, par exemple.

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

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

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 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 :

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 se développera en "Cube length : 10.0 mm"

Au dessus d'un spécificateur de %, utilisez la syntaxe suivante :. Ou utilisez la concaténation :. 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.

Créer une fonction
Les objets suivants peuvent être créés dans des expressions via la fonction :
 * Vecteur
 * Matrice
 * Rotation
 * Placement

La fonction transmet les arguments suivants au constructeur Python sous-jacent lors de la création de l'objet.

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,, , ).

Vecteur
Lorsque reçoit  comme 1er argument, les 3 arguments suivants sont respectivement les coordonnées X, Y et Z de.

Exemple :

Matrice
Lorsque reçoit  comme 1er argument, les 16 arguments suivants sont les éléments de  dans l'ordre row-major (rang-majeur).

Exemple :

Rotation
Lorsque reçoit  comme 1er argument, il existe deux façons de créer une  :

1. Spécifiez un vecteur d'axe et un angle de rotation.

Exemple :

2. Spécifiez 3 rotations autour des axes X, Y et Z comme angles d'Euler.

Exemple :

Placement
Lorsque reçoit  comme 1er argument, il existe cinq façons de créer un.

Ces combinaisons possibles sont documentées dans le tableau ci-dessous et sont basées sur la page Placement API.

L'exemple suivant montre la syntaxe pour créer un à partir d'une  (vecteur) et d'une  :

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.

mscale
Mettre à l'échelle une avec un  donné.

minvert
Inverse la, ou le  donné.

Tuple & liste
Vous pouvez créer des objets Python ou  via leurs fonctions respectives.

Expressions conditionnelles
Les expressions conditionnelles sont de la forme. (condition ? résultat si VRAI : résultat si FAUX). La condition est définie comme une expression dont le résultat est (faux) ou différent de zéro (vrai). Remarquez que le fait de mettre l'expression conditionnelle entre parenthèses est actuellement considéré comme une erreur.

Les opérateurs relationnels suivants sont définis:

Unités
Les unités peuvent être directement utilisées dans des expressions. L'analyseur les connecte à la valeur précédente. Donc ou  sont valides tandis que  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 et qu'il se reporte à la hauteur du pavé. Cela ne fonctionne que parce que la hauteur du pad prédéfinit l'unité utilisée si aucune unité n'est donnée. Il échouera néanmoins si vous utilisez pour la hauteur du pad, par exemple  car  a une unité et  n'en a pas.

Les unités avec des exposants peuvent être directement entrées. Donc, par exemple sera reconnu comme mm³ et  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, elle serait reconnue comme l'unité Ampère. Par conséquent, vous devez l'écrire dans l'expression sous la forme.

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

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 :

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:

Par exemple, l'étiquette doit être référencée comme.

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

Par exemple, le nom suivant est valide:, alors que ces noms sont non valables: (\r signifie "retour chariot") ou  (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 les données du modèle lui-même dans une expression. Pour référencer une propriété, utilisez. Si la propriété est un composé de champs, les champs individuels sont accessibles en tant que.

Le tableau suivant montre quelques exemples :

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 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, la feuille de calcul et attribuez à une cellule un nom d'alias , vous pouvez ensuite accéder à la valeur comme suit:

Remarque: 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 devient actif.

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

Problèmes connus / tâches restantes

 * Le graphe de dépendance est basé sur la relation entre les objets et le document, et non sur les propriétés. Cela signifie que vous ne pouvez pas renseigner et interroger le même objet, par exemple dans une feuille de calcul, même si il n'y a pas de dépendance cyclique si l'on considère seulement les propriétés, vous ne pouvez pas avoir d'objet dont les dimensions proviennent de la feuille de calcul et calculer son volume dans la même feuille de calcul. Pour contourner le problème, utilisez plusieurs feuilles de calcul, 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 : donne une erreur, alors que  est accepté. L'expression  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 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... Un addon est disponible : fcxref expression manager.
 * les bogues et tickets ouverts pour les expressions sont référencés sur le Bugtracker de Freecad, catégorie Expressions