// Paramètres
cube_size = 50; // Taille extérieure du cube
frame_thickness = 5; // Épaisseur des barres du cadre
sphere_diameter = cube_size - frame_thickness - 1; // Diamètre de la sphère (plus grand pour rester emprisonnée)

// Module pour créer un cadre de cube
module cube_frame(size, thickness) {
    // Générer les barres le long des axes principaux
    for (x = [-1, 1])
        for (y = [-1, 1])
            for (z = [-1, 1]) {
                // Barres le long de l'axe Z
                translate([x * (size / 2 - thickness / 2),
                           y * (size / 2 - thickness / 2),
                           0])
                    cube([thickness, thickness, size], center = true);
               
                // Barres le long de l'axe X
                translate([0,
                           y * (size / 2 - thickness / 2),
                           z * (size / 2 - thickness / 2)])
                    cube([size, thickness, thickness], center = true);
               
                // Barres le long de l'axe Y
                translate([x * (size / 2 - thickness / 2),
                           0,
                           z * (size / 2 - thickness / 2)])
                    cube([thickness, size, thickness], center = true);
            }
}

// Création du cadre du cube
cube_frame(size = cube_size, thickness = frame_thickness);

// Ajout de la sphère emprisonnée
translate([0, 0, 0]) // Centrer la sphère dans le cadre
sphere(d = sphere_diameter);