// allviews base1 base2 rouleau // testviews testbase1 testbase2 testrouleau include basew=100+10; basethick=5; holeoffset=5; polew=36; polethick=5; poleh=30; poler=5; rouleauw=20; rouleauh=35+15; tuber=50-1; module hole(x,y){ translate([x,y,-1]) cylinder(r=2,h=basethick+2,$fn=40); } module base1(){ off=0; //polew/2-polethick; translate([off,off,0]) difference(){ cube([polew+polethick*2,polew+polethick*2,poleh]); union(){ translate([polethick,polethick,basethick]) cube([polew,polew,poleh+1]); translate([polew/2+polethick,polew/2+polethick,-1]) cylinder(r=poler,h=polethick+2,$fn=40); translate([polew/2+polethick,-1,2*poleh/3]) rotate([-90,0,0]){ cylinder(r=2,h=polethick+2,$fn=40); } translate([polew/2+polethick,polew+polethick-1,2*poleh/3]) rotate([-90,0,0]){ cylinder(r=2,h=polethick+2,$fn=40); } } } } module base2(){ difference(){ cube([basew,basew,basethick]); union(){ hole(holeoffset,holeoffset); hole(basew-holeoffset,holeoffset); hole(basew-holeoffset,basew-holeoffset); hole(holeoffset,basew-holeoffset); translate([basew/2,basew/2,-1]) cylinder(r=poler,h=basethick+2,$fn=40); } } } module rouleau(){ difference(){ cube([basew,rouleauw+2*holeoffset,basethick]); union(){ hole(holeoffset,rouleauw+holeoffset); hole(basew-holeoffset,rouleauw+holeoffset); } } translate([0,0,basethick]) difference(){ cube([basew,rouleauw,rouleauh]); translate([basew/2,rouleauw+1,tuber]) rotate([90,0,0]) cylinder(r=tuber,h=rouleauw+2,$fn=80); } } module testbase1(){ intersection(){ cube([polew+4,polew+4,4]); off=basethick-2; translate([-off,-off,-basethick+0.5]) base1(); } } module testbase2(){ } module testrouleau(){ intersection(){ cube([basew,basew,1]); translate([0,basethick+rouleauh,0]) rotate([90,0,0]) rouleau(); } } module main_view(view){ if (view=="base1"){ base1(); }else if (view == "base2"){ base2(); }else if (view=="rouleau"){ rotate([90,0,0]) rouleau(); }else if (view=="testbase1"){ testbase1(); }else if (view=="testbase2"){ testbase2(); }else if (view=="testrouleau"){ testrouleau(); } }