Expressions/fr

Il est maintenant 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. 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 aussi utiliser des opérations conditionnelles. Les chiffres en une expression peuvent avoir une unité optionnelle attachée à elle.

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
Dans les expressions, les fonctions suivantes sont prises en charge, en donnant un ou deux arguments: abs, acos, asin, atan, atan2, cos, cosh, exp, log, log10, mod, pow, sin, sinh, sqrt, tan, tanh, ceil, floor, trunc, et round.

Fonctions générales : min, max, count, sum, stddev et average. Les fonctions générales peuvent prendre un ou plusieurs arguments, séparés par une virgule ou un point-virgule. Les arguments peuvent inclure des plages de données (deux cellules séparées par deux points), par exemple =average(B1:B8). Celles-ci sont interprétées comme les propriétés B1, B2, ..., B8.

Les fonctions trigonométriques utilisent le degré par défaut; vous devez spécifier "rad" si vous voulez que les fonctions utilisent le radian.

Les constantes pi et e sont prédéfinies.

L'instruction conditionnelle fonctionne comme ceci: = condition ? resultTrue : resultFalse

La condition est définie comme une expression évaluée soit à 0 (pour False), soit différente de zéro (pour True). Les opérateurs de comparaison suivants sont définis: ==, !=, >, <, >=, et <=.

Les formules sont écrites comme par exemple: 2 * Longueur, où la longueur est une propriété de l'objet ayant l'expression.

Références aux données CAD
Il est possible d'utiliser des données provenant d'autres objets de la pièce 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:

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, puis donner 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 d'avoir une feuille de calcul dans un document et des valeurs de référence dans d'autres documents.

Important note: You use a document's name to reference it from other documents. Now, when saving the document the first time you choose a certain file name and this is usually different to "Unnamed1" (or its translated version) and then the links are lost after reopening it. So, it's recommended to create first the master document, create a spreadsheet, save and close it. After reopening the name is set to the above file name. Afterwards you can still make changes and save the file but you shouldn't rename it.

Then create the further documents where you want to add expressions to. Assuming you named the master document "master" you can access an alias like this: master#Spreadsheet.Length

Unfortunately, the integrated checker is more confusing than helping because it always gives parser errors or claims that this or that doesn't exist. So, just continue on typing. When you are finished and the content is correct the OK suddenly becomes active.

Of course, it's up to you to load the corresponding documents later when you want to change anything.

Problèmes connus / tâches restantes

 * Les graphes de dépendances sont basés sur la relation entre les objets et le document, et non par les propriétés. Cela signifie que vous ne pouvez pas fournir des données et interrogez le même objet, par exemple dans une feuille de calcul, même si il n'y a pas de dépendance cyclique lorsque seulement les propriétés sont considérées. Mais pour contourner le problème, utilisez plusieurs feuilles de calcul, par exemple une pour votre modèle, et une autre pour les rapports.
 * Il n'y a aucun gestionnaire d'expression où toutes les expressions d'un document sont répertoriés, mais il peut être créé, supprimé, demandé, etc.