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
// 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();