initial commit
[clinton/prusa3.git] / bushing.scad
1 // PRUSA Mendel
2 // Bushings
3 // GNU GPL v3
4 // Josef Průša
5 // josefprusa@me.com
6 // prusadjs.cz
7 // http://www.reprap.org/wiki/Prusa_Mendel
8 // http://github.com/prusajr/PrusaMendel
9
10 use <configuration.scad>
11
12 /**
13 * @id bushing
14 * @name Bushing
15 * @category Printed
16 * @id bushing
17 */
18
19
20
21 module bushing(stiff, lenght=11){
22 difference(){
23 union(){
24 translate(v=[-7.5,-8,0])cube(size = [15,8,lenght]);
25 cylinder(h = lenght, r=7.5);
26 }
27 //cutout inside
28 //Opening
29 rotate(a=[0,0,45]) translate(v=[1,1,-1]) cube(size = [16,16,lenght+2]);
30 //Cutouts to make it more bendy
31 if(stiff){
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]);
34 }else{
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]);
37 }
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);
40 }
41 }
42
43
44 module standart_bushing(){
45
46 difference(){translate(v=[0,5,8])rotate(a=[90,0,0]){
47 bushing(false, 10);
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]);
52 }
53 translate(v=[-3,-1,-16])rotate(a=[45,0,0])cube(size = [6,5,16]);
54
55 mirror([ 0, 1, 0 ]) translate(v=[-3,-1,-16])rotate(a=[45,0,0])cube(size = [6,5,16]);}
56 }
57
58
59 // Includes small cutouts for better prints
60 module vertical_bushing(stiff, lenght){
61 difference(){
62 bushing(stiff, lenght);
63 translate(v=[-5,0,-1]) cube(size = [10,2.5,lenght+2]);
64 }
65 }
66
67
68 //vertical_bushing(true, 11);
69
70 module z_bushings(){
71 // STUFF FOR X-ENDS
72 difference(){
73 // Slider.
74 translate([0,6.5,30])
75 cube([23,17,60],center=true);
76 // Slider cutout.
77 translate([0,10,32.5])
78 cube([17,17,70],center=true);
79 }
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);
86 translate([0,9.5,32])
87 {
88 difference()
89 {
90 bushing(true,16);
91 translate([0,3,2])
92 rotate([45,0,0])
93 cube([16,30,16], center=true);
94 }
95 }
96 }
97 }
98
99
100 // Linear bushing options
101
102 lme8uu = true;
103
104 lm8uu_diameter=(lme8uu==true) ? 16 : 15;
105 lm8uu_length=24;
106 lm8uu_radius = lm8uu_diameter / 2;
107 block_height = 2*lm8uu_length+17;
108
109
110
111 //z_bushings();
112 //
113 //linear_holder_base(60);
114 //cut_corners(true, false, true, false);
115
116 module cut_corners(lf,lb,rf,rb){
117 difference(){
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);
121 mirror([ 0, 1, 0 ]){
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);
124 }
125 }
126 //lm8uu_bearing_holder();
127 }
128
129 module linear_holder_base(length){
130
131 difference(){
132 union(){
133 //main block
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);
136
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);
140
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);
143 }
144 //main axis
145 translate(v=[0,0,-2]) cylinder(h = length+4, r=(lm8uu_diameter+0.8)/2, $fn=50);
146 // not needed for zip tie
147 //main cut
148 translate(v=[10,0,length/2]) cube(size = [20,14,length+4], center = true);
149 //smooth entry cut
150 translate(v=[12,0,length/2]) rotate(a=[0,0,45]) cube(size = [20,20,length+4], center = true);
151 }
152 }
153
154
155 module y_linear_bearings(){
156 difference(){
157 union(){
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);
161 }
162
163
164 translate(v=[-14,0,0])polyhole(m3_diameter, 10);
165 translate(v=[14,0,0])polyhole(m3_diameter, 10);
166 //hack
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();
169 }
170 }
171
172 cut_corners(true, true, true, true);
173
174
175
176 }
177
178 lm8uu_holder_length = lm8uu_length+4.5;
179 lm8uu_holder_width= lm8uu_diameter+5;
180
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]){
183
184 difference(){
185 union(){
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);
188 }
189 translate(v=[0,0,12.5]) ziptie();
190 }
191
192
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);
195
196 }
197 }
198
199 module lm8uu_bearing_cut()
200 {
201 translate([-lm8uu_holder_width/2,-lm8uu_holder_length/2,-5])cube([lm8uu_holder_width,lm8uu_holder_length,20]);
202 }
203
204
205 module z_linear_bearings(){
206
207 translate(v=[0,9.5,0]) rotate(a=[0,0,90]){
208 //difference(){
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();
212 //}
213
214 //x-end adapter
215 //difference(){
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);
218 //}
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);
223 }
224 }
225
226 module ziptie(){
227 difference(){
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);
231 }}
232
233
234 z_linear_bearings();
235