summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--another.scad22
1 files changed, 18 insertions, 4 deletions
diff --git a/another.scad b/another.scad
index 342d70c..2ea5417 100644
--- a/another.scad
+++ b/another.scad
@@ -22,48 +22,49 @@ module the_extruder(
22 idler_d = 9.5, idler_h = 4, idler_id = 3,// idler dimensions: outer and inner diameters and height 22 idler_d = 9.5, idler_h = 4, idler_id = 3,// idler dimensions: outer and inner diameters and height
23 // spring properties 23 // spring properties
24 spring_d = 10, spring_lc = 9.6, // spring diameter and compressed length 24 spring_d = 10, spring_lc = 9.6, // spring diameter and compressed length
25 // filament path properties 25 // filament path properties
26 filament_d = 1.75, 26 filament_d = 1.75,
27 filament_path_d = 2, 27 filament_path_d = 2,
28 filament_guide_d = 4, // PTFE filament guide diameter 28 filament_guide_d = 4, // PTFE filament guide diameter
29 // knob properties 29 // knob properties
30 knob_h = 10, 30 knob_h = 10,
31 knob_bore_l = 4, 31 knob_bore_l = 4,
32 knob_indent_d = 4, 32 knob_indent_d = 4,
33 knob_indents = 12, 33 knob_indents = 12,
34 // spring tensioner 34 // spring tensioner
35 st_nut_d = 9, st_nut_h = 4, 35 st_nut_d = 9, st_nut_h = 4,
36 st_screw_d = 5, 36 st_screw_d = 5,
37 st_thickshell = 8*extrusion_width, st_thinshell = 4*extrusion_width, 37 st_thickshell = 8*extrusion_width, st_thinshell = 4*extrusion_width,
38 38
39 // screw it 39 // screw it
40 mount_screw_d = 3.1, mount_screw_l = 20, 40 mount_screw_d = 3.1, mount_screw_l = 20,
41 mount_screwhead_d=6, mount_screwhead_h=3, 41 mount_screwhead_d=6, mount_screwhead_h=3,
42 idler_screw_d = 3, 42 idler_screw_d = 3,
43 idler_screwhead_d=6, idler_screwhead_h=3, 43 idler_screwhead_d=6, idler_screwhead_h=3,
44 44
45 pf = pushfit_embeddest, 45 pf = pushfit_embeddest,
46 pf_shell = max(3*layer_height,3*extrusion_width),
46 47
47 // empty spaces 48 // empty spaces
48 idler_travel = 3, // how far should idler travel when pressed 49 idler_travel = 3, // how far should idler travel when pressed
49 idler_clearance=1, 50 idler_clearance=1,
50 pulley_clearance=2, 51 pulley_clearance=2,
51 lever_v_clearance=.7, // vertical clearance for the lever 52 lever_v_clearance=.7, // vertical clearance for the lever
52 spring_d_clearance=1, 53 spring_d_clearance=1,
53 protrusion_tolerance_h=.5, // horizontal tolerance for the motor protrusion 54 protrusion_tolerance_h=.5, // horizontal tolerance for the motor protrusion
54 protrusion_tolerance_v=.5, // vertical tolerance for the motor protrusion 55 protrusion_tolerance_v=.5, // vertical tolerance for the motor protrusion
55 mount_screw_d_tolerance=.4, 56 mount_screw_d_tolerance=.4,
56 idler_v_tolerance=.5, 57 idler_v_tolerance=.5,
57 knob_bore_d_tolerance=.6, 58 knob_bore_d_tolerance=.6,
58 st_nut_h_tolerance=.2, 59 st_nut_h_tolerance=.2,
59 st_nut_d_tolerance=.2,/* TODO: make it st_nut_w_tolerance */ 60 st_nut_d_tolerance=.2,/* TODO: make it st_nut_w_tolerance */
60 st_screw_d_tolerance=.3, 61 st_screw_d_tolerance=.3,
61 62
62 what="lever", // lever|body|knob|springpad|* 63 what="lever", // lever|body|knob|springpad|*
63 left=false, 64 left=false,
64 vitamins = true, 65 vitamins = true,
65 supports = false, bridges = true, 66 supports = false, bridges = true,
66 tensioner = true, 67 tensioner = true,
67 debug = false 68 debug = false
68) { 69) {
69 fnd = 2*PI; fnr = 2*fnd; 70 fnd = 2*PI; fnr = 2*fnd;
@@ -223,70 +224,83 @@ module the_extruder(
223 } 224 }
224 } 225 }
225 translate([0,-longwing,ls_z]) rotate([0,-90,0]) { 226 translate([0,-longwing,ls_z]) rotate([0,-90,0]) {
226 if(!tensioner) finger_indent(d=lever_thickness-1,r=15); else { 227 if(!tensioner) finger_indent(d=lever_thickness-1,r=15); else {
227 mirror([0,0,1]) { 228 mirror([0,0,1]) {
228 translate([0,0,st_thickshell]) 229 translate([0,0,st_thickshell])
229 hull() for(o=[0,spring_d]) translate([0,-o,0]) 230 hull() for(o=[0,spring_d]) translate([0,-o,0])
230 rotate([0,0,30]) 231 rotate([0,0,30])
231 cylinder(d=st_nut_d+st_nut_d_tolerance,h=st_nut_h+st_nut_h_tolerance,$fn=6); 232 cylinder(d=st_nut_d+st_nut_d_tolerance,h=st_nut_h+st_nut_h_tolerance,$fn=6);
232 translate([0,0,-1]) cylinder(d=st_screw_d+st_screw_d_tolerance,h=fsw+2,$fn=fnd*(st_screw_d+st_screw_d_tolerance)); 233 translate([0,0,-1]) cylinder(d=st_screw_d+st_screw_d_tolerance,h=fsw+2,$fn=fnd*(st_screw_d+st_screw_d_tolerance));
233 bigd = spring_d+spring_d_clearance; 234 bigd = spring_d+spring_d_clearance;
234 hf = (bigd-st_screw_d-st_screw_d_tolerance)/2; 235 hf = (bigd-st_screw_d-st_screw_d_tolerance)/2;
235 translate([0,0,st_thickshell+st_nut_h+st_nut_h_tolerance+st_thinshell-epsilon]) 236 translate([0,0,st_thickshell+st_nut_h+st_nut_h_tolerance+st_thinshell-epsilon])
236 cylinder(d1=st_screw_d+st_screw_d_tolerance,d2=bigd, 237 cylinder(d1=st_screw_d+st_screw_d_tolerance,d2=bigd,
237 h=hf+epsilon, $fn=fnd*bigd); 238 h=hf+epsilon, $fn=fnd*bigd);
238 translate([0,0,st_thickshell+st_nut_h+st_nut_h_tolerance+st_thinshell+hf-epsilon]) 239 translate([0,0,st_thickshell+st_nut_h+st_nut_h_tolerance+st_thinshell+hf-epsilon])
239 cylinder(d=bigd,h=fsw+1,$fn=fnd*bigd); 240 cylinder(d=bigd,h=fsw+1,$fn=fnd*bigd);
240 } 241 }
241 } 242 }
242 } 243 }
243 } // translate 244 } // translate
244 245
245 // pushfit bracket 246 // pushfit bracket
246 translate([0,0,filament_elevation]) 247 translate([0,0,filament_elevation])
247 rotate([0,0,45]) translate([pulley_d/2,0,0]) 248 rotate([0,0,45]) translate([(pulley_d-filament_path_d)/2,0,0])
248 rotate([-90,0,0]) 249 rotate([-90,0,0])
249 translate([0,0,mount_d/sqrt(2)/2+mount_screw_d-gearbox_d/2/*TODO:*/]) 250 translate([0,0,mount_d/sqrt(2)/2+mount_screw_d-gearbox_d/2/*TODO:*/]) {
250 cylinder(r=min(body_h-filament_elevation,filament_elevation)/sin(60)-epsilon,h=pf_h(pf)+gearbox_d/2/*TODO:*/,$fn=6); 251 pfb2a = pf_d(pf)+2*pf_shell; pfba = pfb2a/2;
252 pfbd = pfb2a/cos(30);
253 pfbs = pfb2a*tan(30);
254 pfbl = pf_h(pf)+gearbox_d/2/*TODO:*/;
255 cylinder(d=pfbd,h=pfbl,$fn=6);
256 translate([-pfbs/2,0,0]) {
257 hull() {
258 translate([0,-pfba,0]) cube(size=[pfbs,pfb2a,pfbl]);
259 cube(size=[pfbs,filament_elevation,pfbl-filament_elevation+pfba]);
260 mirror([0,1,0])
261 cube(size=[pfbs,body_h-filament_elevation,pfbl-body_h+filament_elevation+pfba]);
262 }
263 }
264 }
251 }//union (first child of difference) 265 }//union (first child of difference)
252 266
253 // protrusion 267 // protrusion
254 translate([0,0,-1]) 268 translate([0,0,-1])
255 cylinder(d=protrusion_d+protrusion_tolerance_h,h=protrusion_h+protrusion_tolerance_v+1,$fn=fnd*(protrusion_d+protrusion_tolerance_h)); 269 cylinder(d=protrusion_d+protrusion_tolerance_h,h=protrusion_h+protrusion_tolerance_v+1,$fn=fnd*(protrusion_d+protrusion_tolerance_h));
256 // mount screw holes 270 // mount screw holes
257 for(zr=[0:90:359]) rotate([0,0,zr]) translate([mount_d/2,0,0]) { 271 for(zr=[0:90:359]) rotate([0,0,zr]) translate([mount_d/2,0,0]) {
258 translate([0,0,mount_screw_l-mounthole_depth/2-(bridges?layer_height:-epsilon)]) 272 translate([0,0,mount_screw_l-mounthole_depth/2-(bridges?layer_height:-epsilon)])
259 mirror([0,0,1]) 273 mirror([0,0,1])
260 cylinder(d=mount_screw_d+mount_screw_d_tolerance, 274 cylinder(d=mount_screw_d+mount_screw_d_tolerance,
261 h=mount_screw_l-mounthole_depth/2+1, 275 h=mount_screw_l-mounthole_depth/2+1,
262 $fn=fnd*(mount_screw_d+mount_screw_d_tolerance)); 276 $fn=fnd*(mount_screw_d+mount_screw_d_tolerance));
263 translate([0,0,mount_screw_l-mounthole_depth/2]) 277 translate([0,0,mount_screw_l-mounthole_depth/2])
264 cylinder(d=mount_screwhead_d,h=body_h+1,$fn=fnd*mount_screwhead_d); 278 cylinder(d=mount_screwhead_d,h=body_h+1,$fn=fnd*mount_screwhead_d);
265 }//for 279 }//for
266 // pushfit 280 // pushfit
267 translate([0,0,filament_elevation]) 281 translate([0,0,filament_elevation])
268 rotate([0,0,45]) translate([pulley_d/2,0,0]) 282 rotate([0,0,45]) translate([(pulley_d-filament_path_d)/2,0,0])
269 rotate([-90,0,0]) 283 rotate([-90,0,0])
270 translate([0,0,mount_d/sqrt(2)/2+mount_screw_d+epsilon]) 284 translate([0,0,mount_d/sqrt(2)/2+mount_screw_d+epsilon])
271 rotate([0,0,180]) { 285 rotate([0,0,180]) {
272 pushfit(pf); 286 pushfit(pf);
273 cylinder(d=filament_guide_d,h=gearbox_d,center=true,$fn=fnd*filament_guide_d); 287 cylinder(d=filament_guide_d,h=gearbox_d,center=true,$fn=fnd*filament_guide_d);
274 translate([0,-filament_guide_d/2/sqrt(2),0]) 288 translate([0,-filament_guide_d/2/sqrt(2),0])
275 rotate([0,0,45]) 289 rotate([0,0,45])
276 cube(size=[filament_guide_d/2,filament_guide_d/2,gearbox_d],center=true); 290 cube(size=[filament_guide_d/2,filament_guide_d/2,gearbox_d],center=true);
277 }//rotate translate rotate translate rotate translate 291 }//rotate translate rotate translate rotate translate
278 // pulley 292 // pulley
279 cylinder(d=pulley_d+pulley_clearance,h=body_h+1,$fn=fnd*(pulley_d+pulley_clearance)); 293 cylinder(d=pulley_d+pulley_clearance,h=body_h+1,$fn=fnd*(pulley_d+pulley_clearance));
280 // leverspace 294 // leverspace
281 hull() for(x=[0,gearbox_d]) 295 hull() for(x=[0,gearbox_d])
282 rotate([0,0,45]) 296 rotate([0,0,45])
283 translate([x,0,ls_z-ls_h/2]) 297 translate([x,0,ls_z-ls_h/2])
284 cylinder(d=idler_d+idler_clearance,h=ls_h,$fn=fnd*(idler_d+idler_clearance)); 298 cylinder(d=idler_d+idler_clearance,h=ls_h,$fn=fnd*(idler_d+idler_clearance));
285 299
286 // idler clearance 300 // idler clearance
287 a=cos(45)*(pulley_d+idler_d)/2; 301 a=cos(45)*(pulley_d+idler_d)/2;
288 b=mount_d/2-a; 302 b=mount_d/2-a;
289 x=sqrt(pow(a,2)+pow(b,2)); 303 x=sqrt(pow(a,2)+pow(b,2));
290 translate([mount_d/2,0,ls_z]) 304 translate([mount_d/2,0,ls_z])
291 intersection() { 305 intersection() {
292 r = x+idler_d/2+idler_clearance; 306 r = x+idler_d/2+idler_clearance;