Modèles 3DVoir les modèles

Personnaliser un modèle 3D : OpenSCAD et les modèles paramétriques

Un modèle paramétrique se règle comme un appareil : on change une valeur, la pièce se recalcule. Ce tutoriel vous montre comment ça marche avec OpenSCAD, du premier cube aux curseurs, sans prérequis en programmation.

Publié le 28 septembre 2026 · 10 min de lecture · par l'équipe de Webdesign29

Un modèle paramétrique, c'est quoi ?

Un fichier STL est figé : c'est une surface faite de triangles, à une taille donnée. Pour l'adapter, il faut le déformer, et les trous ronds deviennent ovales. Un modèle paramétrique est décrit par des règles : « une boîte de largeur par profondeur, avec des parois de 2 mm ». Changez la largeur, et tout le reste suit, parois et couvercle compris.

C'est idéal pour les objets qui doivent s'adapter à quelque chose d'existant : un tiroir, un câble, une vis, un appareil. Le catalogue de Modèles 3D en contient plusieurs, que vous réglez avec des curseurs :

Démarrer avec OpenSCAD

OpenSCAD est un logiciel libre et gratuit, disponible pour Windows, macOS et Linux sur openscad.org. Sa fenêtre a trois zones : l'éditeur de code à gauche, l'aperçu 3D à droite et la console en bas.

  • F5 affiche un aperçu rapide ;
  • F6 calcule le modèle définitif ;
  • Fichier, Exporter produit ensuite un STL ou un 3MF, à ouvrir dans votre trancheur.

Les unités sont libres, mais tout le monde travaille en millimètres, et les trancheurs aussi. Chaque instruction se termine par un point-virgule.

Les formes de base

Trois formes suffisent pour la plupart des objets utiles : le cube (en fait un pavé), le cylindre et la sphère. translate les déplace, rotate les fait tourner.

cube([40, 20, 10]);              // largeur, profondeur, hauteur en mm

translate([60, 10, 0])
  cylinder(h = 15, d = 20, $fn = 64);   // hauteur et diamètre

translate([100, 10, 10])
  sphere(d = 20, $fn = 64);

$fn fixe le nombre de facettes d'une forme ronde. Avec la valeur par défaut, un petit cylindre sort très anguleux ; entre 48 et 96 facettes, il paraît lisse sans alourdir le calcul.

Combiner : ajouter, retirer

Toute la puissance d'OpenSCAD tient dans trois opérations : union() réunit des formes, difference() retire des formes à la première, intersection() ne garde que leur partie commune. Voici une plaque percée :

difference() {
  cube([60, 40, 4]);                 // la plaque
  translate([30, 20, -1])
    cylinder(h = 6, d = 8, $fn = 48); // le trou, un peu plus haut que la plaque
}
−=cube()cylinder()difference()
difference() garde la première forme et lui retire toutes les suivantes.

Remarquez que le cylindre dépasse la plaque en dessous et au-dessus (il commence à -1 et mesure 6 mm pour une plaque de 4). Sans ce débord, l'aperçu montre parfois une fine peau parasite à la surface : c'est l'erreur de débutant la plus courante.

Les variables

Remplacez les nombres par des noms, et la pièce devient réglable :

largeur = 60;
profondeur = 40;
epaisseur = 4;
trou = 8;

difference() {
  cube([largeur, profondeur, epaisseur]);
  translate([largeur / 2, profondeur / 2, -1])
    cylinder(h = epaisseur + 2, d = trou, $fn = 48);
}

Le trou reste centré quelle que soit la largeur, et il traverse toujours la plaque, parce que tout est calculé à partir des variables. Une particularité à connaître : dans OpenSCAD, une variable garde une seule valeur. Si vous l'affectez deux fois, c'est la dernière affectation qui compte, partout dans le fichier.

Répéter : modules et boucles

Un module est une forme réutilisable, avec ses propres paramètres. Une boucle for la répète. Voici une réglette avec cinq plots, pratique pour ranger des bobines ou des rouleaux de ruban :

module plot(d, h) {
  cylinder(h = h, d = d, $fn = 32);
}

nombre = 5;
pas = 25;

cube([nombre * pas, 20, 3]);
for (i = [0 : nombre - 1])
  translate([pas / 2 + i * pas, 10, 3]) plot(8, 20);

Changez nombre et la base s'allonge d'elle-même. C'est exactement ainsi que fonctionnent nos range-piles et nos porte-outils : une grille calculée à partir du nombre de lignes et de colonnes.

Transformer les variables en curseurs

OpenSCAD comprend des commentaires spéciaux placés au bout d'une ligne de variable. Son panneau Customizer (menu Fenêtre ou Affichage, selon la version) les transforme en réglages, sans toucher au code :

