// Enrouleur pour bobinage // allviews base glisse-clou glisse-vis // allviews main-clou main-vis main-rondelle bloque-clou bloque-vis // allviews extension clou2 // viewopts extension brim5mm // viewopts bloque-vis brim5mm // viewopts main-vis brim5mm // viewopts main-rondelle brim5mm // viewopts test-main-rondelle brim5mm // testviews test assemblage moteur clou test-main-rondelle include include <../cadlib.h> base_width=30; base_len=80; base_glisse=20; base_thick1=3; base_height=26; module base(){ difference(){ union(){ translate([0,-7.5,0]) cube([4,13,base_height]); translate([0,base_width+7.5-13,0]) cube([4,13,base_height]); } union(){ wh=32; off=-1; translate([5,off,18]) rotate([0,-90,0]) cylinder(r=2,h=6,$fn=40); translate([5,off+wh,18]) rotate([0,-90,0]) cylinder(r=2,h=6,$fn=40); } } cube([base_len,base_width,base_thick1]); w=4; h=4; difference(){ union(){ w0=base_width-2*4; translate([base_len,4,base_thick1]) rotate([0,-90,0]) linear_extrude(base_len) polygon([[0,0],[h,3],[h,w0-3],[0,w0]]); } w1=base_width-2*6-2; translate([base_len+1,7,base_thick1]) rotate([0,-90,0]) linear_extrude(base_len+2) polygon([[0,0],[h,3],[h,w1-3],[0,w1]]); } w2=10; w3=15/2; w1=base_width+15; translate([4,0,0]) difference(){ translate([0,-w3,0]) cube([w2,w1,base_thick1]); translate([0,0,-1]) union(){ translate([w2/2,-w3/2,0]) cylinder(r=2,h=5,$fn=40); translate([w2/2,base_width+w3/2,0]) cylinder(r=2,h=5,$fn=40); } } translate([base_len-w2,0,0]) difference(){ translate([0,-w3,0]) cube([w2,w1,base_thick1]); translate([0,0,-1]) union(){ translate([w2/2,-w3/2,0]) cylinder(r=2,h=5,$fn=40); translate([w2/2,base_width+w3/2,0]) cylinder(r=2,h=5,$fn=40); } } } // Embout du moteur module embout(len,offset){ difference(){ ray=5/2; rotate([0,-90,0]) cylinder(r=ray+offset,h=len,$fn=80); translate([-len,-5,ray+offset-(2*ray-4.5)]) cube([len,10,10]); } } // S'installe au bout du moteur pas à pas pour tenir le clou module main_clou(){ difference(){ cube([10,10,10]); union(){ translate([9,5,5]) embout(10,0.2); translate([5,5,-1]) cylinder(r=1.6,h=12,$fn=40); } } translate([10,0,0]) difference(){ cube([5,10,5]); translate([1,10/2,10/2]) union(){ rotate([0,90,0]) cylinder(r=4,h=2,$fn=80); rotate([0,90,0]) cylinder(r=2,h=10,$fn=80); } } } module bloque_clou(){ difference(){ cube([15,10,2]); translate([5,5,-1]) cylinder(r=1.8,h=4,$fn=40); } translate([10,0,2]) difference(){ cube([5,10,5]); translate([1,10/2,10/2]) union(){ rotate([0,90,0]) cylinder(r=4,h=2,$fn=80); rotate([0,90,0]) cylinder(r=2,h=10,$fn=80); } } } rayvis=3.3; // Même chose pour tenir une vis module main_vis(){ difference(){ cube([10,10,10]); union(){ translate([10,5,5]) embout(10,0.2); translate([5,5,-1]) cylinder(r=1.6,h=12,$fn=40); } } translate([10,0,0]) difference(){ cube([10,10,5]); translate([0,10/2,10/2]) union(){ //rotate([0,90,0]) cylinder(r=4,h=2,$fn=80); rotate([0,90,0]) cylinder(r=rayvis,h=11,$fn=80); } } } // Même chose pour tenir une vis avec une rondelle et des tareaux module main_rondelle(baseh){ ray=16; // Rayon de la rondelle h=ray+6+2; w=14; hh=15; translate([0,0,h-hh]) difference(){ cube([22,10,hh]); union(){ translate([22,5,10]) rotate([180,0,0]) embout(23,0.4); // Trou pour boulon pour bloquer sur l'arbre du moteur translate([5,5,-1]) cylinder(r=1.8,h=9,$fn=40); // Encoche pour insérer l'écrou translate([-1,2,2.5]) cube([13,6,4]); } } translate([22,-(w-10)/2,0]) difference(){ l=12; union(){ translate([2,0,0]) cube([l-4,w,h]); translate([0,0,10]) cube([2,w,h-10]); translate([l-2,0,10]) cube([6,w,h-10]); } union(){ tetew=8+0.5; rthick=1.65+0.5; // Encoche pour la tête de la vis translate([2,w/2,2+ray]) rotate([0,90,0])cylinder(r=tetew/2,h=3,$fn=40); translate([2,w/2-tetew/2,2+ray]) cube([3,tetew,ray]); // Encoche pour la rondelle translate([2+2.5,-1,baseh]) cube([rthick,w+2,h]); // Encoche pour le boulon nutw=8.5+0.3; nutl=4; translate([l/2,w/2-nutw/2,2+ray]) cube([nutl,nutw,h]); translate([l/2,w/2,2+ray]) rotate([0,90,0])nut(nutw,nutl,true); // Trou pour la vis visr=2+0.2; translate([l/2+nutl-1,w/2,2+ray]) rotate([0,90,0])cylinder(r=visr,h=8,$fn=40); translate([l/2+nutl-1,w/2-visr,2+ray]) cube([8,2*visr,h]); } } } // Permet de connecter 2 vis ensemble. Pendant qu'une est sur l'enrouleur // l'autre, déjà enroulée, peut suivre. module extension(){ difference(){ cube([10,10,10]); union(){ translate([5,5,-1]) cylinder(r=2.2,h=17,$fn=40); translate([5,11,5]) rotate([90,0,0]) cylinder(r=1.8,h=12,$fn=40); } } } module bloque_vis(){ difference(){ cube([20,10,2]); translate([5,5,-1]) cylinder(r=1.8,h=4,$fn=40); } translate([10,0,2]) difference(){ cube([10,10,5]); translate([-1,10/2,10/2]) union(){ //rotate([0,90,0]) cylinder(r=4,h=2,$fn=80); rotate([0,90,0]) cylinder(r=rayvis,h=12,$fn=80); } } } module glisse(rayhole){ w1=base_width-2*6-2.6; w2=w1-2*3; h=4; rotate([0,-90,0]) linear_extrude(50) polygon([[0,0],[h,3],[h,w1-3],[0,w1]]); difference(){ x=-4; union(){ translate([x,3,h]) cube([4,w2,34]); translate([0,4,34+h]) rotate([0,90,180]) triangle_rectangle(13,9,4); } translate([x+5,w1/2,h+30]) union(){ translate([-6,-2.5,-4]) rotate([33,0,0]) cube([6,rayhole*2,20]); translate([0,0,-3]) rotate([0,-90,0]) cylinder(r=rayhole,h=6,$fn=40); translate([0,0,-2]) rotate([0,-90,0]) cylinder(r=rayhole,h=6,$fn=40); } } } module moteur() { difference(){ union(){ cube([42,42,42]); translate([0,21,21]) rotate([0,-90,0]) cylinder(r=4,h=10,$fn=40); } union(){ translate([-1,5,5]) rotate([0,90,0]) cylinder(r=2,h=10,$fn=40); translate([-1,5+32,5]) rotate([0,90,0]) cylinder(r=2,h=10,$fn=40); } } } // Permet de tenir 2 clous ensemble pour faire une bobine rclou=2; module clou2(){ difference(){ cube([10,20,5]); union(){ translate([5,5,-1]) cylinder(r=rclou,h=12,$fn=40); translate([5,15,-1]) cylinder(r=rclou,h=12,$fn=40); } } } module clou(){ rotate([0,-90,0]) cylinder(r=2,h=80,$fn=40); } module main_view(view){ if (view=="base"){ rotate([0,0,90]) base(); }else if (view=="main-clou"){ main_clou(); }else if (view=="main-vis"){ main_vis(); }else if (view=="main-rondelle"){ translate([0,0,2+16+6]) rotate([180,0,0]) main_rondelle(2); }else if (view=="test-main-rondelle"){ intersection(){ x=9; // ou 24 translate([0,-12,0]) cube([x,14,14]); translate([0,0,2+16+6]) rotate([180,0,0]) main_rondelle(2+16-6); } }else if (view=="extension"){ extension(); }else if (view=="bloque-clou"){ bloque_clou(); }else if (view=="bloque-vis"){ bloque_vis(); }else if (view=="glisse-clou"){ glisse(2.5); }else if (view=="glisse-vis"){ glisse(2.5); }else if (view=="test"){ intersection(){ translate([-10,-2,0]) cube([10,base_width,4]); glisse(); } translate([20,0,0]) intersection(){ translate([10,-2,0]) cube([10,base_width+4,base_thick1+6]); base(); } }else if (view=="moteur"){ moteur(); }else if (view=="clou"){ clou(); }else if (view=="clou2"){ clou2(); }else if (view=="assemblage"){ translate([-1,42-6,5+8]) rotate([0,0,180]) moteur(); base(); translate([base_len+20,7,3]) glisse(); translate([100,15,13+42/2]) clou(); } }