author | Michael Krelin <hacker@klever.net> | 2018-08-06 11:32:37 (UTC) |
---|---|---|
committer | Michael Krelin <hacker@klever.net> | 2018-08-06 11:32:37 (UTC) |
commit | 94730f0a772dab12295fbf71ba436e9e06efd00a (patch) (unidiff) | |
tree | fdba7f0d93bf990d0b3e3bf2ac22265e35dc7dff /another.scad | |
parent | 62c1ffcff93a1880b26829bd5cd5fed9c3eb6293 (diff) | |
download | extrudery-94730f0a772dab12295fbf71ba436e9e06efd00a.zip extrudery-94730f0a772dab12295fbf71ba436e9e06efd00a.tar.gz extrudery-94730f0a772dab12295fbf71ba436e9e06efd00a.tar.bz2 |
another: conditional bridging patches
-rw-r--r-- | another.scad | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/another.scad b/another.scad index 9ed285d..7e7f22d 100644 --- a/another.scad +++ b/another.scad | |||
@@ -36,49 +36,49 @@ module the_extruder( | |||
36 | st_screw_d = 5, | 36 | st_screw_d = 5, |
37 | st_thickshell = 8*extrusion_width, st_thinshell = 4*extrusion_width, | 37 | st_thickshell = 8*extrusion_width, st_thinshell = 4*extrusion_width, |
38 | 38 | ||
39 | // screw it | 39 | // screw it |
40 | mount_screw_d = 3.1, mount_screw_l = 20, | 40 | mount_screw_d = 3.1, mount_screw_l = 20, |
41 | mount_screwhead_d=6, mount_screwhead_h=3, | 41 | mount_screwhead_d=6, mount_screwhead_h=3, |
42 | 42 | ||
43 | pf = pushfit_embeddest, | 43 | pf = pushfit_embeddest, |
44 | 44 | ||
45 | // empty spaces | 45 | // empty spaces |
46 | idler_travel = 3, // how far should idler travel when pressed | 46 | idler_travel = 3, // how far should idler travel when pressed |
47 | idler_clearance=1, | 47 | idler_clearance=1, |
48 | pulley_clearance=2, | 48 | pulley_clearance=2, |
49 | lever_v_clearance=.7, // vertical clearance for the lever | 49 | lever_v_clearance=.7, // vertical clearance for the lever |
50 | spring_d_clearance=1, | 50 | spring_d_clearance=1, |
51 | protrusion_tolerance_h=.5, // horizontal tolerance for the motor protrusion | 51 | protrusion_tolerance_h=.5, // horizontal tolerance for the motor protrusion |
52 | protrusion_tolerance_v=.5, // vertical tolerance for the motor protrusion | 52 | protrusion_tolerance_v=.5, // vertical tolerance for the motor protrusion |
53 | mount_screw_d_tolerance=.4, | 53 | mount_screw_d_tolerance=.4, |
54 | idler_v_tolerance=.5, | 54 | idler_v_tolerance=.5, |
55 | knob_bore_d_tolerance=.6, | 55 | knob_bore_d_tolerance=.6, |
56 | 56 | ||
57 | what="lever", // lever|body|knob|springpad|* | 57 | what="lever", // lever|body|knob|springpad|* |
58 | left=false, | 58 | left=false, |
59 | vitamins = true, | 59 | vitamins = true, |
60 | supports = false, | 60 | supports = false, bridges = true, |
61 | tensioner = true, | 61 | tensioner = true, |
62 | debug = false | 62 | debug = false |
63 | ) { | 63 | ) { |
64 | fnd = 2*PI; fnr = 2*fnd; | 64 | fnd = 2*PI; fnr = 2*fnd; |
65 | 65 | ||
66 | lever_shell = mount_screwhead_h+0.5; | 66 | lever_shell = mount_screwhead_h+0.5; |
67 | lever_thickness=max(spring_d+spring_d_clearance+layer_height*8,idler_h+idler_v_tolerance+2*lever_shell); | 67 | lever_thickness=max(spring_d+spring_d_clearance+layer_height*8,idler_h+idler_v_tolerance+2*lever_shell); |
68 | lsd = idler_d-idler_clearance*2; | 68 | lsd = idler_d-idler_clearance*2; |
69 | longwing=gearbox_d/2+spring_d/2+lsd/2; | 69 | longwing=gearbox_d/2+spring_d/2+lsd/2; |
70 | h_ = (pulley_d+idler_d)/(2*sqrt(2)); | 70 | h_ = (pulley_d+idler_d)/(2*sqrt(2)); |
71 | ri = sqrt( pow(h_,2) + pow(mount_d/2-h_,2) ); | 71 | ri = sqrt( pow(h_,2) + pow(mount_d/2-h_,2) ); |
72 | spring_dl = idler_travel*longwing/ri; | 72 | spring_dl = idler_travel*longwing/ri; |
73 | 73 | ||
74 | filament_elevation=protrusion_h+pulley_elevation+teeth_elevation; | 74 | filament_elevation=protrusion_h+pulley_elevation+teeth_elevation; |
75 | ls_z = filament_elevation; // leverspace mid-z | 75 | ls_z = filament_elevation; // leverspace mid-z |
76 | body_h = max(protrusion_h+bore_l,mount_screw_l-mounthole_depth/2+mount_screwhead_h,ls_z*2); | 76 | body_h = max(protrusion_h+bore_l,mount_screw_l-mounthole_depth/2+mount_screwhead_h,ls_z*2); |
77 | ls_h = lever_thickness+lever_v_clearance; // leverspace height | 77 | ls_h = lever_thickness+lever_v_clearance; // leverspace height |
78 | 78 | ||
79 | module mirrorleft() { | 79 | module mirrorleft() { |
80 | mirror([left?0:1,0,0]) children(); | 80 | mirror([left?0:1,0,0]) children(); |
81 | } | 81 | } |
82 | module place_idler() { | 82 | module place_idler() { |
83 | rotate([0,0,45]) | 83 | rotate([0,0,45]) |
84 | translate([(pulley_d+idler_d)/2,0,0]) | 84 | translate([(pulley_d+idler_d)/2,0,0]) |
@@ -157,49 +157,49 @@ module the_extruder( | |||
157 | if(supports) for(y=[-lsd/2+extrusion_width:(lsd-2*extrusion_width)/3:lsd/2-extrusion_width]) | 157 | if(supports) for(y=[-lsd/2+extrusion_width:(lsd-2*extrusion_width)/3:lsd/2-extrusion_width]) |
158 | translate([-lsd/2-1,y-extrusion_width/2,-idler_h/2-idler_v_tolerance/2-1]) | 158 | translate([-lsd/2-1,y-extrusion_width/2,-idler_h/2-idler_v_tolerance/2-1]) |
159 | cube(size=[lsd+2,extrusion_width,idler_h+idler_v_tolerance+2]); | 159 | cube(size=[lsd+2,extrusion_width,idler_h+idler_v_tolerance+2]); |
160 | } | 160 | } |
161 | cylinder(d=mount_screw_d+mount_screw_d_tolerance,h=lever_thickness+2,center=true,$fn=30); | 161 | cylinder(d=mount_screw_d+mount_screw_d_tolerance,h=lever_thickness+2,center=true,$fn=30); |
162 | translate([0,0,lever_thickness/2-mount_screwhead_h]) | 162 | translate([0,0,lever_thickness/2-mount_screwhead_h]) |
163 | cylinder(d=mount_screwhead_d,h=mount_screwhead_h+1,$fn=fnd*mount_screwhead_d); | 163 | cylinder(d=mount_screwhead_d,h=mount_screwhead_h+1,$fn=fnd*mount_screwhead_d); |
164 | } | 164 | } |
165 | // mounting screw hole | 165 | // mounting screw hole |
166 | translate([mount_d/2,0,0]) | 166 | translate([mount_d/2,0,0]) |
167 | cylinder(d=mount_screw_d+mount_screw_d_tolerance,h=lever_thickness+2,center=true,$fn=fnd*mount_screw_d); | 167 | cylinder(d=mount_screw_d+mount_screw_d_tolerance,h=lever_thickness+2,center=true,$fn=fnd*mount_screw_d); |
168 | 168 | ||
169 | // lever end | 169 | // lever end |
170 | translate([mount_d/2,0,0]) rotate([0,90,0]) { | 170 | translate([mount_d/2,0,0]) rotate([0,90,0]) { |
171 | translate([0,-longwing,lsd/2]) finger_indent(d=lever_thickness-1,r=15); | 171 | translate([0,-longwing,lsd/2]) finger_indent(d=lever_thickness-1,r=15); |
172 | translate([0,-longwing,0]) | 172 | translate([0,-longwing,0]) |
173 | mirror([0,0,1]) | 173 | mirror([0,0,1]) |
174 | difference() { | 174 | difference() { |
175 | cylinder(d=spring_d+spring_d_clearance,h=lsd,$fn=fnd*(spring_d+spring_d_clearance)); | 175 | cylinder(d=spring_d+spring_d_clearance,h=lsd,$fn=fnd*(spring_d+spring_d_clearance)); |
176 | sphere(d=spring_d*3/4,$fn=fnd*spring_d*3/4); | 176 | sphere(d=spring_d*3/4,$fn=fnd*spring_d*3/4); |
177 | } | 177 | } |
178 | }//rotate-translate | 178 | }//rotate-translate |
179 | }//difference | 179 | }//difference |
180 | // bridging patch | 180 | // bridging patch |
181 | place_idler() | 181 | if(bridges) place_idler() |
182 | translate([0,0,lever_thickness/2-mount_screwhead_h]) | 182 | translate([0,0,lever_thickness/2-mount_screwhead_h]) |
183 | mirror([0,0,1]) | 183 | mirror([0,0,1]) |
184 | cylinder(d=mount_screwhead_d,h=layer_height); | 184 | cylinder(d=mount_screwhead_d,h=layer_height); |
185 | }//translate | 185 | }//translate |
186 | }//lever module | 186 | }//lever module |
187 | 187 | ||
188 | module body() { | 188 | module body() { |
189 | difference() { | 189 | difference() { |
190 | union() { | 190 | union() { |
191 | cylinder(d=gearbox_d,h=body_h,$fn=fnd*gearbox_d); | 191 | cylinder(d=gearbox_d,h=body_h,$fn=fnd*gearbox_d); |
192 | // finger and spring support | 192 | // finger and spring support |
193 | fsw = gearbox_d-(gearbox_d-mount_d)/2-spring_lc; | 193 | fsw = gearbox_d-(gearbox_d-mount_d)/2-spring_lc; |
194 | translate([-gearbox_d/2,0,0]) difference() { | 194 | translate([-gearbox_d/2,0,0]) difference() { |
195 | union() { | 195 | union() { |
196 | hull() { | 196 | hull() { |
197 | translate([0,-longwing,ls_z]) | 197 | translate([0,-longwing,ls_z]) |
198 | rotate([0,90,0]) | 198 | rotate([0,90,0]) |
199 | cylinder(d=lever_thickness,h=fsw,$fn=fnd*lever_thickness); | 199 | cylinder(d=lever_thickness,h=fsw,$fn=fnd*lever_thickness); |
200 | hh=body_h-ls_z; | 200 | hh=body_h-ls_z; |
201 | translate([0,0,ls_z-lever_thickness/2]) | 201 | translate([0,0,ls_z-lever_thickness/2]) |
202 | mirror([0,1,0]) cube(size=[fsw,longwing-hh+lever_thickness/sqrt(2),hh+lever_thickness/2]); | 202 | mirror([0,1,0]) cube(size=[fsw,longwing-hh+lever_thickness/sqrt(2),hh+lever_thickness/2]); |
203 | hhh=ls_z; | 203 | hhh=ls_z; |
204 | translate([0,0,0]) | 204 | translate([0,0,0]) |
205 | mirror([0,1,0]) cube(size=[fsw,longwing-hhh+lever_thickness/sqrt(2),hhh+lever_thickness/2]); | 205 | mirror([0,1,0]) cube(size=[fsw,longwing-hhh+lever_thickness/sqrt(2),hhh+lever_thickness/2]); |
@@ -218,52 +218,52 @@ module the_extruder( | |||
218 | hf = (bigd-st_screw_d)/2; | 218 | hf = (bigd-st_screw_d)/2; |
219 | translate([0,0,st_thickshell+st_nut_h+st_thinshell-epsilon]) | 219 | translate([0,0,st_thickshell+st_nut_h+st_thinshell-epsilon]) |
220 | cylinder(d1=st_screw_d,d2=bigd, | 220 | cylinder(d1=st_screw_d,d2=bigd, |
221 | h=hf+epsilon, $fn=fnd*bigd); | 221 | h=hf+epsilon, $fn=fnd*bigd); |
222 | translate([0,0,st_thickshell+st_nut_h+st_thinshell+hf-epsilon]) | 222 | translate([0,0,st_thickshell+st_nut_h+st_thinshell+hf-epsilon]) |
223 | cylinder(d=bigd,h=fsw+1,$fn=fnd*bigd); | 223 | cylinder(d=bigd,h=fsw+1,$fn=fnd*bigd); |
224 | } | 224 | } |
225 | } | 225 | } |
226 | } | 226 | } |
227 | } // translate | 227 | } // translate |
228 | 228 | ||
229 | // pushfit bracket | 229 | // pushfit bracket |
230 | translate([0,0,filament_elevation]) | 230 | translate([0,0,filament_elevation]) |
231 | rotate([0,0,45]) translate([pulley_d/2,0,0]) | 231 | rotate([0,0,45]) translate([pulley_d/2,0,0]) |
232 | rotate([-90,0,0]) | 232 | rotate([-90,0,0]) |
233 | translate([0,0,mount_d/sqrt(2)/2+mount_screw_d-gearbox_d/2/*TODO:*/]) | 233 | translate([0,0,mount_d/sqrt(2)/2+mount_screw_d-gearbox_d/2/*TODO:*/]) |
234 | cylinder(r=min(body_h-filament_elevation,filament_elevation)/sin(60)-epsilon,h=pf_h(pf)+gearbox_d/2/*TODO:*/,$fn=6); | 234 | cylinder(r=min(body_h-filament_elevation,filament_elevation)/sin(60)-epsilon,h=pf_h(pf)+gearbox_d/2/*TODO:*/,$fn=6); |
235 | }//union (first child of difference) | 235 | }//union (first child of difference) |
236 | 236 | ||
237 | // protrusion | 237 | // protrusion |
238 | translate([0,0,-1]) | 238 | translate([0,0,-1]) |
239 | cylinder(d=protrusion_d+protrusion_tolerance_h,h=protrusion_h+protrusion_tolerance_v+1,$fn=fnd*(protrusion_d+protrusion_tolerance_h)); | 239 | cylinder(d=protrusion_d+protrusion_tolerance_h,h=protrusion_h+protrusion_tolerance_v+1,$fn=fnd*(protrusion_d+protrusion_tolerance_h)); |
240 | // mount screw holes | 240 | // mount screw holes |
241 | for(zr=[0:90:359]) rotate([0,0,zr]) translate([mount_d/2,0,0]) { | 241 | for(zr=[0:90:359]) rotate([0,0,zr]) translate([mount_d/2,0,0]) { |
242 | translate([0,0,mount_screw_l-mounthole_depth/2-layer_height-1]) | 242 | translate([0,0,mount_screw_l-mounthole_depth/2-(bridges?layer_height:-epsilon)]) |
243 | mirror([0,0,1]) | 243 | mirror([0,0,1]) |
244 | cylinder(d=mount_screw_d+mount_screw_d_tolerance, | 244 | cylinder(d=mount_screw_d+mount_screw_d_tolerance, |
245 | h=mount_screw_l-mounthole_depth/2-layer_height+1, | 245 | h=mount_screw_l-mounthole_depth/2+1, |
246 | $fn=fnd*(mount_screw_d+mount_screw_d_tolerance)); | 246 | $fn=fnd*(mount_screw_d+mount_screw_d_tolerance)); |
247 | translate([0,0,mount_screw_l-mounthole_depth/2]) | 247 | translate([0,0,mount_screw_l-mounthole_depth/2]) |
248 | cylinder(d=mount_screwhead_d,h=body_h+1,$fn=fnd*mount_screwhead_d); | 248 | cylinder(d=mount_screwhead_d,h=body_h+1,$fn=fnd*mount_screwhead_d); |
249 | }//for | 249 | }//for |
250 | // pushfit | 250 | // pushfit |
251 | translate([0,0,filament_elevation]) | 251 | translate([0,0,filament_elevation]) |
252 | rotate([0,0,45]) translate([pulley_d/2,0,0]) | 252 | rotate([0,0,45]) translate([pulley_d/2,0,0]) |
253 | rotate([-90,0,0]) | 253 | rotate([-90,0,0]) |
254 | translate([0,0,mount_d/sqrt(2)/2+mount_screw_d+epsilon]) | 254 | translate([0,0,mount_d/sqrt(2)/2+mount_screw_d+epsilon]) |
255 | rotate([0,0,180]) { | 255 | rotate([0,0,180]) { |
256 | pushfit(pf); | 256 | pushfit(pf); |
257 | cylinder(d=filament_guide_d,h=gearbox_d,center=true,$fn=fnd*filament_guide_d); | 257 | cylinder(d=filament_guide_d,h=gearbox_d,center=true,$fn=fnd*filament_guide_d); |
258 | translate([0,-filament_guide_d/2/sqrt(2),0]) | 258 | translate([0,-filament_guide_d/2/sqrt(2),0]) |
259 | rotate([0,0,45]) | 259 | rotate([0,0,45]) |
260 | cube(size=[filament_guide_d/2,filament_guide_d/2,gearbox_d],center=true); | 260 | cube(size=[filament_guide_d/2,filament_guide_d/2,gearbox_d],center=true); |
261 | }//rotate translate rotate translate rotate translate | 261 | }//rotate translate rotate translate rotate translate |
262 | // pulley | 262 | // pulley |
263 | cylinder(d=pulley_d+pulley_clearance,h=body_h+1,$fn=fnd*(pulley_d+pulley_clearance)); | 263 | cylinder(d=pulley_d+pulley_clearance,h=body_h+1,$fn=fnd*(pulley_d+pulley_clearance)); |
264 | // leverspace | 264 | // leverspace |
265 | hull() for(x=[0,gearbox_d]) | 265 | hull() for(x=[0,gearbox_d]) |
266 | rotate([0,0,45]) | 266 | rotate([0,0,45]) |
267 | translate([x,0,ls_z-ls_h/2]) | 267 | translate([x,0,ls_z-ls_h/2]) |
268 | cylinder(d=idler_d+idler_clearance,h=ls_h,$fn=fnd*(idler_d+idler_clearance)); | 268 | cylinder(d=idler_d+idler_clearance,h=ls_h,$fn=fnd*(idler_d+idler_clearance)); |
269 | 269 | ||