Skip to main content

Toufic BATACHE

1 - Objet fonctionnel

Cabane pour oiseaux :

J'ai commencé par une maison : la chose la plus simple à dessiner. J'ai rapidement compris que ce n'était pas le cas en 3D. J'ai réussi à faire un cube, le vider, créer une porte, des fenêtres et un toit. Ensuite, comme on a besoin d'un objet fonctionnel, j'ai modifié cette maison pour en faire une cabane pour oiseaux en remplaçant la porte rectangulaire par une cylindrique et en créant des trous dans le toit pour pouvoir l'accrocher.

Fichier SCAD : cabane_pour_oiseaux.scad

Fichier exporté STL : cabane_pour_oiseaux.stl

Capture d'écran du modèle 3D :

Screenshot 2024-12-02 at 11.19.25 AM.png

Code SCAD :

$fn=100;

module fenetre() { // 4 cubes pour créer une fenêtre avec la différence
    translate([0, 0, 0]) cube([1.5, 4, 1.5]);
    translate([2, 0, 0]) cube([1.5, 4, 1.5]);
    translate([2, 0, 2]) cube([1.5, 4, 1.5]);
    translate([0, 0, 2]) cube([1.5, 4, 1.5]);
}

difference() {
    union() {
        cube([10, 10, 10]); // cube maison
        translate([5, -.5, 5]) rotate([-90, 0, 0]) cylinder(2, 2.5, 2.5); // contour 3D porte cercle
    }
    translate([1, 1, 1]) cube([8, 8, 10]); // cube pour vider la maison
    //translate([4, -2, 1]) cube([2, 4, 4]); // porte rectangle
    translate([5, -1, 5]) rotate([-90, 0, 0]) cylinder(3, 2, 2); // porte cercle
    translate([2, 3.25, 3.25]) rotate([0, 0, 90]) fenetre(); // fenetre gauche
    translate([12, 3.25, 3.25]) rotate([0, 0, 90]) fenetre(); // fenetre droite
    translate([3.25, 7.5, 3.25]) fenetre(); // fenetre arrière
}

difference() {
    translate([4.25, -1, 14.5]) rotate([0, 135, 0]) union() { // toit
        cube([10, 12, 1]); 
        translate([0, 0, 0]) rotate([0, -90, 0]) cube([11, 12, 1]);
    }
    translate([5, 3, 12]) { // trous dans le toit pour qu'on puisse l'accrocher
        cylinder(4, .5, .5);
        translate([0, 3.5, 0]) cylinder(4, .5, .5);
    }
}

translate([1, 1, 10]) rotate([90, 0, 0]) linear_extrude(height=1) { // prisme qui bouche l'espace entre le mur avant et le toit
    polygon([[0, 0], [8, 0], [4, 4]]);
}

translate([1, 10, 10]) rotate([90, 0, 0]) linear_extrude(height=1) { // prisme qui bouche l'espace entre le mur arrière et le toit
    polygon([[0, 0], [8, 0], [4, 4]]);
}

translate([7, 2, 11]) cube([2, 2, 4]); // cheminée

translate([2.75, .5, 8.5]) rotate([90, 0, 0]) linear_extrude(height=1) {
    text("TB", 3, "Figtree:style=Bold"); // initiales TB
}
Paramètres d'impression :

Pour imprimer la cabane à l'endroit, il faut rajouter beaucoup de supports : le trou d'entrée en relief, les initiales, le toit et l'intérieur. Pour résoudre ce problème, je l'ai tourné comme ceci :

Screenshot 2024-12-02 at 11.44.43 AM.png

Avec supports et jupe (on voit aussi les paramètres d'impression à droite de la capture d'écran) :

Screenshot 2024-12-02 at 11.45.48 AM.png

Fichier 3MF : cabane_pour_oiseaux.3mf

Fichier GCODE : cabane_pour_oiseaux_0.4n_0.25mm_PLA_MK4S_6h3m.bgcode

Imprimé en 3D :

Vidéo : IMG_6762.MOV

