summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--another.scad8
1 files changed, 4 insertions, 4 deletions
diff --git a/another.scad b/another.scad
index 85715db..2be24e4 100644
--- a/another.scad
+++ b/another.scad
@@ -31,49 +31,50 @@ module the_extruder(
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 34
35 // screw it 35 // screw it
36 mount_screw_d = 3.1, mount_screw_l = 20, 36 mount_screw_d = 3.1, mount_screw_l = 20,
37 mount_screwhead_d=6, mount_screwhead_h=3, 37 mount_screwhead_d=6, mount_screwhead_h=3,
38 38
39 pf = pushfit_embeddest, 39 pf = pushfit_embeddest,
40 40
41 // empty spaces 41 // empty spaces
42 idler_travel = 3, // how far should idler travel when pressed 42 idler_travel = 3, // how far should idler travel when pressed
43 idler_clearance=1, 43 idler_clearance=1,
44 pulley_clearance=2, 44 pulley_clearance=2,
45 lever_v_clearance=.7, // vertical clearance for the lever 45 lever_v_clearance=.7, // vertical clearance for the lever
46 spring_d_clearance=1, 46 spring_d_clearance=1,
47 protrusion_tolerance_h=.5, // horizontal tolerance for the motor protrusion 47 protrusion_tolerance_h=.5, // horizontal tolerance for the motor protrusion
48 protrusion_tolerance_v=.5, // vertical tolerance for the motor protrusion 48 protrusion_tolerance_v=.5, // vertical tolerance for the motor protrusion
49 mount_screw_d_tolerance=.4, 49 mount_screw_d_tolerance=.4,
50 idler_v_tolerance=.5, 50 idler_v_tolerance=.5,
51 knob_bore_d_tolerance=.6, 51 knob_bore_d_tolerance=.6,
52 52
53 what="lever", 53 what="lever",
54 left=false, 54 left=false,
55 vitamins = true 55 vitamins = true,
56 supports = false
56) { 57) {
57 lever_shell = mount_screwhead_h+0.5; 58 lever_shell = mount_screwhead_h+0.5;
58 lever_thickness=max(spring_d+layer_height*8,idler_h+idler_v_tolerance+2*lever_shell); 59 lever_thickness=max(spring_d+layer_height*8,idler_h+idler_v_tolerance+2*lever_shell);
59 lsd = idler_d-idler_clearance*2; 60 lsd = idler_d-idler_clearance*2;
60 longwing=gearbox_d/2+spring_d/2+lsd/2; 61 longwing=gearbox_d/2+spring_d/2+lsd/2;
61 h_ = (pulley_d+idler_d)/(2*sqrt(2)); 62 h_ = (pulley_d+idler_d)/(2*sqrt(2));
62 ri = sqrt( pow(h_,2) + pow(mount_d/2-h_,2) ); 63 ri = sqrt( pow(h_,2) + pow(mount_d/2-h_,2) );
63 spring_dl = idler_travel*longwing/ri; 64 spring_dl = idler_travel*longwing/ri;
64 65
65 filament_elevation=protrusion_h+pulley_elevation+teeth_elevation; 66 filament_elevation=protrusion_h+pulley_elevation+teeth_elevation;
66 ls_z = filament_elevation; // leverspace mid-z 67 ls_z = filament_elevation; // leverspace mid-z
67 body_h = max(protrusion_h+bore_l,mount_screw_l-mounthole_depth/2+mount_screwhead_h,ls_z*2); 68 body_h = max(protrusion_h+bore_l,mount_screw_l-mounthole_depth/2+mount_screwhead_h,ls_z*2);
68 ls_h = lever_thickness+lever_v_clearance; // leverspace height 69 ls_h = lever_thickness+lever_v_clearance; // leverspace height
69 70
70 module mirrorleft() { 71 module mirrorleft() {
71 mirror([left?0:1,0,0]) children(); 72 mirror([left?0:1,0,0]) children();
72 } 73 }
73 module place_idler() { 74 module place_idler() {
74 rotate([0,0,45]) 75 rotate([0,0,45])
75 translate([(pulley_d+idler_d)/2,0,0]) 76 translate([(pulley_d+idler_d)/2,0,0])
76 children(); 77 children();
77 } 78 }
78 module finger_indent(d=lever_thickness,depth/*=1*/,r/*=15*/) { 79 module finger_indent(d=lever_thickness,depth/*=1*/,r/*=15*/) {
79 if(depth) { 80 if(depth) {
@@ -124,50 +125,49 @@ module the_extruder(
124 place_idler() 125 place_idler()
125 cylinder(d=lsd,h=lever_thickness,center=true,$fn=60); 126 cylinder(d=lsd,h=lever_thickness,center=true,$fn=60);
126 translate([mount_d/2,0,0]) 127 translate([mount_d/2,0,0])
127 cylinder(d=lsd,h=lever_thickness,center=true,$fn=60); 128 cylinder(d=lsd,h=lever_thickness,center=true,$fn=60);
128 }//hull 129 }//hull
129 hull() { 130 hull() {
130 translate([mount_d/2,0,0]) 131 translate([mount_d/2,0,0])
131 cylinder(d=lsd,h=lever_thickness,center=true,$fn=60); 132 cylinder(d=lsd,h=lever_thickness,center=true,$fn=60);
132 translate([mount_d/2,-longwing,0]) rotate([0,90,0]) 133 translate([mount_d/2,-longwing,0]) rotate([0,90,0])
133 cylinder(d=lever_thickness,h=lsd,center=true,$fn=60); 134 cylinder(d=lever_thickness,h=lsd,center=true,$fn=60);
134 }//hull 135 }//hull
135 }//union 136 }//union
136 137
137 // filament path 138 // filament path
138 place_idler() translate([-(idler_d+filament_path_d)/2,0,0]) rotate([90,0,0]) { 139 place_idler() translate([-(idler_d+filament_path_d)/2,0,0]) rotate([90,0,0]) {
139 cylinder(d=filament_path_d,h=3*gearbox_d,center=true,$fn=30); 140 cylinder(d=filament_path_d,h=3*gearbox_d,center=true,$fn=30);
140 translate([0,-filament_path_d/2/sqrt(2),0]) rotate([0,0,45]) 141 translate([0,-filament_path_d/2/sqrt(2),0]) rotate([0,0,45])
141 cube(size=[filament_path_d/2,filament_path_d/2,3*gearbox_d],center=true); 142 cube(size=[filament_path_d/2,filament_path_d/2,3*gearbox_d],center=true);
142 } 143 }
143 144
144 // idler space and mounting hole 145 // idler space and mounting hole
145 place_idler() { 146 place_idler() {
146 difference() { 147 difference() {
147 cylinder(d=idler_d+idler_clearance*2,h=idler_h+idler_v_tolerance,center=true,$fn=60); 148 cylinder(d=idler_d+idler_clearance*2,h=idler_h+idler_v_tolerance,center=true,$fn=60);
148 // supports 149 if(supports) for(y=[-lsd/2+extrusion_width:(lsd-2*extrusion_width)/3:lsd/2-extrusion_width])
149 for(y=[-lsd/2+extrusion_width:(lsd-2*extrusion_width)/3:lsd/2-extrusion_width])
150 translate([-lsd/2-1,y-extrusion_width/2,-idler_h/2-idler_v_tolerance/2-1]) 150 translate([-lsd/2-1,y-extrusion_width/2,-idler_h/2-idler_v_tolerance/2-1])
151 cube(size=[lsd+2,extrusion_width,idler_h+idler_v_tolerance+2]); 151 cube(size=[lsd+2,extrusion_width,idler_h+idler_v_tolerance+2]);
152 } 152 }
153 cylinder(d=mount_screw_d+mount_screw_d_tolerance,h=lever_thickness+2,center=true,$fn=30); 153 cylinder(d=mount_screw_d+mount_screw_d_tolerance,h=lever_thickness+2,center=true,$fn=30);
154 translate([0,0,lever_thickness/2-mount_screwhead_h]) 154 translate([0,0,lever_thickness/2-mount_screwhead_h])
155 cylinder(d=mount_screwhead_d,h=mount_screwhead_h+1,$fn=2*PI*mount_screwhead_d); 155 cylinder(d=mount_screwhead_d,h=mount_screwhead_h+1,$fn=2*PI*mount_screwhead_d);
156 } 156 }
157 // mounting screw hole 157 // mounting screw hole
158 translate([mount_d/2,0,0]) 158 translate([mount_d/2,0,0])
159 cylinder(d=mount_screw_d+mount_screw_d_tolerance,h=lever_thickness+2,center=true,$fn=2*PI*mount_screw_d); 159 cylinder(d=mount_screw_d+mount_screw_d_tolerance,h=lever_thickness+2,center=true,$fn=2*PI*mount_screw_d);
160 160
161 // lever end 161 // lever end
162 translate([mount_d/2,0,0]) rotate([0,90,0]) { 162 translate([mount_d/2,0,0]) rotate([0,90,0]) {
163 translate([0,-longwing,lsd/2]) finger_indent(d=lever_thickness-1,r=15); 163 translate([0,-longwing,lsd/2]) finger_indent(d=lever_thickness-1,r=15);
164 translate([0,-longwing,0]) 164 translate([0,-longwing,0])
165 mirror([0,0,1]) 165 mirror([0,0,1])
166 difference() { 166 difference() {
167 cylinder(d=spring_d+spring_d_clearance,h=lsd,$fn=2*PI*spring_d); 167 cylinder(d=spring_d+spring_d_clearance,h=lsd,$fn=2*PI*spring_d);
168 sphere(d=spring_d*3/4,$fn=PI*spring_d); 168 sphere(d=spring_d*3/4,$fn=PI*spring_d);
169 } 169 }
170 }//rotate-translate 170 }//rotate-translate
171 }//difference 171 }//difference
172 // bridging patch 172 // bridging patch
173 place_idler() 173 place_idler()
@@ -253,49 +253,49 @@ module the_extruder(
253 253
254 rotate([0,0,-45]) 254 rotate([0,0,-45])
255 translate([0,0,ls_z-ls_h/2]) 255 translate([0,0,ls_z-ls_h/2])
256 cube(size=[gearbox_d,gearbox_d,lever_thickness+lever_v_clearance]); 256 cube(size=[gearbox_d,gearbox_d,lever_thickness+lever_v_clearance]);
257 translate([0,0,ls_z-ls_h/2]) { 257 translate([0,0,ls_z-ls_h/2]) {
258 translate([mount_screwhead_d/2,0,0]) 258 translate([mount_screwhead_d/2,0,0])
259 mirror([0,1,0]) 259 mirror([0,1,0])
260 cube(size=[gearbox_d,gearbox_d/2+1,lever_thickness+lever_v_clearance]); 260 cube(size=[gearbox_d,gearbox_d/2+1,lever_thickness+lever_v_clearance]);
261 } 261 }
262 //translate([-mount_d/2,-longwing,filament_elevation]) 262 //translate([-mount_d/2,-longwing,filament_elevation])
263 translate([mount_d/2,-longwing,filament_elevation]) 263 translate([mount_d/2,-longwing,filament_elevation])
264 rotate([0,-90,0]) difference() { 264 rotate([0,-90,0]) difference() {
265 cylinder(d=spring_d+spring_d_clearance,h=spring_lc+spring_dl,$fn=PI*spring_d); 265 cylinder(d=spring_d+spring_d_clearance,h=spring_lc+spring_dl,$fn=PI*spring_d);
266 translate([0,0,spring_lc+spring_dl]) sphere(d=spring_d*3/4,$fn=PI*spring_d); 266 translate([0,0,spring_lc+spring_dl]) sphere(d=spring_d*3/4,$fn=PI*spring_d);
267 } 267 }
268 //sphere(d=spring_d*3/4,$fn=PI*spring_d); 268 //sphere(d=spring_d*3/4,$fn=PI*spring_d);
269 *difference() { 269 *difference() {
270 // spring support 270 // spring support
271 translate([0,-longwing,filament_elevation]) 271 translate([0,-longwing,filament_elevation])
272 sphere(d=spring_d*3/4,$fn=PI*spring_d); 272 sphere(d=spring_d*3/4,$fn=PI*spring_d);
273 } 273 }
274 274
275 }//difference 275 }//difference
276 276
277 intersection() { 277 if(supports) intersection() {
278 difference() { 278 difference() {
279 translate([0,0,ls_z-ls_h/2-epsilon]) 279 translate([0,0,ls_z-ls_h/2-epsilon])
280 cylinder(d=gearbox_d,h=ls_h+2*epsilon,$fn=2*PI*gearbox_d); 280 cylinder(d=gearbox_d,h=ls_h+2*epsilon,$fn=2*PI*gearbox_d);
281 cylinder(d=pulley_d+pulley_clearance,h=body_h+1,$fn=2*PI*(pulley_d+pulley_clearance)); 281 cylinder(d=pulley_d+pulley_clearance,h=body_h+1,$fn=2*PI*(pulley_d+pulley_clearance));
282 } 282 }
283 // supports 283 // supports
284 // TODO: hardcoded stuff below… 284 // TODO: hardcoded stuff below…
285 if(false) { // parallel 285 if(false) { // parallel
286 for(y=[-gearbox_d:4:gearbox_d]) 286 for(y=[-gearbox_d:4:gearbox_d])
287 translate([0,y-extrusion_width/2,0]) 287 translate([0,y-extrusion_width/2,0])
288 cube(size=[gearbox_d,extrusion_width,body_h]); 288 cube(size=[gearbox_d,extrusion_width,body_h]);
289 }else{ // radial 289 }else{ // radial
290 for(zr=[-65:(65+50)/7:50]) 290 for(zr=[-65:(65+50)/7:50])
291 rotate([0,0,zr]) translate([0,-extrusion_width/2,0]) 291 rotate([0,0,zr]) translate([0,-extrusion_width/2,0])
292 cube(size=[gearbox_d,extrusion_width,body_h]); 292 cube(size=[gearbox_d,extrusion_width,body_h]);
293 } 293 }
294 } 294 }
295 295
296 }//body module 296 }//body module
297 297
298 module knob() { 298 module knob() {
299 ch = knob_indent_d/2; 299 ch = knob_indent_d/2;
300 translate([0,0,body_h+epsilon]) { 300 translate([0,0,body_h+epsilon]) {
301 mirror([0,0,1]) translate([0,0,-epsilon]) { 301 mirror([0,0,1]) translate([0,0,-epsilon]) {