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();
Cube Impossible : une structure géométrique complexe qui ne peut être fabriquée en une seule pièce par des méthodes traditionnelles comme le moulage ou l'usinage. Cette conception comporte des tunnels internes et des parties imbriquées, exploitant les capacités uniques des imprimantes 3D
// Dimensions du cube
taille_cube = 50; // Taille totale du cube
epaisseur = 5; // Épaisseur des parois
taille_tunnel = 15; // Taille des tunnels internes
// Fonction pour créer un cube creux avec des tunnels
module cube_impossible() {
difference() {
// Cube extérieur
cube([taille_cube, taille_cube, taille_cube], center = true);
// Cube intérieur pour creuser l'intérieur
translate([-epaisseur, -epaisseur, -epaisseur])
cube([taille_cube - 2 * epaisseur, taille_cube - 2 * epaisseur, taille_cube - 2 * epaisseur], center = true);
// Tunnels traversants dans les trois directions
for (i = [-1, 1]) {
// Tunnel en X
translate([0, i * (taille_cube / 2 - epaisseur), 0])
cube([taille_cube, taille_tunnel, taille_tunnel], center = true);
// Tunnel en Y
translate([i * (taille_cube / 2 - epaisseur), 0, 0])
cube([taille_tunnel, taille_cube, taille_tunnel], center = true);
// Tunnel en Z
translate([0, 0, i * (taille_cube / 2 - epaisseur)])
cube([taille_tunnel, taille_tunnel, taille_cube], center = true);
}
// Structure torsadée interne
for (angle = [0 : 45 : 135]) {
rotate([angle, angle, 0])
translate([0, 0, 0])
cylinder(h = taille_cube, r = epaisseur / 2, center = true);
}
}
}
// Appel du module pour afficher le cube impossible
cube_impossible();