Photos :

IMG_6985.jpg
IMG_6988.jpg
IMG_6986.jpg
IMG_6987.jpg

2 - Objet impossible à faire autrement qu'en 3D

Table d'appoint en tanségrité :

J'ai toujours aimé avoir une table tanségrité. Tanségrité, c'est quoi ? C'est un principe structurel selon lequel les éléments sous compression sont maintenus en place par des éléments sous tension. Donc une table reliée que par des chaines. Le fait que les chaines fassent partie de l'objet le rendent impossible à recréer qu'en 3D.

Pour faire les chaines, j'ai regardé sur le wiki comment faire des "torus" en SCAD. Un maillon de chaine est un torus, coupé en deux et allongé par deux cylindres. Voilà un maillon de chaine décomposé :

Screenshot 2024-12-11 at 4.30.27 PM.png

J'ai ensuite transformé ce modèle en module "chain_link()" pour pouvoir l'utiliser dans un autre module "chain()". Dans ce dernier, j'ai créé une for loop qui les lie en les bougant tous et en tournant uniquement les maillons impairs.

Après impression, je me suis rendu compte qu'il y a eu un problème de mesures et les chaines sont un peu longues : la table ne tient pas parfaitement mais ça marche quand même.

Fichier SCAD : tensegrity.scad

