module base(hauteur, diam, diam2, diam3, decoupe, hcube,halesage, dalesage, dvis, largeurcroix){ union (){ translate([0,0,hauteur]){ rotate([180,0,0]){ difference(){ // Mise-en-place du cylindre global translate([0,0,hauteur/2]) cylinder(h=hauteur, r=diam/2, center=true); // Cylindre légèrement conique pour le passage // du pommeau de douche // Placement vertical translate([0,0,22.175]) rotate([90,0,0]) cylinder(h=diam+1, r1=diam2/2, r2=diam3/2, center=true); // Placement d’un parallélépipède pour adoucir l’ouverture translate([0,0,hauteur-hcube/6]) cube([decoupe, diam+3, hcube], center=true); // Placement de l’alesage pour la tête de vis translate([0,0,22.175 - (diam2 + diam3) / 4 - halesage + 1 ]) cylinder(h=halesage+1,r=dalesage /2); // alesage pour la vis translate([0,0,-1]) cylinder(h=15, r=dvis/2); translate([0,0,-0.05]) difference () { union () { // cylindre à enlever cylinder(h=3, r=diam/2+1); // et cylindre un peu plus haut pour creuser // par en-sessous cylinder(h=8, r=31/2); } // On enleve de la matière pour en remettre… translate([0,0,-0.5]) cylinder (h=8.5, r=20.2/2); } // On va maintenant creuser un peu hautour de l’alésage // Mais un truc pas si simple… difference () { translate([0,0,-0.05]) cylinder(h=8.05, r=16.2 /2); translate([0,0,2.2]) cylinder(h=5.8, r=11.2/2); translate([-10,-largeurcroix/2,2.6]) cube([20, largeurcroix, 5.8], center=false); translate([-largeurcroix/2,-10,2.6]) cube([largeurcroix, 20, 5.8], center=false); } // difference } } } // Ajout de parois verticales // pour soutenir pendant la construction for (decalage=[-1,1]){ translate([0,0.34*diam*decalage,diam2/2]) cube([diam * 0.66, 1, diam2], center=true); } } } $fn=100; base (hauteur=31, diam=34, diam2 = 20.8, diam3 = 22.5, decoupe = 16.9, hcube = 10, halesage=4, dalesage=8, dvis = 4, largeurcroix = 0.7 );