/* [Dimensions] */
// Largeur intérieure, en millimètres.
largeur = 80;       // [30:5:200]
// Hauteur intérieure.
hauteur = 40;       // [15:120]

/* [Finition] */
coins = "arrondis"; // [droits, arrondis]
texte = "OUTILS";
avec_couvercle = true;

/* [Hidden] */
$fn = 48;
largeur = 80; // [30:5:200]Largeurhauteur = 40; // [15:120]Hauteurjeu = 0.3; // [0.1:0.05:0.6]Jeu
Une variable suivie d'un commentaire entre crochets devient un curseur : minimum, pas éventuel, maximum.
  • // [15:120] : un curseur de 15 à 120 ;
  • // [30:5:200] : un curseur de 30 à 200, par pas de 5 ;
  • // [droits, arrondis] : une liste déroulante ;
  • une variable texte donne un champ de saisie, une variable true ou false une case à cocher ;
  • le commentaire placé juste au-dessus d'une variable sert de description ;
  • /* [Dimensions] */ ouvre un groupe de réglages, et /* [Hidden] */ cache tout ce qui suit.

Le Customizer permet aussi d'enregistrer des jeux de réglages, pratique pour garder « tiroir de cuisine » et « tiroir du bureau » dans le même fichier.

Un exemple complet : la boîte avec couvercle

Voici une version simplifiée et commentée d'une boîte avec couvercle, dans l'esprit de celle du catalogue. La boîte et son couvercle sont posés côte à côte sur le plateau, sans supports.

/* [Dimensions intérieures] */
largeur = 80;      // [30:5:200]
profondeur = 60;   // [30:5:200]
hauteur = 40;      // [15:5:120]

/* [Parois et couvercle] */
paroi = 2;         // [1.2:0.2:4]
// Jeu entre couvercle et boîte : augmentez si le couvercle force.
jeu = 0.3;         // [0.1:0.05:0.6]

/* [Hidden] */
fond = 1.6;
rebord = 6;

// La boîte : un bloc plein, moins l'intérieur.
difference() {
  cube([largeur + 2 * paroi, profondeur + 2 * paroi, hauteur + fond]);
  translate([paroi, paroi, fond]) cube([largeur, profondeur, hauteur + 1]);
}

// Le couvercle, posé à côté : une plaque et un rebord qui rentre dans la boîte.
translate([largeur + 2 * paroi + 10, 0, 0]) {
  cube([largeur + 2 * paroi, profondeur + 2 * paroi, fond]);
  translate([paroi + jeu, paroi + jeu, fond])
    difference() {
      cube([largeur - 2 * jeu, profondeur - 2 * jeu, rebord]);
      translate([paroi, paroi, -1])
        cube([largeur - 2 * jeu - 2 * paroi, profondeur - 2 * jeu - 2 * paroi, rebord + 2]);
    }
}

Le réglage le plus important est jeu : c'est l'espace laissé entre le rebord du couvercle et la paroi. Trop petit, le couvercle force ; trop grand, il flotte. Commencez à 0,3 mm et ajustez selon votre imprimante.

Dans Family Print Lab

Les pièces personnalisables de notre catalogue sont justement des fichiers OpenSCAD avec ces annotations. Dans Family Print Lab, elles s'ouvrent dans l'atelier OpenSCAD de l'application : chaque variable annotée apparaît sous forme de curseur et l'aperçu 3D se met à jour quand vous le bougez. Vous n'avez pas besoin de lire le code pour les utiliser ; il est là si vous voulez aller plus loin.

Pour les plus jeunes, le mode enfant va encore plus loin dans la simplicité : l'enfant choisit un prénom, une taille ou un dessin, et un adulte valide avant l'impression.

Bonnes pratiques

  • Nommez vos variables en clair : diametre_vis plutôt que d2. Dans six mois, vous vous remercierez.
  • Donnez des bornes réalistes aux curseurs : un minimum trop bas produit des parois impossibles à imprimer.
  • Testez les extrêmes : réglez chaque curseur au minimum puis au maximum, et vérifiez que la pièce reste cohérente.
  • Prévoyez le jeu pour tout ce qui s'emboîte, et exposez-le comme un réglage : chaque imprimante est un peu différente.
  • Pensez à l'impression : une face bien à plat sur le plateau, pas de surplomb au-delà d'environ 45 degrés si vous voulez éviter les supports.
  • Précisez la licence si vous partagez votre fichier ; voir notre guide des licences. Et si vous voulez publier vos modèles paramétriques, proposez-les ici.

Les modèles cités dans ce guide

À lire aussi