// Dimensions principales
badge_radius = 30;           // Rayon du badge avec le "R"
badge_thickness = 5;         // Épaisseur du badge
ring_inner_radius = badge_radius + 2; // Rayon interne de l'anneau
ring_outer_radius = ring_inner_radius + 8; // Rayon externe de l'anneau
ring_thickness = ring_outer_radius - ring_inner_radius; // Épaisseur calculée
ring_gap = 0.5;              // Espace pour permettre la rotation du badge
connector_width = 4;         // Largeur des bras connecteurs
connector_thickness = 3;     // Épaisseur des bras connecteurs
text_size = 20;              // Taille du texte "R"
text_depth = 2;              // Profondeur de gravure du texte

// Module pour le badge rotatif avec le "R"
module badge() {
    difference() {
        // Badge circulaire
        cylinder(h = badge_thickness, r = badge_radius, $fn = 100);

        // Gravure du texte "R"
        translate([-text_size / 2, -text_size / 2, badge_thickness - text_depth])
            linear_extrude(height = text_depth)
                text("R", size = text_size, valign = "center", halign = "center", font = "Liberation Sans");
    }
}

// Module pour l'anneau contenant le badge
module outer_ring() {
    difference() {
        // Anneau externe
        cylinder(h = badge_thickness + 2 * ring_gap, r = ring_outer_radius, $fn = 100);

        // Vide interne pour créer le rail du badge
        cylinder(h = badge_thickness + 2 * ring_gap + 1, r = ring_inner_radius, $fn = 100);
    }
}

// Module pour les connecteurs qui maintiennent le badge dans l'anneau
module connectors() {
    for (angle = [0, 180]) { // Deux connecteurs opposés à 0° et 180°
        rotate([0, 0, angle])
            translate([ring_inner_radius, 0, badge_thickness / 2])
                cube([connector_width, connector_thickness, badge_thickness], center = true);
    }
}

// Assemblage complet
module badge_with_rotating_ring() {
    // Badge rotatif au centre
    translate([0, 0, -ring_gap])
        badge();

    // Rail extérieur de l'anneau
    outer_ring();

    // Connecteurs entre le badge et l'anneau
    connectors();
}
// Appel du module principal
badge_with_rotating_ring();