Thomas Buck 6 лет назад
Родитель
Сommit
1dc89719da
1 измененных файлов: 87 добавлений и 37 удалений
  1. 87
    37
      lib/linear_bearing.scad

+ 87
- 37
lib/linear_bearing.scad Просмотреть файл

@@ -74,7 +74,13 @@ e3d_clamp_cut = 0.2; // x2
74 74
 e3d_clamp_hole_off = 4;
75 75
 e3d_hole_dia = 3.2;
76 76
 
77
-draw_x_carriage = true;
77
+fan_mount_wall = 5;
78
+fan_mount_inset = 5;
79
+fan_width = 40;
80
+fan_height = 20;
81
+fan_hole_off = 3; // TODO measure!
82
+
83
+draw_x_carriage = false;
78 84
 draw_y_carriage = false;
79 85
 draw_y_carriage_idlers = true;
80 86
 draw_rail_len = 200;
@@ -90,6 +96,13 @@ module lm8uu() {
90 96
 
91 97
 // TODO add cable tie canal for lm8uu mounting
92 98
 
99
+// TODO mounting holes on actual carriage
100
+
101
+// TODO also universal mounting holes
102
+// at front and back of carriage.
103
+// front: auto level sensor
104
+// back: filament fan
105
+
93 106
 // TODO get ready to actually print these
94 107
 
95 108
 module generate_spacer(pos) {
@@ -422,53 +435,88 @@ module e3d_v6_triple_mount() {
422 435
             cylinder(d = e3d_upper_small_dia + e3d_clamp_dia_add, h = e3d_clamp_height + 2);
423 436
     }
424 437
     
425
-    fan_mount_wall = 5;
426
-    fan_mount_inset = 5;
427
-    fan_width = 40;
428
-    fan_height = 20;
429
-    
438
+    e3d_v6_triple_fan();
439
+}
440
+
441
+module simple_fan() {
442
+    difference() {
443
+        cube([fan_height, fan_width, fan_width]);
444
+        translate([-1, fan_width / 2, fan_width / 2])
445
+            rotate([0, 90, 0])
446
+            cylinder(d = fan_width - 5, h = fan_height + 2);
447
+    }
448
+}
449
+
450
+module fan_mount() {
451
+    difference() {
452
+        cube([fan_mount_wall, fan_width, fan_width + x_carriage_wall]);
453
+        
454
+        translate([-1, fan_mount_inset, fan_mount_inset])
455
+            cube([fan_mount_wall + 2, fan_width - (fan_mount_inset * 2), fan_width - (fan_mount_inset * 2)]);
456
+    }
457
+}
458
+
459
+module e3d_v6_triple_fan() {
430 460
     difference() {
431 461
         union() {
432 462
             translate([x_carriage_width, (x_carriage_length - fan_width) / 2, -fan_width]) {
433
-                // hotend cooling fan
434
-                color("grey")
463
+                // hotend cooling fan on right side
435 464
                 %translate([fan_mount_wall, 0, 0])
436
-                difference() {
437
-                    cube([fan_height, fan_width, fan_width]);
438
-                    translate([-1, fan_width / 2, fan_width / 2])
439
-                        rotate([0, 90, 0])
440
-                        cylinder(d = fan_width - 5, h = fan_height + 2);
441
-                }
465
+                    simple_fan();
442 466
                 
443
-                // fan mount
467
+                // hotend cooling fan on left side
468
+                %translate([-x_carriage_width - fan_height - fan_mount_wall, 0, 0])
469
+                    simple_fan();
470
+                
471
+                // fan mount on right side
444 472
                 color("orange")
445
-                difference() {
446
-                    cube([fan_mount_wall, fan_width, fan_width + x_carriage_wall]);
447
-                    
448
-                    translate([-1, fan_mount_inset, fan_mount_inset])
449
-                        cube([fan_mount_wall + 2, fan_width - (fan_mount_inset * 2), fan_width - (fan_mount_inset * 2)]);
450
-                }
473
+                fan_mount();
474
+                
475
+                // fan mount on left side
476
+                color("orange")
477
+                translate([-x_carriage_width - fan_mount_wall, 0, 0])
478
+                    fan_mount();
451 479
             }
452 480
             
453 481
             // fan duct
454 482
             color("orange")
455 483
             translate([x_carriage_width, (x_carriage_length - fan_width) / 2, 0])
456 484
             difference() {
457
-                fan_duct(40, (fan_width - 40) / 2);
458
-                fan_duct(37, (fan_width - 37) / 2);
485
+                fan_duct(fan_width, 0);
486
+                fan_duct(fan_width, 3);
459 487
             }
460 488
         }
461 489
         
462
-        // TODO mounting holes
463
-        // TODO fan holes
490
+        // mounting holes on carriage
491
+        translate([-fan_mount_wall - fan_height - 1, x_carriage_length / 2, x_carriage_wall / 2])
492
+        for (i = [-1 : 2 : 1]) {
493
+            translate([0, i * ((fan_width / 2) - 8), 0])
494
+                rotate([0, 90, 0])
495
+                cylinder(d = 3.2, h = x_carriage_width + (2 * (fan_height + fan_mount_wall + 1)));
496
+        }
497
+        
498
+        // fan holes (self-tapping)
499
+        translate([-fan_mount_wall - fan_height - 1, x_carriage_length / 2, -fan_width / 2])
500
+        for (i = [-1 : 2 : 1]) {
501
+            for (j = [-1 : 2 : 1]) {
502
+                translate([0, i * ((fan_width / 2) - fan_hole_off), j * ((fan_width / 2) - fan_hole_off)])
503
+                    rotate([0, 90, 0])
504
+                    cylinder(d = 2.7, h = fan_height + fan_mount_wall + 5);
505
+                translate([fan_height + fan_mount_wall + x_carriage_width - 3, i * ((fan_width / 2) - fan_hole_off), j * ((fan_width / 2) - fan_hole_off)])
506
+                    rotate([0, 90, 0])
507
+                    cylinder(d = 2.7, h = fan_height + fan_mount_wall + 5);
508
+            }
509
+        }
464 510
     }
465 511
 }
466 512
 
467
-module fan_duct(size, off) {
513
+module fan_duct(fan_width, diff) {
514
+    size = fan_width - diff;
515
+    off = (fan_width - size) / 2;
468 516
     difference() {
469 517
         translate([0, off, -size - off]) {
470 518
             hull() {
471
-                cube([1, size, size]);
519
+                cube([1 + (diff / 10), size, size]);
472 520
                 translate([-10, 0, 10])
473 521
                     cube([1, size, size - 11]);
474 522
             }
@@ -493,22 +541,24 @@ module fan_duct(size, off) {
493 541
             hull() {
494 542
                 translate([-55, -6, 17])
495 543
                     cube([1, size + 12, size - 20]);
496
-                if (off > 0) {
497
-                    translate([-71, 15, 17])
498
-                        cube([1, size - 12, size - 20]);
499
-                } else {
500
-                    translate([-70, 15, 17])
501
-                        cube([1, size - 12, size - 20]);
502
-                }
544
+                translate([-70, 15 - 10, 17])
545
+                        cube([1, size - 12 + 10, size - 20]);
546
+            }
547
+            hull() {
548
+                translate([-70, 15 - 10, 17])
549
+                        cube([1, size - 12 + 10, size - 20]);
550
+                
551
+                translate([-80 - (off / 10), 0, 0])
552
+                    cube([1 + (off / 10), size, size]);
503 553
             }
504 554
         }
505 555
         
506 556
         translate([-26, 29.5, -size - 20])
507
-            cylinder(d = e3d_max_dia + 3, h = 100);
557
+            cylinder(d = e3d_max_dia + 3 - diff, h = 100);
508 558
         translate([-26 - e3d_v6_dist_x, 29.5, -size - 20])
509
-            cylinder(d = e3d_max_dia + 3, h = 100);
559
+            cylinder(d = e3d_max_dia + 3 - diff, h = 100);
510 560
         translate([-26 - e3d_v6_dist_x / 2, 29.5 - e3d_v6_dist_y, -size - 20])
511
-            cylinder(d = e3d_max_dia + 3, h = 100);
561
+            cylinder(d = e3d_max_dia + 3 - diff, h = 100);
512 562
     }
513 563
 }
514 564
 

Загрузка…
Отмена
Сохранить