summaryrefslogtreecommitdiff
authorMichael Krelin <hacker@klever.net>2018-08-22 10:47:08 (UTC)
committer Michael Krelin <hacker@klever.net>2018-08-22 10:47:08 (UTC)
commit4bb6687a7d733a947943b67cf77c3963041c6fb0 (patch) (unidiff)
tree67e1e7b383c289ad41865ccfcc85f0ce9e95717e
parent2bb1330fffd3b2c7d83361f536eb155640e4c867 (diff)
downloadextrudery-4bb6687a7d733a947943b67cf77c3963041c6fb0.zip
extrudery-4bb6687a7d733a947943b67cf77c3963041c6fb0.tar.gz
extrudery-4bb6687a7d733a947943b67cf77c3963041c6fb0.tar.bz2
teardrop module
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--another.scad33
1 files changed, 18 insertions, 15 deletions
diff --git a/another.scad b/another.scad
index f4e8904..23243d9 100644
--- a/another.scad
+++ b/another.scad
@@ -79,32 +79,41 @@ module the_extruder(
79 lever_thickness=max(spring_d+spring_d_clearance+layer_height*8,idler_h+idler_v_tolerance+2*lever_shell); 79 lever_thickness=max(spring_d+spring_d_clearance+layer_height*8,idler_h+idler_v_tolerance+2*lever_shell);
80 lsd = idler_d-idler_clearance*2; 80 lsd = idler_d-idler_clearance*2;
81 longwing=gearbox_d/2+spring_d/2+lsd/2; 81 longwing=gearbox_d/2+spring_d/2+lsd/2;
82 h_ = (pulley_d+idler_d)/(2*sqrt(2)); 82 h_ = (pulley_d+idler_d)/(2*sqrt(2));
83 ri = sqrt( pow(h_,2) + pow(mount_d/2-h_,2) ); 83 ri = sqrt( pow(h_,2) + pow(mount_d/2-h_,2) );
84 spring_dl = idler_travel*longwing/ri; 84 spring_dl = idler_travel*longwing/ri;
85 85
86 mount_min_depth = mounthole_min_depth ? mounthole_min_depth : mounthole_depth-1; 86 mount_min_depth = mounthole_min_depth ? mounthole_min_depth : mounthole_depth-1;
87 mount_max_depth = mounthole_max_depth ? mounthole_max_depth : mounthole_depth+1; 87 mount_max_depth = mounthole_max_depth ? mounthole_max_depth : mounthole_depth+1;
88 filament_elevation=protrusion_h+pulley_elevation+teeth_elevation; 88 filament_elevation=protrusion_h+pulley_elevation+teeth_elevation;
89 ls_z = filament_elevation; // leverspace mid-z 89 ls_z = filament_elevation; // leverspace mid-z
90 ls_h = lever_thickness+lever_v_clearance; // leverspace height 90 ls_h = lever_thickness+lever_v_clearance; // leverspace height
91 mount_depth = mount_screw_l - (ls_z+ls_h/2+min_z_shell); 91 mount_depth = mount_screw_l - (ls_z+ls_h/2+min_z_shell);
92 body_h = max(protrusion_h+bore_l,mount_screw_l-mount_depth+mount_screwhead_h+min_z_shell,ls_z*2); 92 body_h = max(protrusion_h+bore_l,mount_screw_l-mount_depth+mount_screwhead_h+min_z_shell,ls_z*2);
93 echo("mount depth",mount_depth); 93 echo("mount depth",mount_depth);
94 94
95 module teardrop(r,d,h,center=false,angle=45) {
96 dd = d ? d : (2*r);
97 $fn = dd*fnd;
98 cylinder(d=dd,h=h,center=center);
99 if(angle>0) translate([0,0,center?-h/2:0])
100 rotate([0,0,angle])
101 cube(size=[d/2,d/2,h]);
102 }
103
95 module mirrorleft() { 104 module mirrorleft() {
96 mirror([left?0:1,0,0]) children(); 105 mirror([left?0:1,0,0]) children();
97 } 106 }
98 module place_idler() { 107 module place_idler() {
99 rotate([0,0,45]) 108 rotate([0,0,45])
100 translate([(pulley_d+idler_d)/2,0,0]) 109 translate([(pulley_d+idler_d)/2,0,0])
101 children(); 110 children();
102 } 111 }
103 module finger_indent(d=lever_thickness,depth/*=1*/,r/*=15*/) { 112 module finger_indent(d=lever_thickness,depth/*=1*/,r/*=15*/) {
104 if(depth) { 113 if(depth) {
105 hh = (-4*pow(depth,2)+pow(d,2))/(8*depth); 114 hh = (-4*pow(depth,2)+pow(d,2))/(8*depth);
106 rr = depth+hh; 115 rr = depth+hh;
107 translate([0,0,hh]) sphere(r=rr,$fn=fnr*rr); 116 translate([0,0,hh]) sphere(r=rr,$fn=fnr*rr);
108 }else if(r) { 117 }else if(r) {
109 hh=sqrt(pow(r,2)-pow(d,2)/4); 118 hh=sqrt(pow(r,2)-pow(d,2)/4);
110 translate([0,0,hh]) sphere(r=r,$fn=fnr*r); 119 translate([0,0,hh]) sphere(r=r,$fn=fnr*r);
@@ -151,50 +160,47 @@ module the_extruder(
151 union() { 160 union() {
152 hull() { 161 hull() {
153 place_idler() 162 place_idler()
154 cylinder(d=lsd,h=lever_thickness,center=true,$fn=60); 163 cylinder(d=lsd,h=lever_thickness,center=true,$fn=60);
155 translate([mount_d/2,0,0]) 164 translate([mount_d/2,0,0])
156 cylinder(d=lsd,h=lever_thickness,center=true,$fn=60); 165 cylinder(d=lsd,h=lever_thickness,center=true,$fn=60);
157 }//hull 166 }//hull
158 hull() { 167 hull() {
159 translate([mount_d/2,0,0]) 168 translate([mount_d/2,0,0])
160 cylinder(d=lsd,h=lever_thickness,center=true,$fn=60); 169 cylinder(d=lsd,h=lever_thickness,center=true,$fn=60);
161 translate([mount_d/2,-longwing,0]) rotate([0,90,0]) 170 translate([mount_d/2,-longwing,0]) rotate([0,90,0])
162 cylinder(d=lever_thickness,h=lsd,center=true,$fn=60); 171 cylinder(d=lever_thickness,h=lsd,center=true,$fn=60);
163 }//hull 172 }//hull
164 }//union 173 }//union
165 174
166 // filament path 175 // filament path
167 place_idler() { 176 place_idler()
168 translate([-idler_d/2-idler_filament_offset,0,0]) rotate([90,0,0]) { 177 translate([-idler_d/2-idler_filament_offset,0,0])
169 cylinder(d=filament_path_d,h=3*gearbox_d,center=true,$fn=30); 178 rotate([90,0,0]) {
170 translate([0,-filament_path_d/2/sqrt(2),0]) rotate([0,0,45]) 179 mirror([0,1,0])
171 cube(size=[filament_path_d/2,filament_path_d/2,3*gearbox_d],center=true); 180 teardrop(d=filament_path_d,h=3*gearbox_d,center=true);
172 }//rotate translate
173 translate([-idler_d/2-idler_filament_offset,0,0])
174 rotate([90,0,0])
175 translate([0,0, 181 translate([0,0,
176 sqrt(2)*(mount_d-pulley_d+lsd)/2 182 sqrt(2)*(mount_d-pulley_d+lsd)/2
177 ]) { 183 ]) {
178 cylinder(d1=filament_path_d,d2=2*filament_path_d, 184 cylinder(d1=filament_path_d,d2=2*filament_path_d,
179 h=filament_path_d,$fn=2*filament_path_d*fnd); 185 h=filament_path_d,$fn=2*filament_path_d*fnd);
180 translate([0,0,filament_path_d-epsilon]) 186 translate([0,0,filament_path_d-epsilon])
181 cylinder(d=2*filament_path_d,h=lsd,$fn=2*filament_path_d*fnd); 187 cylinder(d=2*filament_path_d,h=lsd,$fn=2*filament_path_d*fnd);
182 } 188 }//translate
183 }//place_idler 189 }//rotate translate place_idler
184 190
185 // idler space and mounting hole 191 // idler space and mounting hole
186 place_idler() { 192 place_idler() {
187 difference() { 193 difference() {
188 cylinder(d=idler_d+idler_clearance*2,h=idler_h+idler_v_tolerance,center=true,$fn=60); 194 cylinder(d=idler_d+idler_clearance*2,h=idler_h+idler_v_tolerance,center=true,$fn=60);
189 if(supports) for(y=[-lsd/2+extrusion_width:(lsd-2*extrusion_width)/3:lsd/2-extrusion_width]) 195 if(supports) for(y=[-lsd/2+extrusion_width:(lsd-2*extrusion_width)/3:lsd/2-extrusion_width])
190 translate([-lsd/2-1,y-extrusion_width/2,-idler_h/2-idler_v_tolerance/2-1]) 196 translate([-lsd/2-1,y-extrusion_width/2,-idler_h/2-idler_v_tolerance/2-1])
191 cube(size=[lsd+2,extrusion_width,idler_h+idler_v_tolerance+2]); 197 cube(size=[lsd+2,extrusion_width,idler_h+idler_v_tolerance+2]);
192 } 198 }
193 cylinder(d=idler_screw_d,h=lever_thickness+2,center=true,$fn=30); 199 cylinder(d=idler_screw_d,h=lever_thickness+2,center=true,$fn=30);
194 translate([0,0,lever_thickness/2-idler_screwhead_h]) 200 translate([0,0,lever_thickness/2-idler_screwhead_h])
195 cylinder(d=idler_screwhead_d,h=idler_screwhead_h+1,$fn=fnd*idler_screwhead_d); 201 cylinder(d=idler_screwhead_d,h=idler_screwhead_h+1,$fn=fnd*idler_screwhead_d);
196 } 202 }
197 // mounting screw hole 203 // mounting screw hole
198 translate([mount_d/2,0,0]) 204 translate([mount_d/2,0,0])
199 cylinder(d=mount_screw_d+mount_screw_d_tolerance,h=lever_thickness+2,center=true,$fn=fnd*mount_screw_d); 205 cylinder(d=mount_screw_d+mount_screw_d_tolerance,h=lever_thickness+2,center=true,$fn=fnd*mount_screw_d);
200 206
@@ -297,36 +303,33 @@ module the_extruder(
297 for(zr=[0:90:359]) rotate([0,0,zr]) translate([mount_d/2,0,0]) { 303 for(zr=[0:90:359]) rotate([0,0,zr]) translate([mount_d/2,0,0]) {
298 translate([0,0,mount_screw_l-mount_depth-(bridges?layer_height:-epsilon)]) 304 translate([0,0,mount_screw_l-mount_depth-(bridges?layer_height:-epsilon)])
299 mirror([0,0,1]) 305 mirror([0,0,1])
300 cylinder(d=mount_screw_d+mount_screw_d_tolerance, 306 cylinder(d=mount_screw_d+mount_screw_d_tolerance,
301 h=mount_screw_l-mount_depth+1, 307 h=mount_screw_l-mount_depth+1,
302 $fn=fnd*(mount_screw_d+mount_screw_d_tolerance)); 308 $fn=fnd*(mount_screw_d+mount_screw_d_tolerance));
303 translate([0,0,mount_screw_l-mount_depth]) 309 translate([0,0,mount_screw_l-mount_depth])
304 cylinder(d=mount_screwhead_d,h=body_h+1,$fn=fnd*mount_screwhead_d); 310 cylinder(d=mount_screwhead_d,h=body_h+1,$fn=fnd*mount_screwhead_d);
305 }//for 311 }//for
306 // pushfit 312 // pushfit
307 translate([0,0,filament_elevation]) 313 translate([0,0,filament_elevation])
308 rotate([0,0,45]) translate([pulley_d/2+filament_offset,0,0]) 314 rotate([0,0,45]) translate([pulley_d/2+filament_offset,0,0])
309 rotate([-90,0,0]) 315 rotate([-90,0,0])
310 translate([0,0,mount_d/sqrt(2)/2+mount_screw_d+epsilon]) 316 translate([0,0,mount_d/sqrt(2)/2+mount_screw_d+epsilon])
311 rotate([0,0,180]) { 317 rotate([0,0,180]) {
312 pushfit(pf); 318 pushfit(pf);
313 cylinder(d=filament_guide_d,h=gearbox_d,center=true,$fn=fnd*filament_guide_d); 319 mirror([0,1,0]) teardrop(d=filament_guide_d,h=gearbox_d,center=true);
314 translate([0,-filament_guide_d/2/sqrt(2),0])
315 rotate([0,0,45])
316 cube(size=[filament_guide_d/2,filament_guide_d/2,gearbox_d],center=true);
317 }//rotate translate rotate translate rotate translate 320 }//rotate translate rotate translate rotate translate
318 // pulley 321 // pulley
319 cylinder(d=pulley_d+pulley_d_clearance,h=body_h+1,$fn=fnd*(pulley_d+pulley_d_clearance)); 322 cylinder(d=pulley_d+pulley_d_clearance,h=body_h+1,$fn=fnd*(pulley_d+pulley_d_clearance));
320 // leverspace 323 // leverspace
321 hull() for(x=[0,gearbox_d]) 324 hull() for(x=[0,gearbox_d])
322 rotate([0,0,45]) 325 rotate([0,0,45])
323 translate([x,0,ls_z-ls_h/2]) 326 translate([x,0,ls_z-ls_h/2])
324 cylinder(d=idler_d+idler_clearance,h=ls_h,$fn=fnd*(idler_d+idler_clearance)); 327 cylinder(d=idler_d+idler_clearance,h=ls_h,$fn=fnd*(idler_d+idler_clearance));
325 328
326 // idler clearance 329 // idler clearance
327 a=cos(45)*(pulley_d+idler_d)/2; 330 a=cos(45)*(pulley_d+idler_d)/2;
328 b=mount_d/2-a; 331 b=mount_d/2-a;
329 x=sqrt(pow(a,2)+pow(b,2)); 332 x=sqrt(pow(a,2)+pow(b,2));
330 translate([mount_d/2,0,ls_z]) 333 translate([mount_d/2,0,ls_z])
331 intersection() { 334 intersection() {
332 r = x+idler_d/2+idler_clearance; 335 r = x+idler_d/2+idler_clearance;