Réparation d'une lampe
de maison de poupée

Voici un exemple typique où l'impression 3D domestique prends vraiment tout son sens. Ma mère me demanda si je pouvais réparer une lampe de sa maison de poupée. (Je vous rassure, je crois pas que c'est elle qui y joue encore).

Le support de l’abat-jour a disparu. Il fallu donc recréer une pièce remplissant ce rôle.

Première étape: imaginer la pièce qui servira de support. Rien de tel que de s'inspirer d'une lampe réelle sur le web :-)

Deuxième étape: Modéliser la pièce sur un programme de conception 3D. Pour ce genre de pièce, ma préférence va à openscad, un logiciel qui permet de programmer les pièces plutôt que de les dessiner.

Troisième étape: Imprimer la pièce et tester. Revenir sur l'étape 2 pour ajuster des dimensions et imprimer à nouveau.

C'est dans cette dernière étape que openscad est particulièrement intéressant. En effet, il est difficile de produire une pièce aux bonnes dimensions à la première impression. Imprimer une première fois, tester la pièce, corriger les dimensions et réimprimer est vraiment un avantage de ce mode de fabrication.

La lampe miniature
La lampe miniature
Modèle sur openscad
Modèle sur openscad
image
image
image

Ci-dessous, le code openscad. Les variables comme rint1 et rint2 représentent la partie centrale et son trou. rext2 et rext1 représentent le tour. L'épaisseur de la pièce est réglée par hint et la hauteur du cylindre central par hext.

Si la pièce est bien programmée, on peut facilement ajuster les variables jusqu'à l'impression d'une pièce parfaitement ajustée.

$fa = 1;
$fs = 1;

rint1 = 3.7;
rint2 = 4.9;
rext2 = 22;
rext1 = rext2-2;

mint = rint1 + (rint2-rint1)/2;
mext = rext1 + (rext2-rext1)/2;
rdif =  mext - mint;

hext = 2;
hint = 8;

// roue extérieure
difference() {
        cylinder(hext, rext2, rext2);
        cylinder(hext, rext1, rext1);
}

// cylindre intérieur
difference() {
        cylinder(hint, rint2, rint2);
        cylinder(hint, rint1, rint1);
}

// rayons
for(i=[0:90:270]) {
        rotate(i, [0,0,1]) {
                translate([mint + rdif/2, 0, hext/2]) {
                        cube([rdif,2,hext], true);
                }
        }
}