Expressions
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 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.
Multiple arguments to a function may be separated by either a semicolon (';') or a comma followed by a space (", "). In the latter case, the comma is converted to a semicolon after entry. When a semicolon is used, no trailing space is necessary.
Trigonometric functions use degrees as their default unit; for radian measure, add rad following the first value in an expression. Example: cos(45) is the same as cos(pi rad / 4).
Description: Ceiling
Returns: The smallest integer value greater than or equal to x introduced in version 0.16
Description: Floor
Returns: The largest integer value less than or equal to x introduced in version 0.16
Description:
Returns: x rounded to the nearest integer introduced in version 0.16
Description: Truncate
Returns: x truncated to the nearest integer introduced in version 0.16
Les constantes pi et e sont prédéfinies.
Description: Number of cells from x through y
Returns: The number of cells from x through y, inclusive
Description: Standard deviation of values in cells x through y
Returns: Standard deviation
Conditional Expressions
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 <=.
The condition is defined as an expression that evaluates to either 0 (false) or non-zero (true). The following comparison operators are defined: ==, !=, >, <, >=, and <=.
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:
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.Longueur | Valeur numérique de la contrainte nommée "Longueur" dans l'esquisse |
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 d'avoir une feuille de calcul dans un document et des valeurs de référence dans 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.
Ultérieurement vous pouvez créer d'autres documents dans lesquels vous pouvez ajouter des expressions. Si vous avez appelé votre document maître "master", vous pourrez accéder à un alias comme ceci : master#Spreadsheet.Length
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
- 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 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 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ées, où elles pourraient être créées, supprimées, interrogées, etc.
- Les bugs / tickets d'Open Expressions peuvent être trouvés dans la catégorie FreeCAD Bugtracker Expressions.