// 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.5; // Epaisseur de la suspension 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, 0, -(epaisseur_suspension + epaisseur) / 2]) // Positionne la suspension sous l'etagere rotate([90,0,0]) linear_extrude(epaisseur_suspension) triangle_creux(); } // 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