// allviews tout base dessus logo base_test dessus_test trou_milieu_test include multiplier = 1.5; largeurRect = 47 * multiplier; hauteurRect = 16 * multiplier; curveRect = 8 * multiplier; rayonBalle = 5 * multiplier; rayonTrouBalle = 3 * multiplier; epais = 2; largeurBarre = 4 * multiplier; hauteurBarre = 9 * multiplier; trouMilieu = 11.5 * multiplier; distanceDroiteVersTrou = 17.75 * multiplier; distanceDroiteVers2Barres = 14 * multiplier; distanceDroiteVers3Barres = 33 * multiplier; rayonSupport = 40 * multiplier; rayonSupportTrou = 35 * multiplier; epaisTrou = 1; largeurHolder = (rayonSupport-rayonSupportTrou)/3.5; largeurTrou = (rayonSupport-rayonSupportTrou)/3; largeurContour = rayonSupport-rayonSupportTrou; hauteurHolder = 2; //Base module baseUncropped(){ translate([0,-hauteurRect+curveRect,0]) difference(){ union(){ difference() { cube([largeurRect,hauteurRect,epais]); union() { translate([largeurRect-curveRect,hauteurRect-curveRect,-1]) cube([curveRect+1,curveRect+1,epais+2]); translate([-1,hauteurRect-curveRect,-1]) cube([curveRect+1,curveRect+1,epais+2]); } } translate([largeurRect-curveRect,hauteurRect-curveRect,0]) cylinder(h=epais,r=curveRect,$fn = 40); translate([curveRect,hauteurRect-curveRect,0]) cylinder(h=epais,r=curveRect,$fn = 40); } translate([-1,-1,-1]) cube([largeurRect+2,hauteurRect-curveRect+1,epais+2]); } } //Barre Balles module bars(){ scale([1, -1, 1]) cube([largeurBarre,hauteurBarre,epais]); translate([largeurBarre/2,-hauteurBarre-rayonBalle+multiplier,0]) balle(); translate([distanceDroiteVers2Barres,0,0]) scale([1, -1, 1]) cube([largeurBarre,hauteurBarre,epais]); translate([largeurBarre/2+distanceDroiteVers2Barres,-hauteurBarre-rayonBalle+multiplier,0]) balle(); translate([distanceDroiteVers3Barres-largeurBarre,0,0]) scale([1, -1, 1]) cube([largeurBarre,hauteurBarre,epais]); translate([largeurBarre/2+distanceDroiteVers3Barres-largeurBarre,-hauteurBarre-rayonBalle+multiplier,0]) balle(); translate([largeurRect,0,0]) scale([-1, -1, 1]) cube([largeurBarre,hauteurBarre,epais]); translate([largeurRect-largeurBarre/2,-hauteurBarre-rayonBalle+multiplier,0]) balle(); } module balle(){ difference(){ cylinder(r=rayonBalle,h=epais,$fn=40); translate([0,0,-1]) cylinder(r=rayonTrouBalle,h=epais+2,$fn=40); } } module baseCropped(){ difference(){ baseUncropped(); union(){ difference(){ translate([largeurBarre-multiplier*0.80,-largeurBarre,-1]) scale([(largeurRect-(largeurBarre)*1.6)/largeurRect,1,2]) baseUncropped(); cube([distanceDroiteVers3Barres,hauteurRect*2,epais+2]); } difference(){ translate([largeurBarre-multiplier*0.85,-largeurBarre,-1]) scale([(largeurRect-(largeurBarre-1)*1.6)/largeurRect,1,2]) baseUncropped(); translate([largeurRect,0,0]) scale([-1,1,1]) cube([distanceDroiteVers3Barres,hauteurRect*2,epais+2]); } translate([distanceDroiteVersTrou,-largeurBarre,-1]) scale([(trouMilieu/largeurRect),1,2]) baseUncropped(); } } } module surroundingCircle() { translate([largeurRect / 2,-hauteurBarre/2,0]) difference(){ cylinder(r=rayonSupport,h=epais,$fn=40); translate([0,0,-1]) cylinder(r=rayonSupportTrou,h=epais+2,$fn=40); } } module underCircle() { translate([largeurRect / 2,-hauteurBarre/2,0]) difference(){ union(){ cylinder(r=rayonSupport,h=epais,$fn=40); translate([rayonSupportTrou+largeurContour/2,0,0]) cylinder(r=largeurHolder, h=hauteurHolder+epais/2,$fn=40); translate([-rayonSupportTrou-largeurContour/2,0,0]) cylinder(r=largeurHolder, h=hauteurHolder+epais/2,$fn=40); translate([0,rayonSupportTrou+largeurContour/2,0]) cylinder(r=largeurHolder, h=hauteurHolder+epais/2,$fn=40); translate([0,-rayonSupportTrou-largeurContour/2,0]) cylinder(r=largeurHolder, h=hauteurHolder+epais/2,$fn=40); translate([largeurRect/2 - largeurBarre/2,0,0]) cylinder(r=largeurHolder/2, h=hauteurHolder+epais/2,$fn=40); translate([-largeurRect/2 + largeurBarre/2,0,0]) cylinder(r=largeurHolder/2, h=hauteurHolder+epais/2,$fn=40); translate([0,hauteurRect-curveRect+largeurBarre/2,0]) cylinder(r=largeurHolder/2, h=hauteurHolder+epais/2,$fn=40); } union(){ translate([largeurTrou*2.1,-rayonSupportTrou-largeurContour/2,-epais]) cylinder(r=largeurTrou/2, h=hauteurHolder+epais+1,$fn=40); translate([-largeurTrou*2.1,-rayonSupportTrou-largeurContour/2,-epais]) cylinder(r=largeurTrou/2, h=hauteurHolder+epais+1,$fn=40); } } } module holes() { translate([largeurRect / 2,-hauteurBarre/2,0]) union(){ translate([rayonSupportTrou+largeurContour/2,0,0]) cylinder(r=largeurTrou, h=hauteurHolder+epais,$fn=40); translate([-rayonSupportTrou-largeurContour/2,0,0]) cylinder(r=largeurTrou, h=hauteurHolder+epais,$fn=40); translate([0,rayonSupportTrou+largeurContour/2,0]) cylinder(r=largeurTrou, h=hauteurHolder+epais,$fn=40); translate([0,-rayonSupportTrou-largeurContour/2,0]) cylinder(r=largeurTrou, h=hauteurHolder+epais,$fn=40); translate([largeurTrou*2.1,-rayonSupportTrou-largeurContour/2,-epais]) cylinder(r=largeurTrou/2, h=hauteurHolder+epais+1,$fn=40); translate([-largeurTrou*2.1,-rayonSupportTrou-largeurContour/2,-epais]) cylinder(r=largeurTrou/2, h=hauteurHolder+epais+1,$fn=40); translate([largeurRect/2 - largeurBarre/2,0,0]) cylinder(r=largeurTrou/2, h=hauteurHolder+epais,$fn=40); translate([-largeurRect/2 + largeurBarre/2,0,0]) cylinder(r=largeurTrou/2, h=hauteurHolder+epais,$fn=40); translate([0,hauteurRect-curveRect+largeurBarre/2,0]) cylinder(r=largeurTrou/2, h=hauteurHolder+epais,$fn=40); } } module ancientout(){ difference(){ union(){ difference(){ union(){ baseCropped(); bars(); surroundingCircle(); } translate([0,0,epais-1]) holes(); } translate([-100,100,0]) underCircle(); } union(){} } } module base(){ underCircle(); } module dessus(){ difference(){ union(){ baseCropped(); bars(); surroundingCircle(); } translate([0,0,epais-1]) holes(); } } module logo(){ union(){ baseCropped(); bars(); } } module tout(){ base(); translate([-65,65,0]) dessus(); } module base_test(){ intersection(){ cube([20,15,7]); translate([-25,70,0]) base(); } } module dessus_test(){ intersection(){ cube([20,15,3]); translate([-25,70,0]) dessus(); } } module trou_milieu_test(){ intersection(){ cube([20,15,3]); translate([5,15,0]) dessus(); } } module main_view(view){ if (view=="tout"){ tout(); }else if (view=="base"){ base(); }else if (view=="dessus"){ dessus(); }else if (view=="logo"){ logo(); }else if (view=="base_test"){ base_test(); }else if (view=="dessus_test"){ dessus_test(); }else if (view=="trou_milieu_test"){ trou_milieu_test(); } }