-rw-r--r-- | another.scad | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/another.scad b/another.scad index 8334b11..1811584 100644 --- a/another.scad +++ b/another.scad @@ -1,85 +1,85 @@ draft=true; layer_height=0.2; extrusion_width=0.4; epsilon=0.01; $fs=0.0125; use <pushfittery.scad>; include <pushfit_data.scad>; include <pulley_data.scad>; module the_extruder( // motor properties gearbox_d = 36, mount_d = 28, // the distance between opposite mounting holes mounthole_depth = 5, mounthole_min_depth = 3, mounthole_max_depth = 4, protrusion_d = 22, protrusion_h = 2.2, // the dimensions of the protrusion on top of gearbox bore_d = 8, bore_l = 17.6, bore_dd = 7, // pulley properties pulley = pulley_e3d, pulley_elevation = 1, // pulley elevation above the protrusion // idler properties idler_d = 10, idler_h = 4, idler_id = 3, // idler dimensions: outer and inner diameters and height // spring properties spring_d = 10, spring_lc = 9.6, // spring diameter and compressed length // filament path properties filament_d = 1.75, filament_path_d = 2, filament_guide_d = 4, // PTFE filament guide diameter // knob properties knob_h = 10, knob_indent_d = 4, knob_indents = 12, knob_v_clearance = 1, // spring tensioner st_nut_d = 9, st_nut_h = 4, - st_screw_d = 5, + st_screw_d = 5, st_screw_l = 16, st_thickshell = 8*extrusion_width, st_thinshell = 2*extrusion_width, st_split_w = 4*extrusion_width, // screw it mount_screw_d = 3.1, mount_screw_l = 20, mount_screwhead_d=6, mount_screwhead_h=3, idler_screw_d = 3, idler_screwhead_d=6, idler_screwhead_h=3, pf = pushfit_metal, pf_shell = max(3*layer_height,3*extrusion_width), // empty spaces idler_travel = 3, // how far should idler travel when pressed idler_clearance=.5, pulley_small_d_clearance=.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=.8, 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, min_z_shell = 4*layer_height, // the very minimal shell thickness along z-axis. min_xy_shell = 2*extrusion_width, body_label = "another", body_label_thickness = layer_height, knob_label = "another", knob_label_thickness = 2*layer_height, knob_label_size=undef, what="lever", // lever|body|knob|springpad|* left=false, vitamins = true, bridges = true, debug = false, ) { fnd = 2*PI; fnr = 2*fnd; function lu(m,k) = m[search([k],m)[0]][1]; pulley_d = lu(pulley,"d"); pulley_h = lu(pulley,"h"); teeth_elevation = lu(pulley,"fe"); filament_offset = lu(pulley,"g")+filament_d/2; pulley_d_clearance = lu(pulley,"ssrc")*2; @@ -124,97 +124,101 @@ module the_extruder( module place_idler() { rotate([0,0,45]) translate([(pulley_d+idler_d)/2,0,0]) children(); } module finger_indent(d=lever_thickness,depth/*=1*/,r/*=15*/) { if(depth) { hh = (-4*pow(depth,2)+pow(d,2))/(8*depth); rr = depth+hh; translate([0,0,hh]) sphere(r=rr,$fn=fnr*rr); }else if(r) { hh=sqrt(pow(r,2)-pow(d,2)/4); translate([0,0,hh]) sphere(r=r,$fn=fnr*r); } } % if(vitamins) mirrorleft() { translate([0,0,-epsilon]) mirror([0,0,1]) cylinder(d=gearbox_d,h=1,$fn=60); for(zr=[0:90:359]) rotate([0,0,zr]) translate([mount_d/2,0,0]) cylinder(d=mount_screw_d,h=20,$fn=30); translate([0,0,-epsilon]) cylinder(d=protrusion_d,h=protrusion_h,$fn=30); translate([0,0,protrusion_h]) { difference() { cylinder(d=bore_d,h=bore_l,$fn=30); translate([-bore_d/2-1,bore_dd-bore_d/2,-1]) cube([bore_d+2,bore_d/2,bore_l+2]); } translate([0,0,pulley_elevation]) { cylinder(d=pulley_d,h=pulley_h,$fn=30); translate([0,0,teeth_elevation]) { place_idler() { cylinder(d=idler_d,h=idler_h,center=true,$fn=30); cylinder(d=idler_screw_d,h=lever_thickness+2,center=true,$fn=30); }//place idler // filament path rotate([0,0,45]) { translate([pulley_d/2-idler_filament_offset,0,0]) rotate([90,0,0]) { cylinder(d=filament_d,h=gearbox_d,center=false,$fn=15); }//rotate translate translate([pulley_d/2+filament_offset,0,0]) rotate([-90,0,0]) { cylinder(d=filament_d,h=gearbox_d,center=false,$fn=15); translate([0,0,pf_offset]) pushfit(pf); }//rotate translate }//rotate }//translate teeth }//translate pulley }//translate protrusion - }//vitamins + // spring tensioner screw + translate([-gearbox_d/2,-longwing,ls_z]) + rotate([0,90,0]) + cylinder(d=st_screw_d,h=st_screw_l); + }//mirrorleft if(vitamins) module lever() { translate([0,0,protrusion_h+pulley_elevation+teeth_elevation]) { difference() { union() { hull() { place_idler() cylinder(d=lsd,h=lever_thickness,center=true,$fn=60); translate([mount_d/2,0,0]) cylinder(d=lsd,h=lever_thickness,center=true,$fn=60); }//hull hull() { translate([mount_d/2,0,0]) cylinder(d=lsd,h=lever_thickness,center=true,$fn=60); translate([mount_d/2,-longwing,0]) rotate([0,90,0]) cylinder(d=lever_thickness,h=lsd,center=true,$fn=60); }//hull }//union // filament path place_idler() translate([-idler_d/2-idler_filament_offset,0,0]) rotate([90,0,0]) { mirror([0,1,0]) teardrop(d=filament_path_d,h=3*gearbox_d,center=true); translate([0,0, sqrt(2)*(mount_d-pulley_d+lsd)/2 ]) { cylinder(d1=filament_path_d,d2=2*filament_path_d, h=filament_path_d,$fn=2*filament_path_d*fnd); translate([0,0,filament_path_d-epsilon]) cylinder(d=2*filament_path_d,h=lsd*sqrt(2),$fn=2*filament_path_d*fnd); }//translate }//rotate translate place_idler // idler space and mounting hole place_idler() { cylinder(d=idler_d+idler_clearance*2,h=idler_h+idler_v_tolerance,center=true,$fn=60); cylinder(d=idler_screw_d,h=lever_thickness+2,center=true,$fn=30); translate([0,0,lever_thickness/2-idler_screwhead_h]) cylinder(d=idler_screwhead_d,h=idler_screwhead_h+1,$fn=fnd*idler_screwhead_d); } // mounting screw hole translate([mount_d/2,0,0]) cylinder(d=mount_screw_d+mount_screw_d_tolerance,h=lever_thickness+2,center=true,$fn=fnd*mount_screw_d); // lever end translate([mount_d/2,0,0]) rotate([0,90,0]) { |