FreeCAD
FreeCAD 1.1.1 - Expressions et modèles paramétriques
Ce tutoriel explique comment construire un modèle réellement paramétrique dans FreeCAD 1.1.1.
L'objectif est d'obtenir un fichier dans lequel les dimensions importantes sont regroupées dans une feuille de paramètres. Modifier une seule valeur, par exemple le diamètre intérieur d'un tube à essai, provoque automatiquement la mise à jour du modèle 3D.
L'exemple utilisé est un bouchon destiné à un tube à essai, mais la méthode est applicable à pratiquement n'importe quelle pièce.
1. Principe général
Un modèle paramétrique peut être organisé ainsi :
Spreadsheet
↓
Paramètres
↓
Expressions
↓
Contraintes des esquisses
↓
Pad / Pocket / Revolution / etc.
↓
Modèle 3D
Au lieu d'écrire directement :
15.6 mm
dans une contrainte, on écrit par exemple :
<<Parametres>>.diametre_bouchon
La valeur réelle est alors stockée dans une feuille de calcul.
2. Créer la feuille de paramètres
Créer un nouveau document FreeCAD.
Puis sélectionner l'atelier :
Spreadsheet
Créer une nouvelle feuille de calcul.
Renommer son Label en :
Parametres
Le nom visible dans l'arborescence doit donc être :
Parametres
3. Créer les premiers paramètres
Créer le tableau suivant :
| Cellule | Nom | Valeur |
|---|---|---|
| A1 | Paramètre | Valeur |
| A2 | Diamètre intérieur tube | 16 mm |
| A3 | Jeu radial | 0.20 mm |
| A4 | Longueur insertion | 12 mm |
| A5 | Épaisseur paroi | 1.2 mm |
| A6 | Hauteur chambre | 10 mm |
| A7 | Largeur chambre | 10 mm |
| A8 | Diamètre bouchon | formule |
| A9 | Diamètre intérieur bouchon | formule |
Dans B2 :
16 mm
Dans B3 :
0.20 mm
Dans B4 :
12 mm
Dans B5 :
1.2 mm
Dans B6 :
10 mm
Dans B7 :
10 mm
4. Créer des alias
Les alias donnent un nom lisible aux cellules.
Au lieu d'utiliser :
Spreadsheet.B2
on pourra utiliser :
<<Parametres>>.diametre_tube
Pour créer un alias :
-
sélectionner la cellule ;
-
utiliser Spreadsheet → Set alias ;
-
ou utiliser le raccourci :
Ctrl + Shift + A
Créer les alias suivants :
| Cellule | Alias |
|---|---|
| B2 | diametre_tube |
| B3 | jeu_radial |
| B4 | longueur_insertion |
| B5 | epaisseur_paroi |
| B6 | hauteur_chambre |
| B7 | largeur_chambre |
Les alias ne doivent pas contenir d'espaces.
Préférer :
diametre_tube
à :
diamètre tube
Éviter également les alias très courts tels que :
A
W
m
s
car certains noms peuvent entrer en conflit avec les unités reconnues par FreeCAD.
5. Faire des calculs dans le Spreadsheet
Une formule dans une cellule de Spreadsheet commence par :
=
Dans B8, calculons le diamètre du bouchon.
On veut un jeu de 0.20 mm de chaque côté du bouchon :
=diametre_tube - 2 * jeu_radial
Avec :
diametre_tube = 16 mm
jeu_radial = 0.20 mm
on obtient :
15.6 mm
Attribuer ensuite à B8 l'alias :
diametre_bouchon
Dans B9, calculons le diamètre intérieur du bouchon :
=diametre_bouchon - 2 * epaisseur_paroi
Attribuer l'alias :
diametre_interieur
Le Spreadsheet devient donc approximativement :
A B
-----------------------------------------------------
Diamètre intérieur tube 16 mm
Jeu radial 0.20 mm
Longueur insertion 12 mm
Épaisseur paroi 1.2 mm
Hauteur chambre 10 mm
Largeur chambre 10 mm
Diamètre bouchon 15.6 mm
Diamètre intérieur bouchon 13.2 mm
6. Expressions dans FreeCAD
Il faut distinguer deux cas.
Dans un Spreadsheet
Une formule commence par :
=
Exemple :
=diametre_tube - 2 * jeu_radial
Dans une propriété FreeCAD
Par exemple la longueur d'un Pad ou une contrainte Sketcher.
Cliquer sur le bouton f(x) ou appuyer sur :
=
FreeCAD ouvre alors l'éditeur d'expression.
Dans cet éditeur, saisir directement :
<<Parametres>>.diametre_bouchon
Il ne faut pas ajouter un deuxième = dans l'éditeur.
7. Créer une première pièce paramétrique
Passer dans :
Part Design
Créer :
Body
puis :
Sketch
sur le plan XY.
Dessiner un cercle centré sur l'origine.
Ajouter une contrainte de diamètre.
Au lieu de saisir :
15.6 mm
appuyer sur :
=
Dans l'éditeur d'expression saisir :
<<Parametres>>.diametre_bouchon
Valider.
Le diamètre du cercle dépend maintenant du Spreadsheet.
8. Extrusion paramétrique
Fermer l'esquisse.
Créer un :
Pad
Pour sa longueur, ouvrir l'éditeur d'expression avec =.
Saisir :
<<Parametres>>.longueur_insertion
Le Pad mesure maintenant automatiquement :
12 mm
si le Spreadsheet contient :
longueur_insertion = 12 mm
9. Tester le fonctionnement
Retourner dans :
Parametres
Modifier :
diametre_tube
de :
16 mm
vers :
18 mm
Le calcul devient automatiquement :
diametre_bouchon
=
18 mm - 2 × 0.20 mm
=
17.6 mm
Le Sketch puis le Pad doivent automatiquement changer de diamètre.
C'est le principe fondamental d'un modèle paramétrique.
10. Utiliser directement des calculs dans une propriété
On n'est pas obligé de créer une cellule pour chaque résultat.
On peut écrire directement dans une propriété :
<<Parametres>>.diametre_tube - 2 * <<Parametres>>.jeu_radial
Cependant, pour un modèle complexe, il est généralement plus lisible de mettre les calculs importants dans le Spreadsheet.
Par exemple :
diametre_bouchon
diametre_interieur
diametre_chambre
hauteur_totale
epaisseur_plancher
Le modèle devient ainsi beaucoup plus facile à comprendre.
11. Opérations mathématiques
Les opérateurs classiques sont disponibles :
+
-
*
/
^
Exemples :
=diametre_tube + 1 mm
=diametre_tube - 2 * jeu_radial
=diametre_tube / 2
=diametre_tube ^ 2
Les parenthèses permettent de contrôler l'ordre des opérations :
=(diametre_tube - 2 * jeu_radial) / 2
12. Fonctions utiles
FreeCAD dispose également de fonctions mathématiques.
Quelques fonctions courantes :
abs()
sqrt()
sin()
cos()
tan()
min()
max()
round()
floor()
ceil()
Exemples :
=sqrt(25 mm^2)
=max(diametre_tube - 0.4 mm; 10 mm)
Selon le contexte et les paramètres régionaux, le séparateur d'arguments peut apparaître différemment dans l'interface. L'autocomplétion de l'éditeur d'expression permet de vérifier la syntaxe acceptée.
13. Expressions conditionnelles
FreeCAD 1.1 permet également des expressions conditionnelles.
Syntaxe :
condition ? valeur_si_vrai : valeur_si_faux
Exemple :
diametre_tube > 20 mm ? 2 mm : 1.2 mm
Cela signifie :
si diametre_tube > 20 mm
épaisseur = 2 mm
sinon
épaisseur = 1.2 mm
On peut par exemple calculer automatiquement l'épaisseur du bouchon :
=diametre_tube >= 20 mm ? 1.6 mm : 1.2 mm
14. Référencer une propriété d'un objet
Les expressions ne sont pas limitées aux Spreadsheets.
On peut référencer une propriété d'un objet.
Par exemple :
Pad.Length
ou :
Box.Length
Avec un Label :
<<MonPad>>.Length
Pour la position d'un objet :
<<MonObjet>>.Placement.Base.x
<<MonObjet>>.Placement.Base.z
15. Nommer les contraintes d'une esquisse
Les contraintes peuvent elles aussi avoir un nom.
Supposons une esquisse appelée :
SketchBouchon
et une contrainte nommée :
DiametreExterieur
Depuis une autre propriété, elle peut être référencée avec :
<<SketchBouchon>>.Constraints.DiametreExterieur
Dans la même esquisse :
Constraints.DiametreExterieur
C'est beaucoup plus lisible qu'une référence par numéro telle que :
Constraints[7]
16. Exemple complet pour le bouchon de tube à essai
Pour un bouchon paramétrique destiné à l'élevage de fourmis, une feuille de paramètres pourrait ressembler à ceci :
| Paramètre | Valeur / formule | Alias |
|---|---|---|
| Diamètre intérieur tube | 16 mm |
diametre_tube |
| Jeu radial | 0.20 mm |
jeu_radial |
| Diamètre bouchon | =diametre_tube - 2 * jeu_radial |
diametre_bouchon |
| Longueur insertion | 12 mm |
longueur_insertion |
| Épaisseur paroi | 1.2 mm |
epaisseur_paroi |
| Diamètre intérieur | =diametre_bouchon - 2 * epaisseur_paroi |
diametre_interieur |
| Hauteur chambre | 10 mm |
hauteur_chambre |
| Largeur chambre | 10 mm |
largeur_chambre |
| Épaisseur plancher | 1.2 mm |
epaisseur_plancher |
| Épaisseur volet | 0.8 mm |
epaisseur_volet |
| Jeu volet | 0.25 mm |
jeu_volet |
| Largeur volet | =largeur_chambre + 2 mm |
largeur_volet |
| Diamètre collerette | =diametre_tube + 3 mm |
diametre_collerette |
Ainsi, pour adapter tout le bouchon à un autre tube, il suffit principalement de modifier :
diametre_tube
Par exemple :
14 mm
16 mm
18 mm
20 mm
Toutes les dimensions dépendantes sont recalculées.
17. Organiser les paramètres
Une bonne feuille de paramètres peut être organisée en plusieurs sections.
PARAMÈTRES TUBE
Diamètre tube
Jeu radial
BOUCHON
Diamètre bouchon
Longueur insertion
Épaisseur paroi
CHAMBRE DE NOURRISSAGE
Largeur chambre
Hauteur chambre
Épaisseur plancher
VOLET
Largeur volet
Épaisseur volet
Jeu volet
COLLERETTE
Diamètre collerette
Hauteur collerette
Une convention pratique consiste à réserver :
Colonne A = description
Colonne B = valeur
Colonne C = commentaire
et à placer les alias sur les cellules de la colonne B.
18. Valeurs d'entrée et valeurs calculées
Il est utile de distinguer deux types de paramètres.
Valeurs saisies par l'utilisateur
Par exemple :
diametre_tube = 16 mm
jeu_radial = 0.20 mm
longueur_insertion = 12 mm
epaisseur_paroi = 1.2 mm
Valeurs calculées
Par exemple :
diametre_bouchon
diametre_interieur
diametre_collerette
largeur_volet
Cette distinction évite de modifier accidentellement une valeur qui devrait être calculée.
19. Les unités sont importantes
Écrire de préférence :
16 mm
et non :
16
De même :
0.2 mm
est préférable à :
0.2
FreeCAD effectue une analyse dimensionnelle des expressions.
Par exemple :
10 mm + 2 mm
est cohérent.
En revanche une expression mélangeant incorrectement une longueur et un nombre sans dimension peut provoquer une erreur.
20. Éviter les dépendances circulaires
Il faut éviter une chaîne de dépendances comme :
Spreadsheet
↓
Pad
↓
Spreadsheet
Par exemple :
Spreadsheet.diametre
↓
Pad
puis vouloir récupérer :
Pad.Shape.Volume
dans le même Spreadsheet qui pilote déjà le Pad peut créer une dépendance circulaire.
Pour les modèles complexes, une architecture plus propre est :
Spreadsheet Parametres
↓
Modèle
↓
Spreadsheet Resultats
Parametres pilote la géométrie.
Resultats sert éventuellement à afficher des volumes, surfaces ou autres résultats calculés.
21. Bonnes pratiques pour un modèle robuste
Centraliser les dimensions importantes
Éviter de disperser des valeurs numériques comme :
1.2 mm
0.25 mm
15.6 mm
dans des dizaines de fonctions.
Créer plutôt :
epaisseur_paroi
jeu_volet
diametre_bouchon
Utiliser des alias descriptifs
Préférer :
diametre_bouchon
à :
d1
Conserver les unités
Préférer :
0.25 mm
à :
0.25
Utiliser les contraintes géométriques
Dans Sketcher, utiliser autant que possible :
Horizontal
Vertical
Coincident
Concentric
Equal
Symmetric
puis ne paramétrer que les dimensions réellement nécessaires.
Éviter de contraindre inutilement
Une esquisse doit être complètement définie, mais pas surcontrainte.
Préférer les plans de référence
Lorsque c'est possible, créer les esquisses sur :
XY_Plane
XZ_Plane
YZ_Plane
ou sur des Datum Planes plutôt que de dépendre systématiquement d'une face générée par une opération précédente.
Cela rend généralement le modèle plus résistant aux changements importants de géométrie.
22. Déboguer une expression
Si une expression devient rouge ou affiche une erreur, vérifier dans cet ordre :
Nom du Spreadsheet
Exemple :
<<Parametres>>
Alias
Vérifier :
diametre_bouchon
et non :
diametre bouchon
Unités
Vérifier par exemple :
0.2 mm
au lieu de :
0.2
si l'expression attend une longueur.
Dépendance circulaire
Vérifier qu'un objet ne dépend pas indirectement de lui-même.
Résultat de l'expression
L'éditeur d'expression affiche normalement le résultat calculé avant validation.
Par exemple :
<<Parametres>>.diametre_tube - 2 * <<Parametres>>.jeu_radial
doit produire quelque chose comme :
15.60 mm
avant même de cliquer sur OK.
23. Expressions utiles — antisèche
Référence à un paramètre
<<Parametres>>.diametre_tube
Soustraction
<<Parametres>>.diametre_tube - 0.4 mm
Utilisation de deux paramètres
<<Parametres>>.diametre_tube - 2 * <<Parametres>>.jeu_radial
Division par deux
<<Parametres>>.diametre_bouchon / 2
Épaisseur de chaque côté
(<<Parametres>>.diametre_exterieur - <<Parametres>>.diametre_interieur) / 2
Condition
<<Parametres>>.diametre_tube >= 20 mm ? 1.6 mm : 1.2 mm
Propriété d'un Pad
Pad.Length
Contrainte nommée
<<SketchBouchon>>.Constraints.DiametreExterieur
Position Z
<<MonObjet>>.Placement.Base.z
24. Architecture recommandée
Pour une pièce un peu complexe comme le bouchon-sas :
Document
│
├── Parametres
│
├── Body_Bouchon
│ ├── Sketch_Profil
│ ├── Pad_Base
│ ├── Sketch_Chambre
│ ├── Pocket_Chambre
│ ├── Sketch_Passage
│ └── Pocket_Passage
│
├── Body_Volet
│ ├── Sketch_Volet
│ └── Pad_Volet
│
└── Body_Trappe
├── Sketch_Trappe
└── Pad_Trappe
Le Spreadsheet Parametres devient la source commune de toutes les dimensions.
Par exemple :
Body_Bouchon
← epaisseur_paroi
← diametre_bouchon
← longueur_insertion
Body_Volet
← largeur_volet
← epaisseur_volet
← jeu_volet
Body_Trappe
← largeur_chambre
← epaisseur_paroi
25. Résultat
Une fois cette méthode mise en place, adapter une pièce ne demande plus de modifier chaque esquisse.
Il suffit par exemple de passer :
diametre_tube = 16 mm
à :
diametre_tube = 18 mm
FreeCAD recalcule ensuite :
diametre_bouchon
diametre_interieur
diametre_collerette
largeur_volet
puis met à jour les esquisses et les opérations Part Design.
C'est cette séparation entre paramètres, formules et géométrie qui permet de construire des fichiers FreeCAD véritablement paramétriques et réutilisables.