|
@@ -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
|
|