/* uncomment and print all the parts below. Place in every whole for the rods at first a M3 nut to be able to tighten the belt. for this setup I used 6mm steelrod length=240mm and bronze bearings. tightening the belt is done on the carriage with zip-ties (very painfull work, but effective) I think you have to tinker a little bit how it works :P */ //carriage(); //3x //center(); // 1x //motor(); // 3x gesamt(); // 0x //middletop(); //3x //carriage(); //3x //endstop(); //3x //rod(); // 0x //printrod(); // 6x //bottom(); // 3x //bottom(true); //3x // for (i=[0,120,240]) rotate([0,0,i]) topcarry(); // 0x $fn=96; stangendiff=23; stangendm=6.2; winkel=45; m3_nut = 6.4; lagerdurchmesser=16; // 14.4 lagerinnen=3; // 10 lagerhoehe=11; stangenlaenge=250; endstoploecher=19; rodlaenge=240; module carriage(){ stangenoffset=23; // Lagerhülsen difference(){ cylinder(r=7,h=10); translate([0,0,-0.5]) cylinder(r=5.24,h=11); translate([stangenoffset/2,0,4.5]) cube([14,10,12],true); translate([stangenoffset/2,0,5]) rotate([0,270,0]) translate([0,0,stangenoffset/2]) cylinder(,r=1.5,h=18); } difference(){ translate([stangenoffset,0,0]) cylinder(r=7,h=10); translate([stangenoffset,0,-0.5]) cylinder(r=5,h=11); translate([stangenoffset/2,0,4.5]) cube([14,10,12],true); translate([stangenoffset/2,0,5]) rotate([0,90,0]) translate([0,0,stangenoffset/2]) cylinder(,r=1.5,h=18); } //Mittelteil difference(){ union(){ translate([0,5,0]) cube([stangenoffset,2,10]); translate([0,-7,0]) cube([stangenoffset,2,10]); } translate([stangenoffset/2+2,8,5]) rotate([90,0,0])cylinder(r=3.3,h=18); } translate([stangenoffset/2+1,-7,0]) cube([2,14,10]); //Rod end difference(){ translate([stangenoffset/2+2,0,5]) rotate([0,90,0]) translate([0,0,stangenoffset/2+3]) cylinder(r1=5,r2=3,h=5); translate([stangenoffset/2,0,5]) rotate([0,90,0]) translate([0,0,stangenoffset/2+3]) cylinder(,r=1.4,h=18); } difference(){ translate([stangenoffset/2-2,0,5]) rotate([0,270,0]) translate([0,0,stangenoffset/2+3]) cylinder(r1=5,r2=3,h=5); translate([stangenoffset/2,0,5]) rotate([0,270,0]) translate([0,0,stangenoffset/2]) cylinder(,r=1.4,h=18); } translate([0,7,0]) cube([stangenoffset,10,2]); } module topcarry(){ difference(){ translate([-30,0,0]) cube([60,160,3]); translate([0,0,-0.1]) rotate([0,0,-60]) cube([30,60,30]); translate([0,0,-0.1]) rotate([0,-90,60]) cube([30,60,30]); for (i=[1:12]) translate([-27.5,i*10+40,-0.1]) cube([55,7,6]); for (i=[1:3]) translate([0,i*10+12,-0.1]) cube([i*12,7,11],true); translate([0,0,-0.1]) cylinder(d=3,h=10); } translate([-30,158,0]) cube([60,2,5]); } module bottom(closed=false){ difference(){ union(){ difference(){ cylinder(d=71,h=22); translate([-36,0,-0.1]) cube([72,36,50]); } if(closed) hull(){ cylinder(d=71,h=2); translate([-11,0,0]) rotate([0,-90,30]) cube([2,100,22]); translate([11,0,0]) rotate([0,0,-30]) cube([22,100,2]); } translate([-11,0,0]) rotate([0,-90,30]) cube([22,100,22]); translate([11,0,0]) rotate([0,0,-30]) cube([22,100,22]); } translate([-10,-32,-0.1]) cube([20,20,45]); translate([0,5,5]) rotate([90,0,0]) cylinder(d=3,h=45); translate([0,5,15]) rotate([90,0,0]) cylinder(d=3,h=45); translate([-14,0,2]) rotate([0,-90,30]) cube([20.1,100,20.1]); translate([14,0,2]) rotate([0,0,-30]) cube([20.1,100,20.1]); translate([-14,0,2]) rotate([0,-90,30]) translate([10,20,-10]) cylinder(d=3, h=20); translate([-14,0,2]) rotate([0,-90,30]) translate([10,50,-10]) cylinder(d=3, h=20); translate([-14,0,2]) rotate([0,-90,30]) translate([10,80,-10]) cylinder(d=3, h=20); translate([14,0,2]) rotate([0,-90,-30]) translate([10,20,-5]) cylinder(d=3, h=10); translate([14,0,2]) rotate([0,-90,-30]) translate([10,50,-5]) cylinder(d=3, h=10); translate([14,0,2]) rotate([0,-90,-30]) translate([10,80,-5]) cylinder(d=3, h=10); }} module endstop(){ difference(){ union(){ translate([-stangendiff/2,0,0]) cylinder(d=8,h=10); translate([stangendiff/2,0,0]) cylinder(d=8,h=10); translate([-stangendiff/2,3,0]) cube([stangendiff,4,5]); } translate([-stangendiff/2,0,-0.1]) cylinder(d=6,h=11); translate([stangendiff/2,0,-0.1]) cylinder(d=6,h=11); translate([endstoploecher/2,2,2.5]) rotate([-90,0,0]) cylinder(d=3,h=8); translate([-endstoploecher/2,2,2.5]) rotate([-90,0,0]) cylinder(d=3,h=8); translate([stangendiff/2-0.5,-6,-0.1]) cube([1,8,11]); translate([-stangendiff/2-0.5,-6,-0.1]) cube([1,8,11]); }} module gesamt(){ for (i=[0,120,240]) rotate([0,0,i]) translate([0,175,0]) color([0.2,0.2,0.2]) motor(); for (i=[0,120,240]) rotate([0,0,i]) translate([0,0,3.5]) color([0.2,0.2,0.2]) topcarry(); translate([0,0,-175]){ color([0.2,0.2,0.2])center(); for (i=[0,120,240]) rotate([0,0,i]) { translate([stangendiff/2,stangendiff/3,0]) rotate([-winkel,0,0]) color([0.8,0.8,0.8]) cylinder(d=6,h=stangenlaenge); translate([-stangendiff/2,stangendiff/3,0]) rotate([-winkel,0,0]) color([0.8,0.8,0.8]) cylinder(d=6,h=stangenlaenge); translate([-10,202,-250]) color([0.8,0.8,0.8]) cube([20,20,446]); translate([-0,202-12,-250]) rotate([0,0,180]) color([0.2,0.2,0.2]) bottom(); translate([-0,202-12,-203.5]) rotate([180,0,0]) color([0.2,0.2,0.2]) bottom(true); }} for (i=[60,180,300]) rotate([0,0,i]) translate([0,119.0,9]) color([0.5,0.5,0.5]) middletop(); for (i=[60,180,300]) rotate([0,0,i]) translate([0,117.0,-413]) rotate([90,0,0]) color([0.8,0.8,0.8]) middlebottom(); for (i=[60,180,300]) rotate([0,0,i]) translate([0,117.0,-413+22.5]) rotate([90,0,0]) color([0.8,0.8,0.8]) middlebottom(); translate([0,0,-377]) color([0.3,0.3,0.4])cylinder(d=250,h=5); } module center(){ difference(){ union(){ for (i=[0,120,240]) { rotate([0,0,i]) union(){ translate([stangendiff/2,stangendiff/3,0]) rotate([-winkel,0,0]) cylinder(d=stangendm+4,h=15); translate([-stangendiff/2,stangendiff/3,0]) rotate([-winkel,0,0]) cylinder(d=stangendm+4,h=15); translate([0,stangendiff/3,0]) rotate([-winkel,0,0]) translate([0,0,5.5]) cube([25,lagerhoehe+3,19],true); hull(){for (i=[0,120,240]) { rotate([0,0,i]) union(){ translate([stangendiff/2,stangendiff/3,0]) rotate([-winkel,0,0]) cylinder(d=stangendm+4,h=0.1); translate([-stangendiff/2,stangendiff/3,0]) rotate([-winkel,0,0]) cylinder(d=stangendm+4,h=0.1); }}}}}} //Löcher für die Stangen for (i=[0,120,240]) rotate([0,0,i]) { translate([stangendiff/2,stangendiff/3,0]) rotate([-winkel,0,0]) translate([0,0,2.5]) cylinder(d=stangendm,h=45); translate([-stangendiff/2,stangendiff/3,0]) rotate([-winkel,0,0]) translate([0,0,2.5]) cylinder(d=stangendm,h=45); translate([0,stangendiff/3,0]) rotate([-winkel,0,0]) translate([0,5.5,9.5]) rotate([90,0,0]) cylinder(d=lagerdurchmesser,h=lagerhoehe); translate([0,stangendiff/3,0]) rotate([-winkel,0,0]) translate([0,13,9.5]) rotate([90,0,0]) cylinder(d=lagerinnen,h=26); translate([0,stangendiff/3,0]) rotate([-winkel,0,0]) translate([0,0,17]) rotate([90,0,0]) cube([lagerdurchmesser,lagerdurchmesser,lagerhoehe],true); translate([0,0,-8]) cube([30,30,10],true); translate([0,0,-8.5]) cylinder(d=9.5,h=20); // Löcher zum spannen des riemens /* translate([stangendiff/2,stangendiff/3,0]) rotate([-winkel,0,0]) translate([0,0,3]) cylinder(d=m3_nut,h=45,$fn=6); translate([-stangendiff/2,stangendiff/3,0]) rotate([-winkel,0,0]) translate([0,0,3]) cylinder(d=m3_nut,h=45,$fn=6); translate([stangendiff/2,stangendiff/3,0]) rotate([-winkel,0,0]) translate([0,0,-7]) cylinder(d=3,h=45); translate([-stangendiff/2,stangendiff/3,0]) rotate([-winkel,0,0]) translate([0,0,-7]) cylinder(d=3,h=45); */ }}} module middletop() { helper=232; difference(){ cube([helper,19,19],true); translate([helper/2-47.5,0,-10]) cylinder(d=3,h=25); translate([helper/2-12.5,0,-10]) cylinder(d=3,h=25); translate([-helper/2+47.5,0,-10]) cylinder(d=3,h=25); translate([-helper/2+12.5,0,-10]) cylinder(d=3,h=25); } } module middlebottom() { helperb=315; difference(){ cube([helperb,19,19],true); translate([helperb/2-20,0,-10]) cylinder(d=3,h=25); translate([helperb/2-50,0,-10]) cylinder(d=3,h=25); translate([helperb/2-80,0,-10]) cylinder(d=3,h=25); translate([-helperb/2+20,0,-10]) cylinder(d=3,h=25); translate([-helperb/2+50,0,-10]) cylinder(d=3,h=25); translate([-helperb/2+80,0,-10]) cylinder(d=3,h=25); } } module motor(){ difference(){ union(){ translate([stangendiff/2,stangendiff/3,0.1]) rotate([-winkel,0,0]) cylinder(d=stangendm+4,h=15); translate([-stangendiff/2,stangendiff/3,0.1]) rotate([-winkel,0,0]) cylinder(d=stangendm+4,h=15); translate([-31,-5,0.1]) rotate([-winkel,0,0]) cube([62,5,42]); translate([0,60,9]) rotate([0,0,-60]) translate([105,0,0]) cube([110,22,25],true); translate([0,60,9]) rotate([0,0,60]) translate([-105,0,0]) cube([110,22,25],true); translate([0,-20,0]) cube([110,10,7],true); translate([0,-2.4,-1.5]) cube([80,5,4],true); } translate([stangendiff/2,stangendiff/3,0]) rotate([-winkel,0,0]) translate([0,0,-2.5]) cylinder(d=stangendm,h=15); translate([-stangendiff/2,stangendiff/3,0]) rotate([-winkel,0,0]) translate([0,0,-2.5]) cylinder(d=stangendm,h=15); translate([-21,-3,0]) rotate([-winkel,0,0]) translate([21,3.6,21]) rotate([90,0,0]) cylinder(d=25,h=7); translate([-21,-3,0]) rotate([-winkel,0,0]) translate([21-31/2,5.1,21+31/2]) rotate([90,0,0]) cylinder(d=3,h=7); translate([-21,-3,0]) rotate([-winkel,0,0]) translate([21+31/2,5.1,21+31/2]) rotate([90,0,0]) cylinder(d=3,h=7); translate([-21,-3,0]) rotate([-winkel,0,0]) translate([21-31/2,5.1,21-31/2]) rotate([90,0,0]) cylinder(d=3,h=7); translate([-21,-3,0]) rotate([-winkel,0,0]) translate([21+31/2,5.1,21-31/2]) rotate([90,0,0]) cylinder(d=3,h=7); translate([-21,-3,0]) rotate([-winkel,0,0]) translate([21-31/2,5.1,21-31/2]) rotate([270,0,0]) cylinder(d=6,h=35); translate([-21,-3,0]) rotate([-winkel,0,0]) translate([21+31/2,5.1,21-31/2]) rotate([270,0,0]) cylinder(d=6,h=35); translate([stangendiff/2,stangendiff/3,0]) rotate([-winkel,0,0]) translate([0,0,-3]) cylinder(d=m3_nut,h=15,$fn=6); translate([-stangendiff/2,stangendiff/3,0]) rotate([-winkel,0,0]) translate([0,0,-3]) cylinder(d=m3_nut,h=15,$fn=6); translate([stangendiff/2,stangendiff/3,0]) rotate([-winkel,0,0]) translate([0,0,7]) cylinder(d=3,h=15); translate([-stangendiff/2,stangendiff/3,0]) rotate([-winkel,0,0]) translate([0,0,7]) cylinder(d=3,h=15); translate([0,60.1,9]) rotate([0,0,-60]) translate([130,2,0]) cube([86,20,20],true); translate([0,60.1,9]) rotate([0,0,60]) translate([-130,2,0]) cube([86,20,20],true); translate([-21,-5,0]) rotate([winkel,0,0]) cube([42,42,42]); for (i=[100,135]) translate([0,60.1,-4]) rotate([0,0,-60]) translate([i,2,0]) cylinder(d=3,h=30); for (i=[100,135]) translate([0,60.1,-4]) rotate([0,0,60]) translate([-i,2,0]) cylinder(d=3,h=30); } difference(){ translate([0,15,-3.5]) cylinder(d=71,h=25); translate([0,35,2]) rotate([270,0,0]) cylinder(d=3,h=20); translate([0,35,14]) rotate([270,0,0]) cylinder(d=3,h=20); translate([-21,-3,0]) rotate([-winkel,0,0]) translate([21-31/2,3.1,21+31/2]) rotate([270,0,0]) cylinder(d=6,h=35); translate([-21,-3,0]) rotate([-winkel,0,0]) translate([21+31/2,3.1,21+31/2]) rotate([270,0,0]) cylinder(d=6,h=35); translate([-10,7,-3.6]) cube([20,40,30]); translate([-21,-5,0]) rotate([winkel,0,0]) cube([42,42,42]); translate([-72.5/2,-45,-3.6]) cube([73,55,30]); translate([stangendiff/2,stangendiff/3,0]) rotate([-winkel,0,0]) translate([0,0,-2.5]) cylinder(d=stangendm,h=55); translate([-stangendiff/2,stangendiff/3,0]) rotate([-winkel,0,0]) translate([0,0,-2.5]) cylinder(d=stangendm,h=55); translate([-21,-3,0]) rotate([-winkel,0,0]) translate([21-31/2,3.1,21-31/2]) rotate([270,0,0]) cylinder(d=6,h=35); translate([-21,-3,0]) rotate([-winkel,0,0]) translate([21+31/2,3.1,21-31/2]) rotate([270,0,0]) cylinder(d=6,h=35); translate([-21,-3,0]) rotate([-winkel,0,0]) translate([21,5.1,21]) rotate([90,0,0]) cylinder(d=25,h=9); } } module carriage(){ stangenoffset=stangendiff; // Lagerhülsen difference(){ cylinder(r=7,h=10); translate([0,0,-0.5]) cylinder(r=5.24,h=11); translate([stangenoffset/2,0,4.5]) cube([14,10,12],true); translate([stangenoffset/2,0,5]) rotate([0,270,0]) translate([0,0,stangenoffset/2]) cylinder(,r=1.5,h=18); } difference(){ translate([stangenoffset,0,0]) cylinder(r=7,h=10); translate([stangenoffset,0,-0.5]) cylinder(r=5,h=11); translate([stangenoffset/2,0,4.5]) cube([14,10,12],true); translate([stangenoffset/2,0,5]) rotate([0,90,0]) translate([0,0,stangenoffset/2]) cylinder(,r=1.5,h=18); } //Mittelteil difference(){ union(){ translate([0,5,0]) cube([stangenoffset,2,10]); translate([0,-7,0]) cube([stangenoffset,2,10]); } translate([stangenoffset/2+2,8,5]) rotate([90,0,0])cylinder(r=3.3,h=18); } translate([stangenoffset/2+1,-7,0]) cube([2,14,10]); //Rod end difference(){ translate([stangenoffset/2+2,0,5]) rotate([0,90,0]) translate([0,0,stangenoffset/2+3]) cylinder(r1=5,r2=3,h=5); translate([stangenoffset/2,0,5]) rotate([0,90,0]) translate([0,0,stangenoffset/2+3]) cylinder(,r=1.4,h=18); } difference(){ translate([stangenoffset/2-2,0,5]) rotate([0,270,0]) translate([0,0,stangenoffset/2+3]) cylinder(r1=5,r2=3,h=5); translate([stangenoffset/2,0,5]) rotate([0,270,0]) translate([0,0,stangenoffset/2]) cylinder(,r=1.4,h=18); } translate([0,7,0]) cube([stangenoffset,10,2]); } module rod(){ difference(){ cylinder(d=9,h=rodlaenge); translate([0,0,-1]) cylinder(d=6,h=rodlaenge+2); }} module printrod(){ for(i=[0:rodlaenge/50]) { translate([0,0,i*50]) cylinder(d=3.5,h=0.2); for(i=[0,120,240]) rotate([0,0,i]) translate([0,6,0]) rod(); }}