// Paramètres taille_cube = 25;        // Taille du cube extérieur rayon_sphere = 13;       // Rayon de la sphère intérieure espace = 3;              // Distance entre la sphère et le cube rayon_trou = 10;          // 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 cube+sphère union() {     // Cube extérieur avec trous     cube_avec_trous(taille_cube, espace, rayon_trou);     // Sphère intérieure     sphere_interieure(rayon_sphere); }