Fichier corrigé (que je n'ai pas imprimé) SCAD : tensegrity fixed.scad

Fichier exporté STL : Je ne peux pas le mettre, il fait 275MB :( même en compressant ça fait 30MB...

Capture d'écran du modèle 3D :

Screenshot 2024-12-11 at 4.24.47 PM.png

Code SCAD :

$fn = 1;

module support() {
    cube([3, 3, 20.5]);
    translate([0, 0, 17.5]) cube([3, 11, 3]);
}

module base() {
    cube([20, 20, 3]);
    translate([8.5, 0, 0]) support();
}

difference() {
    union() {
        base();

        translate([0, 20, 30]) rotate([180, 0, 0]) base();
    }
    translate([6, 7.5, 29]) linear_extrude(height=2) {
        text("TB", 5, "Figtree:style=Bold"); // initiales TB
    }
}

// https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/2D_to_3D_Extrusion#Mesh_Refinement_2
module chain_link(r, s, t, fn = 100) {
    // r = radius
    // s = size
    // t = tall
    union() {
        rotate_extrude(angle = 180, $fn = 100) translate([s, 0, 0]) circle(r = r, $fn = fn);
        translate([-s, 0, 0]) rotate([90, -36, 0]) cylinder(r = r, h = s * t, $fn = fn);
        translate([s, 0, 0]) rotate([90, 0, 0]) cylinder(r = r, h = s * t, $fn = fn);
        translate([0, -s * t, 0]) rotate_extrude(angle = -180, $fn = 100) translate([s, 0, 0]) circle(r = r, $fn = fn);
    }
}

module chain(r, s, t, l, fn = 100) {
    union() {
        for (i = [0:l]) {
            if (i % 2 == 0) {
                translate([0, -t * 1.05 * i, 0]) chain_link(r, s, t, fn);
            } else {
                translate([0, -t * 1.05 * i, 0]) rotate([0, 90, 0]) chain_link(r, s, t, fn);
            }
        }
    }
}

chain_r = .2;
chain_s = .6;
chain_t = 1.5;
chain_l_long = 16;
chain_l_short = 3;

//translate([1.5, 1.5, 31]) rotate([-90, 0, -45]) chain_link(.2, .6);

union() {
    translate([1.5, 1.5, 2.5]) rotate([-90, 0, -45]) chain(chain_r, chain_s, chain_t, chain_l_long, $fn);

    translate([18.5, 1.5, 2.5]) rotate([-90, 0, 45]) chain(chain_r, chain_s, chain_t, chain_l_long, $fn);

    translate([18.5, 18.5, 2.5]) rotate([-90, 0, -45]) chain(chain_r, chain_s, chain_t, chain_l_long, $fn);

    translate([1.5, 18.5, 2.5]) rotate([-90, 0, 45]) chain(chain_r, chain_s, chain_t, chain_l_long, $fn);

    translate([10, 10, 12.33]) rotate([-90, 0, 45]) chain(chain_r, chain_s, chain_t, chain_l_short, $fn);
}
Paramètres d'impression :

Pour imprimer la table à l'endroit, il faut rajouter beaucoup de supports. Pour résoudre ce problème, je l'ai tourné comme ceci :

Screenshot 2024-12-11 at 4.15.16 PM.png

Avec supports et jupe (on voit aussi les paramètres d'impression à droite de la capture d'écran) :

Screenshot 2024-12-11 at 4.16.33 PM.png

Fichier 3MF : Fichier trop grand pour le télécharger :(

Fichier GCODE : tensegrity_0.4n_0.25mm_PLA_MK4S_5h9m.bgcode

Imprimé en 3D :

Photos : 

IMG_7771.png
IMG_7772.png
IMG_7773.png
IMG_7774.png

3 - Objet avec pause d'impression

Cone contenant des petites boules :

J'ai réfléchi à quel objet pourrait ne pas avoir besoin de support, pour que je puisse mettre des trucs à l'intérieur et que ça soit vide. Un cone me semblait le plus simple et intuitif à réaliser. J'ai décidé de mettre des petites boules dedans qui font un bruit lorsqu'on le secoue. J'ai rajouté ces boules à côté du cone, de façon à ce qu'elles soient imprimées avant la pause. Comme ça, je peux les enlever et les mettre dedans ! 

Fichier SCAD : cone.scad

Fichier exporté STL : cone.stl

Capture d'écran du modèle 3D :

Screenshot 2024-12-12 at 3.36.42 PM.png

Code SCAD :

$fn=100;

difference() {
    // https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Primitive_Solids#cylinder
    cylinder(h=15, r1=10, r2=0);

    // https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Primitive_Solids#cylinder
    translate([0, 0, 1]) cylinder(h=12, r1=8, r2=0);
    
    //cube(15);
}

translate([15, 0, .75]) sphere(.75);

translate([12, 0, .75]) sphere(.75);

translate([-15, 0, .75]) sphere(.75);

translate([-12, 0, .75]) sphere(.75);

translate([0, 15, .75]) sphere(.75);

translate([0, 12, .75]) sphere(.75);

translate([0, -15, .75]) sphere(.75);

translate([0, -12, .75]) sphere(.75);
Paramètres d'impression :

Il n'y a pas besoin de supports pour cette structure. J'ai cependant rajouté une jupe pour plus de stabilité.

Screenshot 2024-12-12 at 3.38.07 PM.png

On voit aussi les paramètres d'impression à droite de la capture d'écran :

Screenshot 2024-12-12 at 3.38.32 PM.png

Pour que l'imprimante se mette en pause et nous permette de mettre les boules dans la structure, nous ajoutons une pause en sélectionnant la couche cible avec le curseur de couches à droite et en faisant "clic droit" > "ajouter une pause".

Screenshot 2024-12-12 at 3.39.30 PM.png

Fichier 3MF : cone.3mf

Fichier GCODE : cone_0.4n_0.25mm_PLA_MK4S_28m.bgcode

Imprimé en 3D :

Photos :

IMG_7840.jpg IMG_7839.png

4 - BB-8 : un robot que j'aimerais beaucoup pouvoir réaliser

image.png

Ça fait 8 ans que je rêve de construire un BB-8, le droid spherique de Star Wars. En 2016, j'ai même créé une soundboard avec tous les sons que fait BB-8 et elle est toujours disponible sur mon site web. J'ai recherché des tutoriels et j'en ai trouvé un qui date de 2019 (un peu ancien) : https://www.instructables.com/DIY-BB8-Fully-3D-Printed-20cm-Diameter-First-Proto/

Je suis à la recherche d'autres plus nouveaux. Je posterai les liens que je trouve ici.