// ----------------------------------------------------------------------------- // // Macro : mBague // Creation d'une bague. Les angles sont arrondis. // La bague est centree a l'origine (<0, 0, 0>) dans le plan zOy. // Largeur suivant x. // // // Version : // 1.0 - Aout 2001. // // Parametres : // - DExt...........: Diametre exterieur de la bague. // - DInt...........: Diametre interieur de la bague. // - largeur........: Largeur de la bague. // - rayonArrondi...: Rayon de l'arrondi des angles. // // Auteur : // louis bellotto - e-mail:louisbel@free.fr // // ----------------------------------------------------------------------------- #macro make_Bague (DExt, DInt, largeur, rayonArrondi) // -- variables -------------------------------------------------- #local rayonExt = DExt/2; #local rayonInt = DInt/2; // -- exterieur -------------------------------------------------- #local cylindreExt = cylinder { <-largeur/2.00, 0.00, 0.00>, <+largeur/2.00, 0.00, 0.00>, rayonExt } #local coneExtNeg = cone { <-(rayonExt+largeur/2), 0.00, 0.00>, 0.00, <+(largeur/2), 0.00, 0.00>, rayonExt+largeur } #local coneExtPos = cone { <+(rayonExt+largeur/2), 0.00, 0.00>, 0.00, <-(largeur/2), 0.00, 0.00>, rayonExt+largeur } #local toreExt = torus { rayonExt-rayonArrondi, rayonArrondi rotate 90*z } // -- interieur -------------------------------------------------- #local cylindreInt = cylinder { <-largeur/1.50, 0.00, 0.00>, <+largeur/1.50, 0.00, 0.00>, rayonInt } #local coneIntPos = cone { <(largeur/2-rayonInt), 0.00, 0.00>, 0.00, <(largeur/2)+(rayonExt-rayonInt), 0.00, 0.00>, rayonExt } #local coneIntNeg = cone { <(-largeur/2)+rayonInt, 0.00, 0.00>, 0.00, <-(largeur/2+(rayonExt-rayonInt)), 0.00, 0.00>, rayonExt } #local toreInt = torus { rayonInt+rayonArrondi, rayonArrondi rotate 90*z } // -- bague brutte ----------------------------------------------- #local bague_stage1 = difference { object { cylindreExt } object { cylindreInt } } // -- deux chanfreins sur la bague exterieure -------------------- #local bague_stage2 = difference { object { bague_stage1 } object { coneExtPos translate -rayonArrondi*x inverse } object { coneExtNeg translate +rayonArrondi*x inverse } } // -- arrondis des angles sur la bague exterieure ----------------- #local bague_stage3= merge { object { bague_stage2 } object { toreExt translate ((largeur/2)-rayonArrondi)*x } object { toreExt translate -((largeur/2)-rayonArrondi)*x } } // -- deux chanfreins sur la bague interieure -------------------- #local bague_stage4 = difference { object { bague_stage3 } object { coneIntPos translate -rayonArrondi*x } object { coneIntNeg translate +rayonArrondi*x } } // -- arrondis des angles sur la bague interieure ----------------- merge { object { bague_stage4 } object { toreInt translate ((largeur/2)-rayonArrondi)*x } object { toreInt translate -((largeur/2)-rayonArrondi)*x } } #end // --- eof ---------------------------------------------------------------------