-rw-r--r-- | another.scad | 29 |
1 files changed, 16 insertions, 13 deletions
diff --git a/another.scad b/another.scad index 297c1fc..ed18874 100644 --- a/another.scad +++ b/another.scad | |||
@@ -24,32 +24,33 @@ module the_extruder( | |||
24 | idler_d = 9.5, idler_h = 4, idler_id = 3,// idler dimensions: outer and inner diameters and height | 24 | idler_d = 9.5, idler_h = 4, idler_id = 3,// idler dimensions: outer and inner diameters and height |
25 | // spring properties | 25 | // spring properties |
26 | spring_d = 10, spring_lc = 9.6, // spring diameter and compressed length | 26 | spring_d = 10, spring_lc = 9.6, // spring diameter and compressed length |
27 | // filament path properties | 27 | // filament path properties |
28 | filament_d = 1.75, | 28 | filament_d = 1.75, |
29 | filament_path_d = 2, | 29 | filament_path_d = 2, |
30 | filament_guide_d = 4, // PTFE filament guide diameter | 30 | filament_guide_d = 4, // PTFE filament guide diameter |
31 | // knob properties | 31 | // knob properties |
32 | knob_h = 10, | 32 | knob_h = 10, |
33 | knob_bore_l = 4, | 33 | knob_bore_l = 4, |
34 | knob_indent_d = 4, | 34 | knob_indent_d = 4, |
35 | knob_indents = 12, | 35 | knob_indents = 12, |
36 | // spring tensioner | 36 | // spring tensioner |
37 | st_nut_d = 9, st_nut_h = 4, | 37 | st_nut_d = 9, st_nut_h = 4, |
38 | st_screw_d = 5, | 38 | st_screw_d = 5, |
39 | st_thickshell = 8*extrusion_width, st_thinshell = 2*extrusion_width, | 39 | st_thickshell = 8*extrusion_width, st_thinshell = 2*extrusion_width, |
40 | st_split_w = 4*extrusion_width, | ||
40 | 41 | ||
41 | // screw it | 42 | // screw it |
42 | mount_screw_d = 3.1, mount_screw_l = 20, | 43 | mount_screw_d = 3.1, mount_screw_l = 20, |
43 | mount_screwhead_d=6, mount_screwhead_h=3, | 44 | mount_screwhead_d=6, mount_screwhead_h=3, |
44 | idler_screw_d = 3, | 45 | idler_screw_d = 3, |
45 | idler_screwhead_d=6, idler_screwhead_h=3, | 46 | idler_screwhead_d=6, idler_screwhead_h=3, |
46 | 47 | ||
47 | pf = pushfit_embeddest, | 48 | pf = pushfit_embeddest, |
48 | pf_shell = max(3*layer_height,3*extrusion_width), | 49 | pf_shell = max(3*layer_height,3*extrusion_width), |
49 | pf_smooth = true, | 50 | pf_smooth = true, |
50 | 51 | ||
51 | // empty spaces | 52 | // empty spaces |
52 | idler_travel = 3, // how far should idler travel when pressed | 53 | idler_travel = 3, // how far should idler travel when pressed |
53 | idler_clearance=1, | 54 | idler_clearance=1, |
54 | pulley_d_clearance=2, | 55 | pulley_d_clearance=2, |
55 | pulley_small_d_clearance=0.5, | 56 | pulley_small_d_clearance=0.5, |
@@ -224,33 +225,33 @@ module the_extruder( | |||
224 | mirror([0,0,1]) | 225 | mirror([0,0,1]) |
225 | cylinder(d=mount_screwhead_d,h=layer_height); | 226 | cylinder(d=mount_screwhead_d,h=layer_height); |
226 | }//translate | 227 | }//translate |
227 | }//lever module | 228 | }//lever module |
228 | 229 | ||
229 | module body() { | 230 | module body() { |
230 | difference() { | 231 | difference() { |
231 | union() { | 232 | union() { |
232 | cylinder(d=gearbox_d,h=body_h,$fn=fnd*gearbox_d); | 233 | cylinder(d=gearbox_d,h=body_h,$fn=fnd*gearbox_d); |
233 | // spring tensioner part | 234 | // spring tensioner part |
234 | translate([-gearbox_d/2,0,0]) hull() { | 235 | translate([-gearbox_d/2,0,0]) hull() { |
235 | translate([0,-longwing,ls_z]) | 236 | translate([0,-longwing,ls_z]) |
236 | rotate([0,90,0]) | 237 | rotate([0,90,0]) |
237 | cylinder(d=lever_thickness,h=fsw,$fn=fnd*lever_thickness); | 238 | cylinder(d=lever_thickness,h=fsw,$fn=fnd*lever_thickness); |
238 | hh=body_h-ls_z; | 239 | hh=body_h-ls_z; |
239 | translate([0,0,ls_z]) | 240 | translate([0,0,ls_z]) |
240 | mirror([0,1,0]) cube(size=[fsw,longwing+(st_thinshell+st_split_w_tolerance)/2+st_thickshell,body_h-ls_z]); | 241 | mirror([0,1,0]) cube(size=[fsw,longwing+(st_split_w+st_split_w_tolerance)/2+st_thickshell,body_h-ls_z]); |
241 | hhh=ls_z; | 242 | hhh=ls_z; |
242 | translate([0,0,0]) | 243 | translate([0,0,0]) |
243 | mirror([0,1,0]) cube(size=[fsw,longwing-hhh+lever_thickness/sqrt(2),hhh+lever_thickness/2]); | 244 | mirror([0,1,0]) cube(size=[fsw,longwing-hhh+lever_thickness/sqrt(2),hhh+lever_thickness/2]); |
244 | }//hull translate | 245 | }//hull translate |
245 | 246 | ||
246 | // pushfit bracket | 247 | // pushfit bracket |
247 | translate([0,0,filament_elevation]) | 248 | translate([0,0,filament_elevation]) |
248 | rotate([0,0,45]) translate([pulley_d/2+filament_offset,0,0]) | 249 | rotate([0,0,45]) translate([pulley_d/2+filament_offset,0,0]) |
249 | rotate([-90,0,0]) | 250 | rotate([-90,0,0]) |
250 | translate([0,0,mount_d/sqrt(2)/2+mount_screw_d-gearbox_d/2/*TODO:*/]) { | 251 | translate([0,0,mount_d/sqrt(2)/2+mount_screw_d-gearbox_d/2/*TODO:*/]) { |
251 | pfbl = pf_h(pf)+gearbox_d/2; //TODO: | 252 | pfbl = pf_h(pf)+gearbox_d/2; //TODO: |
252 | if(pf_smooth) { | 253 | if(pf_smooth) { |
253 | pfbd = pf_d(pf)+2*pf_shell; | 254 | pfbd = pf_d(pf)+2*pf_shell; |
254 | hull() { | 255 | hull() { |
255 | cylinder(d=pfbd,h=pfbl,$fn=pfbd*fnd); | 256 | cylinder(d=pfbd,h=pfbl,$fn=pfbd*fnd); |
256 | translate([-epsilon/2,0,0]) { | 257 | translate([-epsilon/2,0,0]) { |
@@ -348,73 +349,75 @@ module the_extruder( | |||
348 | cylinder(d=gearbox_d-mount_d,h=ls_h+2,center=true,$fn=fnd*(gearbox_d-mount_d)); | 349 | cylinder(d=gearbox_d-mount_d,h=ls_h+2,center=true,$fn=fnd*(gearbox_d-mount_d)); |
349 | }//difference translate | 350 | }//difference translate |
350 | 351 | ||
351 | // spring tensioner | 352 | // spring tensioner |
352 | translate([-gearbox_d/2,-longwing,ls_z]) rotate([0,-90,0]) { | 353 | translate([-gearbox_d/2,-longwing,ls_z]) rotate([0,-90,0]) { |
353 | mirror([0,0,1]) { | 354 | mirror([0,0,1]) { |
354 | translate([0,0,st_thickshell]) | 355 | translate([0,0,st_thickshell]) |
355 | hull() for(o=[0,spring_d]) translate([0,-o,0]) | 356 | hull() for(o=[0,spring_d]) translate([0,-o,0]) |
356 | rotate([0,0,30]) | 357 | rotate([0,0,30]) |
357 | cylinder(d=st_nut_d+st_nut_d_tolerance,h=st_nut_h+st_nut_h_tolerance,$fn=6); | 358 | cylinder(d=st_nut_d+st_nut_d_tolerance,h=st_nut_h+st_nut_h_tolerance,$fn=6); |
358 | 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)); | 359 | 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)); |
359 | bigd = spring_d+spring_d_clearance; | 360 | bigd = spring_d+spring_d_clearance; |
360 | hf = (bigd-st_screw_d-st_screw_d_tolerance)/2; | 361 | hf = (bigd-st_screw_d-st_screw_d_tolerance)/2; |
361 | translate([0,0,st_thickshell+st_nut_h+st_nut_h_tolerance+st_thinshell-epsilon]) { | 362 | translate([0,0,st_thickshell+st_nut_h+st_nut_h_tolerance+st_thinshell-epsilon]) { |
362 | cylinder(d1=st_screw_d+st_screw_d_tolerance,d2=bigd, | 363 | cylinder(d1=st_screw_d+st_screw_d_tolerance,d2=bigd, |
363 | h=hf+epsilon, $fn=fnd*bigd); | 364 | h=hf+epsilon, $fn=fnd*bigd); |
364 | translate([0,-(st_thinshell+st_split_w_tolerance)/2,0]) | 365 | translate([0,-(st_split_w+st_split_w_tolerance)/2,0]) |
365 | cube(size=[body_h-ls_z+1,st_thinshell+st_split_w_tolerance,fsw+1]); | 366 | cube(size=[body_h-ls_z+1,st_split_w+st_split_w_tolerance,fsw+1]); |
366 | }//translate | 367 | }//translate |
367 | translate([0,0,st_thickshell+st_nut_h+st_nut_h_tolerance+st_thinshell+hf-epsilon]) | 368 | translate([0,0,st_thickshell+st_nut_h+st_nut_h_tolerance+st_thinshell+hf-epsilon]) |
368 | cylinder(d=bigd,h=fsw+1,$fn=fnd*bigd); | 369 | cylinder(d=bigd,h=fsw+1,$fn=fnd*bigd); |
369 | }//mirror | 370 | }//mirror |
370 | }//translate | 371 | }//translate |
371 | 372 | ||
372 | // label | 373 | // label |
373 | label_thickness = 2*layer_height; | 374 | label_thickness = 2*layer_height; |
374 | label_len = len(label); | 375 | label_len = len(label); |
375 | labelspace = [gearbox_d/2-mount_screwhead_d/2-min_xy_shell,longwing-(mount_screwhead_d-st_thinshell-st_split_w_tolerance)/2-2*min_xy_shell-mount_d/2]; | 376 | if(label_len) { |
376 | translate([0,0,body_h-label_thickness]) | 377 | labelspace = [gearbox_d/2-mount_screwhead_d/2-min_xy_shell,longwing-(mount_screwhead_d-st_split_w-st_split_w_tolerance)/2-2*min_xy_shell]; |
377 | linear_extrude(height=label_thickness+epsilon,convexity=64) | 378 | translate([0,0,body_h-label_thickness]) |
378 | translate([-mount_screwhead_d/2-min_xy_shell-labelspace.x/2,-longwing+(st_thinshell+st_split_w_tolerance)/2+min_xy_shell+labelspace.y/2]) | 379 | linear_extrude(height=label_thickness+epsilon,convexity=64) |
379 | mirror([left?0:1,0]) | 380 | translate([-mount_screwhead_d/2-min_xy_shell-labelspace.x/2,-longwing+(st_split_w+st_split_w_tolerance)/2+min_xy_shell+labelspace.y/2]) |
380 | text(text=label,size=labelspace.x/label_len,halign="center",valign="center",font="Arial Black"); | 381 | mirror([left?0:1,0]) |
382 | text(text=label,size=labelspace.x/label_len,halign="center",valign="center",font="Arial Black"); | ||
383 | }//if(label_len) | ||
381 | 384 | ||
382 | }//difference | 385 | }//difference |
383 | 386 | ||
384 | }//body module | 387 | }//body module |
385 | 388 | ||
386 | module springpad() { | 389 | module springpad() { |
387 | smalld=st_screw_d+st_screw_d_tolerance+min_xy_shell; | 390 | smalld=st_screw_d+st_screw_d_tolerance+min_xy_shell; |
388 | bigd = spring_d+spring_d_clearance/2; | 391 | bigd = spring_d+spring_d_clearance/2; |
389 | hf = (bigd-smalld)/2; | 392 | hf = (bigd-smalld)/2; |
390 | h = hf*3.5; | 393 | h = hf*3.5; |
391 | translate([-gearbox_d/2+st_thickshell+st_nut_h+st_nut_h_tolerance+st_thinshell+1,-longwing,filament_elevation]) | 394 | translate([-gearbox_d/2+st_thickshell+st_nut_h+st_nut_h_tolerance+st_thinshell+1,-longwing,filament_elevation]) |
392 | rotate([0,90,0]) difference() { | 395 | rotate([0,90,0]) difference() { |
393 | union() { | 396 | union() { |
394 | cylinder(d1=smalld,d2=bigd,h=hf,$fn=fnd*bigd); | 397 | cylinder(d1=smalld,d2=bigd,h=hf,$fn=fnd*bigd); |
395 | translate([0,0,hf-epsilon]) | 398 | translate([0,0,hf-epsilon]) |
396 | cylinder(d=bigd,h=h-hf,$fn=fnd*bigd); | 399 | cylinder(d=bigd,h=h-hf,$fn=fnd*bigd); |
397 | translate([0,0,h]) | 400 | translate([0,0,h]) |
398 | sphere(d=spring_d*3/4,$fn=fnd*spring_d*3/4); | 401 | sphere(d=spring_d*3/4,$fn=fnd*spring_d*3/4); |
399 | l = body_h-ls_z; | 402 | l = body_h-ls_z; |
400 | w = st_thinshell; | 403 | w = st_split_w; |
401 | hull() translate([0,-st_thinshell/2,0]) mirror([1,0,0]) { | 404 | hull() translate([0,-st_split_w/2,0]) mirror([1,0,0]) { |
402 | translate([0,0,w]) | 405 | translate([0,0,w]) |
403 | cube(size=[l,st_thinshell,w]); | 406 | cube(size=[l,st_split_w,w]); |
404 | cube(size=[l-w,st_thinshell,2*w]); | 407 | cube(size=[l-w,st_split_w,2*w]); |
405 | } | 408 | } |
406 | } | 409 | } |
407 | translate([0,0,-epsilon]) | 410 | translate([0,0,-epsilon]) |
408 | cylinder(d=st_screw_d+st_screw_d_tolerance,h=2*hf+epsilon,$fn=fnd*(st_screw_d+st_screw_d_tolerance)); | 411 | cylinder(d=st_screw_d+st_screw_d_tolerance,h=2*hf+epsilon,$fn=fnd*(st_screw_d+st_screw_d_tolerance)); |
409 | } | 412 | } |
410 | } | 413 | } |
411 | 414 | ||
412 | module knob() { | 415 | module knob() { |
413 | ch = knob_indent_d/2; | 416 | ch = knob_indent_d/2; |
414 | translate([0,0,body_h+epsilon]) { | 417 | translate([0,0,body_h+epsilon]) { |
415 | mirror([0,0,1]) translate([0,0,-epsilon]) { | 418 | mirror([0,0,1]) translate([0,0,-epsilon]) { |
416 | difference() { | 419 | difference() { |
417 | cylinder(d=pulley_d,h=knob_bore_l,$fn=fnd*pulley_d); | 420 | cylinder(d=pulley_d,h=knob_bore_l,$fn=fnd*pulley_d); |
418 | translate([0,0,-1]) difference() { | 421 | translate([0,0,-1]) difference() { |
419 | cylinder(d=bore_d+knob_bore_d_tolerance,h=knob_bore_l+2); | 422 | cylinder(d=bore_d+knob_bore_d_tolerance,h=knob_bore_l+2); |
420 | translate([-bore_d/2-1,bore_dd-bore_d/2+knob_bore_d_tolerance/2,-1]) | 423 | translate([-bore_d/2-1,bore_dd-bore_d/2+knob_bore_d_tolerance/2,-1]) |