Skip to main content

Seema BAIG DUSMEE

Création d'une étagère avec pot de fleurs intégré avec suspension, et livres --> avec l'aide de : https://chatgpt.com/share/67444630-d040-8013-995c-46fe673aa6db

image.png

// Dimensions de l'etagere
longueur = 45;  // Longueur de l'etagere
largeur = 15;   // Largeur
epaisseur = 4;  // Epaisseur

// Dimensions du pot
diametre_pot = 8;  // Diametre du pot
hauteur_pot = 10;  // Hauteur du pot
epaisseur_pot = 0.5; // Epaisseur des parois du pot

// Dimensions de la suspension
cote_triangle = 40; // Cote du triangle equilateral (en cm)
epaisseur_suspension = 0.75; // Epaisseur de la suspension

// Dimensions de base communes aux livres
largeur_livre = 8;  // Largeur d'un livre
epaisseur_livre = 1.5; // Epaisseur d'un livre
espace_livre = 0.1;  // Espace entre les livres

module etagere() {
    difference() {
        // Base de l'etagere
        translate([0, 0, -epaisseur / 2])
            cube([longueur, largeur, epaisseur], center = true);
        
        // Trou esthetique pour le pot (alignement)
        translate([0, 0, epaisseur / 2])
            cylinder(h = epaisseur + 1, r = diametre_pot / 2, center = true);
    }
}

module pot_fleurs() {
    difference() {
        // Pot exterieur
        cylinder(h = hauteur_pot, r = diametre_pot / 2, center = true);
        
        // Creux interieur
        translate([0, 0, epaisseur_pot])
            cylinder(h = hauteur_pot - epaisseur_pot, r = (diametre_pot / 2) - epaisseur_pot, center = true);
    }
}

module triangle_creux() {
    // Creer un triangle equilateral creux
    difference() {
        // Triangle plein
        polygon(points=[[0, 0], [cote_triangle, 0], [cote_triangle/2, sqrt(3)/2 * cote_triangle]]);
        
        // Creux interieur du triangle
        translate([1, 1])  // Decalage leger pour le creux interieur
            polygon(points=[[0, 0], [cote_triangle-2, 0], [(cote_triangle-2)/2, sqrt(3)/2 * (cote_triangle-2)]]);
    }
}

module suspension() {
    // Positionnement du triangle sous l'etagere
    translate([-20, 6.5, -(epaisseur_suspension + epaisseur) / 2])  // Positionne la suspension sous l'etagere
    rotate([90,0,0])
        linear_extrude(epaisseur_suspension)
            triangle_creux();
}

module livre_arrondi(hauteur) {
    difference() {
        // Corps principal du livre : un cube
        translate([8,0,0]) cube([epaisseur_livre, largeur_livre, hauteur], center = false);
        
        // Enlever les coins arrondis sur le haut
        for (x = [-0,0]) {
            for (y = [-0, 0]) {
                // Arrondir les coins supérieurs
                translate([x * (epaisseur_livre / 2), y * (largeur_livre / 2), hauteur])
                    cylinder(h = 2, r1 = 0, r2 = 2);
                // Cylindres pour arrondir les coins
            }
        }
    }
}

// Liste des hauteurs des livres
hauteurs_livres = [10, 13, 15, 14, 12,9];

// Assemblage des livres collés avec un espace entre eux et alignés sur la même base
for (i = [0 : len(hauteurs_livres) - 1]) {
    // Décalage des livres en X avec espace entre eux
    translate([i * (epaisseur_livre + espace_livre), -3, -0]) {
        livre_arrondi(hauteurs_livres[i]);  
        // Appel de la fonction pour chaque hauteur
    }
}

// Assemblage final
etagere();
translate([0, 0, epaisseur / 2])  // Place le pot au-dessus de l'etagere
    pot_fleurs();
suspension();  // Ajoute la suspension sous l'etagere
livre_arrondi();