author | Michael Krelin <hacker@klever.net> | 2018-08-22 10:47:08 (UTC) |
---|---|---|
committer | Michael Krelin <hacker@klever.net> | 2018-08-22 10:47:08 (UTC) |
commit | 4bb6687a7d733a947943b67cf77c3963041c6fb0 (patch) (unidiff) | |
tree | 67e1e7b383c289ad41865ccfcc85f0ce9e95717e | |
parent | 2bb1330fffd3b2c7d83361f536eb155640e4c867 (diff) | |
download | extrudery-4bb6687a7d733a947943b67cf77c3963041c6fb0.zip extrudery-4bb6687a7d733a947943b67cf77c3963041c6fb0.tar.gz extrudery-4bb6687a7d733a947943b67cf77c3963041c6fb0.tar.bz2 |
teardrop module
-rw-r--r-- | another.scad | 33 |
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 | |||
@@ -83,24 +83,33 @@ module the_extruder( | |||
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; |
@@ -155,42 +164,39 @@ module the_extruder( | |||
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 | } |
@@ -301,28 +307,25 @@ module the_extruder( | |||
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; |