summaryrefslogtreecommitdiffabout
authorMichael Krelin <hacker@klever.net>2016-06-13 16:01:15 (UTC)
committer Michael Krelin <hacker@klever.net>2016-06-13 16:01:15 (UTC)
commit1afb1ce3d5afc54358f94b19e45d73f382a8246a (patch) (unidiff)
tree8d6d69884b968cc5fa131b5b6e5cf09da46a3922
parentdb98325df397142e712aceca25a822c84a742b45 (diff)
downloadfanductory-1afb1ce3d5afc54358f94b19e45d73f382a8246a.zip
fanductory-1afb1ce3d5afc54358f94b19e45d73f382a8246a.tar.gz
fanductory-1afb1ce3d5afc54358f94b19e45d73f382a8246a.tar.bz2
dualism: no duct tails
for now
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--fanduct.scad16
1 files changed, 10 insertions, 6 deletions
diff --git a/fanduct.scad b/fanduct.scad
index 1090e95..fc57c57 100644
--- a/fanduct.scad
+++ b/fanduct.scad
@@ -245,100 +245,104 @@ module fanduct(type=type,ductshape=ductshape,dual=dual) {
245 245
246 // ***air intake 246 // ***air intake
247 module intake(what) { 247 module intake(what) {
248 module placeit() { 248 module placeit() {
249 translate([-fanduct_ir-2*fanduct_shell-fanduct_w-inlet_away,0,fanduct_shell]) 249 translate([-fanduct_ir-2*fanduct_shell-fanduct_w-inlet_away,0,fanduct_shell])
250 rotate([0,-90,0]) 250 rotate([0,-90,0])
251 children(); 251 children();
252 } 252 }
253 if(what=="in") { 253 if(what=="in") {
254 placeit() translate([0,-inlet_w/2,0]) { 254 placeit() translate([0,-inlet_w/2,0]) {
255 difference() { 255 difference() {
256 cube(size=[inlet_h,inlet_w,inlet_long_l+fanduct_shell]); 256 cube(size=[inlet_h,inlet_w,inlet_long_l+fanduct_shell]);
257 translate([inlet_h+fanduct_shell,0,inlet_long_l+fanduct_shell]) 257 translate([inlet_h+fanduct_shell,0,inlet_long_l+fanduct_shell])
258 rotate([-90,0,0]) 258 rotate([-90,0,0])
259 translate([0,0,-1]) 259 translate([0,0,-1])
260 cylinder(r=inlet_h,h=inlet_w+2*fanduct_shell+2,$fn=inlet_h*4); 260 cylinder(r=inlet_h,h=inlet_w+2*fanduct_shell+2,$fn=inlet_h*4);
261 } 261 }
262 // supports 262 // supports
263 for(i=[-1,0,1]) 263 for(i=[-1,0,1])
264 translate([-fanduct_shell, 264 translate([-fanduct_shell,
265 (i+1)*(inlet_w-extrusion_width)/2, 265 (i+1)*(inlet_w-extrusion_width)/2,
266 -inlet_away-fanduct_w/2]) 266 -inlet_away-fanduct_w/2])
267 cube(size=[fanduct_shell, 267 cube(size=[fanduct_shell,
268 extrusion_width, 268 extrusion_width,
269 inlet_long_l+fanduct_shell+inlet_away+fanduct_w/2]); 269 inlet_long_l+fanduct_shell+inlet_away+fanduct_w/2]);
270 } 270 }
271 hull() { 271 hull() {
272 placeit() translate([-fanduct_shell,-inlet_w/2-fanduct_shell,0]) 272 placeit() translate([-fanduct_shell,-inlet_w/2-fanduct_shell,0])
273 cube(size=[inlet_h+2*fanduct_shell,inlet_w+2*fanduct_shell,fanduct_shell]); 273 cube(size=[inlet_h+2*fanduct_shell,inlet_w+2*fanduct_shell,fanduct_shell]);
274 translate([-fanduct_ir-fanduct_shell-fanduct_w/2,0,0]) 274 translate([-fanduct_ir-fanduct_shell-fanduct_w/2,0,0])
275 translate([0,-inlet_w/2-fanduct_shell/2,0]) 275 translate([0,-inlet_w/2-fanduct_shell/2,0])
276 cube(size=[1,inlet_w+fanduct_shell,fanduct_shell*2+fanduct_h]); 276 cube(size=[1,inlet_w+fanduct_shell,fanduct_shell*2+fanduct_h]);
277 } 277 }
278 }else if(what=="out") { 278 }else if(what=="out") {
279 placeit() translate([fanduct_shell,-inlet_w/2+fanduct_shell,0]) 279 placeit() translate([fanduct_shell,-inlet_w/2+fanduct_shell,0])
280 cube(size=[inlet_h-2*fanduct_shell,inlet_w-2*fanduct_shell,inlet_long_l+fanduct_shell+1]); 280 cube(size=[inlet_h-2*fanduct_shell,inlet_w-2*fanduct_shell,inlet_long_l+fanduct_shell+1]);
281 hull() { 281 hull() {
282 placeit() translate([fanduct_shell,-inlet_w/2+fanduct_shell,0]) 282 placeit() translate([fanduct_shell,-inlet_w/2+fanduct_shell,0])
283 cube(size=[inlet_h-2*fanduct_shell,inlet_w-2*fanduct_shell,fanduct_shell]); 283 cube(size=[inlet_h-2*fanduct_shell,inlet_w-2*fanduct_shell,fanduct_shell]);
284 translate([-fanduct_ir-fanduct_shell-fanduct_w/2,0,fanduct_shell]) 284 translate([-fanduct_ir-fanduct_shell-fanduct_w/2,0,fanduct_shell])
285 translate([0,-inlet_w/2+fanduct_shell,0]) 285 translate([0,-inlet_w/2+fanduct_shell,0])
286 cube(size=[1,inlet_w-2*fanduct_shell,fanduct_h]); 286 cube(size=[1,inlet_w-2*fanduct_shell,fanduct_h]);
287 } 287 }
288 } 288 }
289 } 289 }
290 290
291 // ***DUCT TAILS!!! WOO-OO! (every day they're out there making duct tails…) 291 // ***DUCT TAILS!!! WOO-OO! (every day they're out there making duct tails…)
292 module tails(what) { 292 module tails(what) {
293 if(what=="in") { 293 if(dual) {
294 for(mx=[0,1]) mirror([mx,0,0]) 294 // XXX: not sure if it will ever be
295 translate([fanduct_ir+fanduct_shell+fanduct_w/2,0,fanduct_shell+fanduct_h/2]) 295 }else{
296 rotate([90,0,90]) 296 if(what=="in") {
297 translate([0,0,-snapper_d/2]) 297 for(mx=[0,1]) mirror([mx,0,0])
298 snapper(d=snapper_d,o=snapper_overlap,side=0,l=fanduct_h*3/2+fanduct_shell); 298 translate([fanduct_ir+fanduct_shell+fanduct_w/2,0,fanduct_shell+fanduct_h/2])
299 rotate([90,0,90])
300 translate([0,0,-snapper_d/2])
301 snapper(d=snapper_d,o=snapper_overlap,side=0,l=fanduct_h*3/2+fanduct_shell);
302 }
299 } 303 }
300 } 304 }
301 305
302 module parts(what) { 306 module parts(what) {
303 union() { 307 union() {
304 duct(what); 308 duct(what);
305 marks(what); 309 marks(what);
306 output(what); 310 output(what);
307 intake(what); 311 intake(what);
308 tails(what); 312 tails(what);
309 } 313 }
310 } 314 }
311 315
312 difference() { 316 difference() {
313 parts("in"); 317 parts("in");
314 parts("out"); 318 parts("out");
315 } 319 }
316 intersection() { 320 intersection() {
317 union() { 321 union() {
318 output("airguides"); 322 output("airguides");
319 sphere(d=epsilon); 323 sphere(d=epsilon);
320 } 324 }
321 union() { 325 union() {
322 duct("in"); output("in"); intake("in"); 326 duct("in"); output("in"); intake("in");
323 } 327 }
324 } 328 }
325} 329}
326 330
327view="*"; // hcut|vcut|* 331view="*"; // hcut|vcut|*
328 332
329hinfinity=4*(fanduct_ir+fanduct_shell*2+fanduct_w+inlet_away); 333hinfinity=4*(fanduct_ir+fanduct_shell*2+fanduct_w+inlet_away);
330vinfinity=2*(fanduct_shell*2+fanduct_h+inlet_h); 334vinfinity=2*(fanduct_shell*2+fanduct_h+inlet_h);
331if(view=="hcut") { 335if(view=="hcut") {
332 difference() { 336 difference() {
333 fanduct(); 337 fanduct();
334 translate([-hinfinity/2,-hinfinity/2,fanduct_shell+fanduct_h/2]) 338 translate([-hinfinity/2,-hinfinity/2,fanduct_shell+fanduct_h/2])
335 cube(size=[hinfinity,hinfinity,vinfinity]); 339 cube(size=[hinfinity,hinfinity,vinfinity]);
336 } 340 }
337}else if(view=="vcut") { 341}else if(view=="vcut") {
338 difference() { 342 difference() {
339 fanduct(); 343 fanduct();
340 translate([-hinfinity/2,0,-vinfinity/2]) 344 translate([-hinfinity/2,0,-vinfinity/2])
341 cube(size=[hinfinity,hinfinity,vinfinity]); 345 cube(size=[hinfinity,hinfinity,vinfinity]);
342 } 346 }
343}else fanduct(); 347}else fanduct();
344/* vim:set sw=1 ai: */ 348/* vim:set sw=1 ai: */