Expressions

    From FreeCAD Documentation
    This page is a translated version of the page Expressions and the translation is 100% complete.

    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 Bound-expression.svg. 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

    Vous pouvez faire référence à un objet par sa DonnéesName ou 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 <<Long_name_of_cylinder>>.Height. Pour faire référence à l'objet lui-même, utilisez la pseudo-propriété _self. Par exemple, vous pouvez utiliser Cylinder._self ou <<Label_of_cylinder>>._self.

    Pour référencer des objets de liste, utilisez <<object_label>>.list[list_index] ou object_name.list[index_liste]. Si vous souhaitez par exemple référencer une contrainte dans une esquisse, utilisez <<MySketch>>.Constraints[16]. Si vous êtes dans la même esquisse, vous pouvez omettre son nom et utiliser simplement Constraints[16].
    Remarque : l'index commence par 0, Constraint17 doit donc être référencée comme Constraints[16].

    Pour plus d'informations sur le référencement des objets, voir Référence aux données CAO.

    En haut

    Constantes prises en charge

    Les constantes suivantes sont prises en charge :

    Constante Description
    e nombre d'Euler
    pi Pi

    En haut

    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

    En haut

    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 la mesure du radian, 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 1 deg, 1 ° ou 1 rad 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

    En haut

    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

    En haut

    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.

    En haut

    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 : vector(2; 1; 3)

    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 matrix(1) qui crée une matrice identité.

    Exemple : matrix(1; 2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12; 13; 14; 15; 16)

    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(vector(0; 1; 0); 45)
    • create(<<rotation>>; 30; 30; 30)
    rotation(α; β; γ)
    create(<<rotation>>; axis; angle)
    create(<<rotation>>; α; β; γ)
    Placement placement(base; rotation) Crée un Placement avec différents paramètres, notamment :
    • base : emplacement de la base (Vecteur)
    • center : emplacement du centre (Vecteur)
    • rotation : Rotation
    • axis : axe de rotation (Vecteur)
    • angle : angle de rotation (sans unité ou valeur unitaire d'Angle)
    • matrix : Matrice

    Exemples :

    • placement(vector(2; 1; 3); rotation(vector(0; 0; 1); 45))
    • create(<<placement>>; create(<<vector>>; 2; 1; 2); create(<<rotation>>; create(<<vector>>; 0; 1; 0); 45))
    placement(base; rotation; center)
    placement(base; axis; angle)
    placement(matrix)
    create(<<placement>>; ...)

    En haut

    Fonctions vectorielles

    Fonctions : introduit dans la version 0.22.

    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)

    En haut

    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 :
    • une Rotation
    • un (Vector) d'axe et un angle (Angle avec ou sans unité)
    • trois angles d'Euler α, β, γ
    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)

    En haut

    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). 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é Description
    == égal à
    != différent de
    > strictement plus grand que
    < strictement plus petit que
    >= plus grand ou égal à
    <= plus petit ou égal à

    En haut

    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

    En haut

    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.

    En haut

    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 object.property. Si la propriété est un composé de champs, les champs individuels sont accessibles en tant que object.property.field.

    Le tableau suivant montre quelques 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&sup3 ; 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.

    En haut

    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.

    En haut

    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

    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 OK devient actif.

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

    En haut

    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 : = (A1 > A2) ? 1 : 0 donne une erreur, alors que = A1 > A2 ? 1 : 0 est accepté. L'expression = 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 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 : fcxref expression manager.
    • les bogues et tickets ouverts pour les expressions sont référencés sur le Bugtracker de Freecad, catégorie Expressions

    En haut