-rw-r--r-- | another.scad | 42 |
1 files changed, 17 insertions, 25 deletions
diff --git a/another.scad b/another.scad index 74b7ffa..78d4320 100644 --- a/another.scad +++ b/another.scad @@ -43,24 +43,25 @@ module the_extruder( mount_screwhead_d=6, mount_screwhead_h=3, idler_screw_d = 3, idler_screwhead_d=6, idler_screwhead_h=3, pf = pushfit_embeddest, pf_shell = max(3*layer_height,3*extrusion_width), pf_smooth = true, // empty spaces idler_travel = 3, // how far should idler travel when pressed idler_clearance=1, pulley_d_clearance=2, + pulley_small_d_clearance=0.5, lever_v_clearance=.7, // vertical clearance for the lever spring_d_clearance=1, protrusion_tolerance_h=.5, // horizontal tolerance for the motor protrusion protrusion_tolerance_v=.5, // vertical tolerance for the motor protrusion mount_screw_d_tolerance=.4, idler_v_tolerance=.5, knob_bore_d_tolerance=.6, st_nut_h_tolerance=.2, st_nut_d_tolerance=.2,/* TODO: make it st_nut_w_tolerance */ st_screw_d_tolerance=.5, st_split_w_tolerance = .3, @@ -318,58 +319,49 @@ module the_extruder( cylinder(d=mount_screwhead_d,h=body_h+1,$fn=fnd*mount_screwhead_d); }//for // pushfit pf_offset = mount_d/sqrt(2)/2+mount_screw_d; translate([0,0,filament_elevation]) rotate([0,0,45]) translate([pulley_d/2+filament_offset,0,0]) rotate([-90,0,0]) translate([0,0,pf_offset]) rotate([0,0,180]) { pushfit(pf); mirror([0,0,1]) { fh = 1.5* (filament_guide_d-filament_path_d)/2; - fo = pf_offset-(idler_d+idler_clearance)/2-fh; - translate([0,0,-1]) teardrop(d=filament_guide_d,h=fo-extrusion_width+1,angle=225); + fo = pf_offset -filament_path_d /*(idler_d+idler_clearance)/2*/-fh; + translate([0,0,-1]) teardrop(d=filament_guide_d,h=fo/2,angle=225); translate([0,0,-1]) teardrop(d=filament_path_d,h=gearbox_d/2+1,angle=-225); translate([0,0,fo+epsilon]) cylinder(d1=filament_path_d,d2=filament_guide_d,h=fh,$fn=fnd*filament_guide_d); }//mirror }//rotate translate rotate translate rotate translate // pulley - cylinder(d=pulley_d+pulley_d_clearance,h=body_h+1,$fn=fnd*(pulley_d+pulley_d_clearance)); + cylinder(d=pulley_d+pulley_small_d_clearance,h=body_h+1,$fn=fnd*(pulley_d+pulley_d_clearance)); + cylinder(d=pulley_d+pulley_d_clearance,ls_z-max(idler_h,filament_guide_d)/2,$fn=fnd*(pulley_d+pulley_d_clearance)); - // leverspace - hull() for(x=[0,gearbox_d]) + translate([0,0,ls_z-ls_h/2]) { + // idler travel + translate([mount_d/2,0,0]) rotate([0,0,45]) - translate([x,0,ls_z-ls_h/2]) + rotate_extrude(angle=90,$fn=fnr*(shortwing+(idler_d+idler_clearance)/2)) + square([shortwing+(idler_d+idler_clearance)/2,ls_h]); + // idler itself + place_idler() cylinder(d=idler_d+idler_clearance,h=ls_h,$fn=fnd*(idler_d+idler_clearance)); - - // idler clearance - a=cos(45)*(pulley_d+idler_d)/2; - b=mount_d/2-a; - x=sqrt(pow(a,2)+pow(b,2)); - translate([mount_d/2,0,ls_z]) - intersection() { - r = x+idler_d/2+idler_clearance; - cylinder(r=r,h=ls_h,center=true); - translate([-r-1,0,-ls_h/2-1]) cube(size=[2*r+2,r+1,ls_h+2]); - } - - rotate([0,0,-45]) - translate([0,0,ls_z-ls_h/2]) - cube(size=[gearbox_d,gearbox_d,lever_thickness+lever_v_clearance]); - translate([0,0,ls_z-ls_h/2]) { - translate([mount_screwhead_d/2,0,0]) - mirror([0,1,0]) - cube(size=[gearbox_d,gearbox_d/2+1,lever_thickness+lever_v_clearance]); + // lever space + echo(atan(1-2*fsw/gearbox_d)); + rotate([0,0,45]) + rotate_extrude(angle=-135+max(atan(2*fsw/gearbox_d-1),atan(gearbox_d/mount_d-1))) + square([gearbox_d/2+1,ls_h]); } // back side cutout // XXX: this is somewhat ugly and potentially bugged, // but I want to sleep. a0_ = atan( (mount_d/sqrt(2)/2+mount_screw_d+pf_h(pf)+gearbox_d/2) / ( pulley_d/2+filament_offset- (pf_d(pf)+2*pf_shell)/2/cos(30) ) |