// Paramètres taille_cube = 20; // Taille du cube extérieur rayon_sphere = 11; // Rayon de la sphère intérieure espace = 2; // Distance entre la sphère et le cube rayon_trou = 8; // Rayon des trous sur les faces du cube // Module pour le cube extérieur avec des trous module cube_avec_trous(taille_cube, espace, rayon_trou) { difference() { // Cube extérieur cube([taille_cube, taille_cube, taille_cube], center = true); // Creux intérieur (espace pour la sphère) cube([taille_cube - 2 * espace, taille_cube - 2 * espace, taille_cube - 2 * espace], center = true); // Trous : Crée des trous sur les six faces du cube for (i = [-1, 1]) { // Trous sur les faces X translate([i * taille_cube / 2, 0, 0]) rotate([0, 90, 0]) cylinder(h = taille_cube, r = rayon_trou, center = true); // Trous sur les faces Y translate([0, i * taille_cube / 2, 0]) rotate([90, 0, 0]) cylinder(h = taille_cube, r = rayon_trou, center = true); // Trous sur les faces Z translate([0, 0, i * taille_cube / 2]) cylinder(h = taille_cube, r = rayon_trou, center = true); } } } // Module pour la sphère intérieure module sphere_interieure(rayon) { translate([0, 0, 0]) sphere(r = rayon); } // Combinaison des modules union() { // Cube extérieur avec trous cube_avec_trous(taille_cube, espace, rayon_trou); // Sphère intérieure sphere_interieure(rayon_sphere); }