7 // http://www.reprap.org/wiki/Prusa_Mendel
8 // http://github.com/prusajr/PrusaMendel
10 use <configuration.scad>
21 module bushing(stiff, lenght=11){
24 translate(v=[-7.5,-8,0])cube(size = [15,8,lenght]);
25 cylinder(h = lenght, r=7.5);
29 rotate(a=[0,0,45]) translate(v=[1,1,-1]) cube(size = [16,16,lenght+2]);
30 //Cutouts to make it more bendy
32 translate(v=[-4.8,-6,-1]) cube(size = [0.8,6,lenght+2]);
33 translate(v=[4,-6,-1]) cube(size = [0.8,6,lenght+2]);
35 translate(v=[-4.8,-8,-1]) cube(size = [0.8,8,lenght+2]);
36 translate(v=[4,-8,-1]) cube(size = [0.8,8,lenght+2]);
38 translate(v=[0,5,(lenght+2)/2]) cube(size = [7,8,lenght+2], center=true);
39 translate(v=[0,0,-1]) cylinder(h = lenght+2, r=5);
44 module standart_bushing(){
46 difference(){translate(v=[0,5,8])rotate(a=[90,0,0]){
48 translate(v=[-7,-13,0])cube(size = [14,5,10]);
49 translate(v=[-2,-13,-3])cube(size = [4,5,16]);
50 translate(v=[-2,-12,-3])cube(size = [4,7.5,2]);
51 translate(v=[-2,-12,11])cube(size = [4,7.5,2]);
53 translate(v=[-3,-1,-16])rotate(a=[45,0,0])cube(size = [6,5,16]);
55 mirror([ 0, 1, 0 ]) translate(v=[-3,-1,-16])rotate(a=[45,0,0])cube(size = [6,5,16]);}
59 // Includes small cutouts for better prints
60 module vertical_bushing(stiff, lenght){
62 bushing(stiff, lenght);
63 translate(v=[-5,0,-1]) cube(size = [10,2.5,lenght+2]);
68 //vertical_bushing(true, 11);
75 cube([23,17,60],center=true);
77 translate([0,10,32.5])
78 cube([17,17,70],center=true);
80 union(){translate([0,9.5,0])vertical_bushing(true,13);
81 //translate([0,4,0.5])cube(size = [8,2,1], center = true);
82 //translate([0,4,12.5])cube(size = [8,2,1], center = true);
83 translate([0,9.5,48])vertical_bushing(true,13);
84 //translate([0,4,48+0.5])cube(size = [8,2,1], center = true);
85 //translate([0,4,48+12.5])cube(size = [8,2,1], center = true);
93 cube([16,30,16], center=true);
100 // Linear bushing options
104 lm8uu_diameter=(lme8uu==true) ? 16 : 15;
106 lm8uu_radius = lm8uu_diameter / 2;
107 block_height = 2*lm8uu_length+17;
113 //linear_holder_base(60);
114 //cut_corners(true, false, true, false);
116 module cut_corners(lf,lb,rf,rb){
118 lm8uu_bearing_holder();
119 if(lf) translate(v=[(10)-3,(-28.5/2)+3,0]) rotate(a=[0,0,45]) rotate(a=[35,0,0]) translate(v=[0,-5,0]) cube(size = [20,10,20], center = true);
120 if(lb)translate(v=[(-10)+3,(-28.5/2)+3,0]) rotate(a=[0,0,-45]) rotate(a=[35,0,0]) translate(v=[0,-5,0]) cube(size = [20,10,20], center = true);
122 if(rf)translate(v=[(10)-3,(-28.5/2)+3,0]) rotate(a=[0,0,45]) rotate(a=[35,0,0]) translate(v=[0,-5,0]) cube(size = [20,10,20], center = true);
123 if(rb)translate(v=[(-10)+3,(-28.5/2)+3,0]) rotate(a=[0,0,-45]) rotate(a=[35,0,0]) translate(v=[0,-5,0]) cube(size = [20,10,20], center = true);
126 //lm8uu_bearing_holder();
129 module linear_holder_base(length){
134 translate(v=[-(lm8uu_radius+2.5)/2,0,block_height/2]) cube(size = [lm8uu_radius+2.5,lm8uu_diameter+5,block_height], center = true);
135 //translate(v=[-5,0,length/2]) cube(size = [10,20,length], center = true);
137 //holder for main block in x-end
138 // leaving it out now
139 //translate(v=[0,0,0]) cylinder(h = length, r=10, $fn=60);
141 //translate(v=[-5,0,15.8/2]) cube(size = [12,23,15.8], center = true);
142 translate(v=[0,0,0]) cylinder(h = block_height, r=lm8uu_radius+2.5, $fn=60);
145 translate(v=[0,0,-2]) cylinder(h = length+4, r=(lm8uu_diameter+0.8)/2, $fn=50);
146 // not needed for zip tie
148 translate(v=[10,0,length/2]) cube(size = [20,14,length+4], center = true);
150 translate(v=[12,0,length/2]) rotate(a=[0,0,45]) cube(size = [20,20,length+4], center = true);
155 module y_linear_bearings(){
158 translate(v=[0,0,1.5]) cube(size = [26,14,3], center = true);
159 translate(v=[-13,0,0])rotate(a=[0,0,30])cylinder(h = 3, r=7, $fn=6);
160 translate(v=[13,0,0])rotate(a=[0,0,30])cylinder(h = 3, r=7, $fn=6);
164 translate(v=[-14,0,0])polyhole(m3_diameter, 10);
165 translate(v=[14,0,0])polyhole(m3_diameter, 10);
167 translate(v=[0,14.25,4.5]) rotate(a=[90,0,0]) translate(v=[0,9.5,0]) rotate(a=[0,0,90]){
168 translate(v=[0,0,lm8uu_length/2+0.5]) ziptie();
172 cut_corners(true, true, true, true);
178 lm8uu_holder_length = lm8uu_length+4.5;
179 lm8uu_holder_width= lm8uu_diameter+5;
181 module lm8uu_bearing_holder(){
182 translate(v=[0,14.25,4.5])rotate(a=[90,0,0])translate(v=[0,9.5,0]) rotate(a=[0,0,90]){
186 linear_holder_base(lm8uu_length+4.5);
187 translate(v=[-10-2,0,lm8uu_holder_length/2]) cube(size = [4,20,lm8uu_holder_length], center = true);
189 translate(v=[0,0,12.5]) ziptie();
193 translate(v=[-(10-5.5)/2-5.5,0,0.75]) cube(size = [10-5.5,20,1.5], center = true);
194 translate(v=[-(10-5.5)/2-5.5,0,lm8uu_length+3.75]) cube(size = [10-5.5,20,1.5], center = true);
199 module lm8uu_bearing_cut()
201 translate([-lm8uu_holder_width/2,-lm8uu_holder_length/2,-5])cube([lm8uu_holder_width,lm8uu_holder_length,20]);
205 module z_linear_bearings(){
207 translate(v=[0,9.5,0]) rotate(a=[0,0,90]){
209 linear_holder_base(65);
210 // translate(v=[0,0,14.5+2]) ziptie();
211 // translate(v=[0,0,block_height-(12+2)-5]) ziptie();
216 // translate(v=[-6,0,15.8/2]) cube(size = [10,23,15.8], center = true);
217 // translate(v=[0,0,-2]) cylinder(h = 20, r=7.9, $fn=50);
219 translate(v=[-(10-5.5)/2-lm8uu_radius+2,0,0+1]) cube(size = [10-5.5,20,2], center = true);
220 //translate(v=[-(10-5.5)/2-lm8uu_radius+2,0,lm8uu_length+4.0]) cube(size = [10-5.5,20,2], center = true);
221 //translate(v=[-(10-5.5)/2-lm8uu_radius+2,0,64-lm8uu_length-3]) cube(size = [10-5.5,20,2], center = true);
222 translate(v=[-(10-5.5)/2-lm8uu_radius+2,0,64]) cube(size = [10-5.5,20,2], center = true);
228 translate(v=[0,0,0]) cylinder(h = 3.9, r=lm8uu_diameter);
229 translate(v=[0,0,0]) cylinder(h = 5, r=lm8uu_diameter-3, $fn=50);
230 translate(v=[0,0,3]) cylinder(h = 1, r1=lm8uu_diameter-3, r2=lm8uu_diameter, $fn=50);