|
@@ -432,6 +432,31 @@ module y_carriage_posts() {
|
432
|
432
|
}
|
433
|
433
|
}
|
434
|
434
|
|
|
435
|
+module carriage_spacer() {
|
|
436
|
+ difference() {
|
|
437
|
+ cube([y_carriage_x, y_carriage_y, carriage_spacer_height]);
|
|
438
|
+
|
|
439
|
+ translate([y_carriage_x / 2, y_carriage_y / 2, 0])
|
|
440
|
+ plate_holes(carriage_spacer_height);
|
|
441
|
+
|
|
442
|
+ translate([carriage_spacer_cut_x / 2 * sqrt(2) + y_carriage_x / 2, -1, -1])
|
|
443
|
+ rotate([0, -90, 45])
|
|
444
|
+ prism(carriage_spacer_height + 2, carriage_spacer_cut_x, carriage_spacer_cut_x);
|
|
445
|
+
|
|
446
|
+ translate([-carriage_spacer_cut_x / 2 * sqrt(2) + y_carriage_x / 2, y_carriage_y + 1, -1])
|
|
447
|
+ rotate([0, -90, 225])
|
|
448
|
+ prism(carriage_spacer_height + 2, carriage_spacer_cut_x, carriage_spacer_cut_x);
|
|
449
|
+
|
|
450
|
+ translate([-1, y_carriage_y / 2 - carriage_spacer_cut_y / 2 * sqrt(2), -1])
|
|
451
|
+ rotate([0, -90, -45])
|
|
452
|
+ prism(carriage_spacer_height + 2, carriage_spacer_cut_y, carriage_spacer_cut_y);
|
|
453
|
+
|
|
454
|
+ translate([y_carriage_x + 1, y_carriage_y / 2 + carriage_spacer_cut_y / 2 * sqrt(2), -1])
|
|
455
|
+ rotate([0, -90, -225])
|
|
456
|
+ prism(carriage_spacer_height + 2, carriage_spacer_cut_y, carriage_spacer_cut_y);
|
|
457
|
+ }
|
|
458
|
+}
|
|
459
|
+
|
435
|
460
|
// also used as base for x-carriage
|
436
|
461
|
// axis = 0 --> all holes, usable for both
|
437
|
462
|
// axis = 1 --> holes for x-carriage
|
|
@@ -505,8 +530,13 @@ module y_carriage(axis = 0) {
|
505
|
530
|
|
506
|
531
|
module y_axis() {
|
507
|
532
|
translate([y_carriage_x / 2, y_axis_animation_position, 20 + y_carriage_h + y_carriage_rail_dist])
|
508
|
|
- rotate([0, 180, 0])
|
509
|
|
- y_carriage(2);
|
|
533
|
+ rotate([0, 180, 0]) {
|
|
534
|
+ y_carriage(2);
|
|
535
|
+
|
|
536
|
+ color("cyan")
|
|
537
|
+ translate([0, 0, -carriage_spacer_height - 0.01])
|
|
538
|
+ carriage_spacer();
|
|
539
|
+ }
|
510
|
540
|
|
511
|
541
|
color("grey")
|
512
|
542
|
translate([-10, 0, 0])
|
|
@@ -594,7 +624,7 @@ module assembly_y_axis_plate() {
|
594
|
624
|
translate([0, -y_carriage_y / 2 - y_axis_animation_position, 0])
|
595
|
625
|
y_axis();
|
596
|
626
|
|
597
|
|
- %translate([-plate_x / 2, -plate_y / 2, 20 + y_carriage_h + y_carriage_rail_dist])
|
|
627
|
+ %translate([-plate_x / 2, -plate_y / 2, 20 + y_carriage_h + y_carriage_rail_dist + carriage_spacer_height])
|
598
|
628
|
plate();
|
599
|
629
|
}
|
600
|
630
|
|
|
@@ -606,13 +636,27 @@ module assembly_x_axis() {
|
606
|
636
|
assembly_y_axis_plate();
|
607
|
637
|
}
|
608
|
638
|
|
609
|
|
-bottom_support_len = 500;
|
610
|
|
-bottom_support_off = 80;
|
611
|
|
-
|
612
|
|
-use_double_supports = false;
|
613
|
|
-
|
614
|
639
|
module rail_foot() {
|
615
|
|
-
|
|
640
|
+ difference() {
|
|
641
|
+ union() {
|
|
642
|
+ sphere(d = foot_dia);
|
|
643
|
+
|
|
644
|
+ translate([0, 0, foot_dia / 2])
|
|
645
|
+ sphere(d = foot_nut_base_dia);
|
|
646
|
+ }
|
|
647
|
+
|
|
648
|
+ translate([-foot_dia / 2 - 1, -foot_dia / 2 - 1, -foot_dia / 2 - 1])
|
|
649
|
+ cube([foot_dia + 2, foot_dia + 2, foot_dia / 2 + 1]);
|
|
650
|
+
|
|
651
|
+ translate([-foot_nut_base_dia / 2 - 1, -foot_nut_base_dia / 2 - 1, foot_dia / 2])
|
|
652
|
+ cube([foot_nut_base_dia + 2, foot_nut_base_dia + 2, foot_nut_base_dia / 2 + 1]);
|
|
653
|
+
|
|
654
|
+ translate([0, 0, -1])
|
|
655
|
+ cylinder(d = foot_screw_dia, h = foot_dia / 2 + 2);
|
|
656
|
+
|
|
657
|
+ translate([0, 0, -1])
|
|
658
|
+ cylinder(d = foot_screw_head_dia, h = foot_screw_head_height + 1);
|
|
659
|
+ }
|
616
|
660
|
}
|
617
|
661
|
|
618
|
662
|
module assembly() {
|
|
@@ -632,7 +676,15 @@ module assembly() {
|
632
|
676
|
translate([x_axis_rail_len - 20 - right_support_off, -right_support_len - 10, -20])
|
633
|
677
|
rail_2020_y(right_support_len, "right support");
|
634
|
678
|
|
635
|
|
- // TODO feet
|
|
679
|
+ for (i = [0, 1])
|
|
680
|
+ for (j = [1, -1])
|
|
681
|
+ translate([i * x_axis_rail_len - (i * 2 - 1) * (right_support_off + 10), j * (right_support_len - 10), -40 - 0]) {
|
|
682
|
+ %color("grey")
|
|
683
|
+ cylinder(d = 5.0, h = 25);
|
|
684
|
+
|
|
685
|
+ %color("green")
|
|
686
|
+ rail_foot();
|
|
687
|
+ }
|
636
|
688
|
} else {
|
637
|
689
|
color("grey")
|
638
|
690
|
translate([x_axis_rail_len / 2, 0, -40])
|
|
@@ -641,13 +693,21 @@ module assembly() {
|
641
|
693
|
translate([x_axis_rail_len / 2 - bottom_support_off, -bottom_support_len / 2, 0])
|
642
|
694
|
rail_2020_y(bottom_support_len, "bottom supports");
|
643
|
695
|
|
644
|
|
- // TODO feet
|
|
696
|
+ for (i = [0, 1])
|
|
697
|
+ for (j = [1, -1])
|
|
698
|
+ translate([i * x_axis_rail_len - (i * 2 - 1) * (bottom_support_off - 10), j * (bottom_support_len / 2 - 40), -40 - 20]) {
|
|
699
|
+ %color("grey")
|
|
700
|
+ cylinder(d = 5.0, h = 25);
|
|
701
|
+
|
|
702
|
+ %color("green")
|
|
703
|
+ rail_foot();
|
|
704
|
+ }
|
645
|
705
|
}
|
646
|
706
|
}
|
647
|
707
|
}
|
648
|
708
|
|
649
|
709
|
module xy_table() {
|
650
|
|
- translate([-point_that_reaches_everywhere_x, -point_that_reaches_everywhere_y, -40 + -40 + (y_carriage_rail_dist + y_carriage_h) * -2 + -plate_z])
|
|
710
|
+ translate([-point_that_reaches_everywhere_x, -point_that_reaches_everywhere_y, -40 + -40 + (y_carriage_rail_dist + y_carriage_h) * -2 + -plate_z - carriage_spacer_height])
|
651
|
711
|
assembly();
|
652
|
712
|
}
|
653
|
713
|
|
|
@@ -658,6 +718,7 @@ module xy_table() {
|
658
|
718
|
//dispenser();
|
659
|
719
|
//rail_2020_x(100);
|
660
|
720
|
//rail_wheel();
|
|
721
|
+//rail_foot();
|
661
|
722
|
|
662
|
723
|
//motor_mount(1);
|
663
|
724
|
//motor_mount(2);
|
|
@@ -677,6 +738,7 @@ module xy_table() {
|
677
|
738
|
//y_carriage(1);
|
678
|
739
|
//y_carriage(2);
|
679
|
740
|
//x_carriage();
|
|
741
|
+//carriage_spacer();
|
680
|
742
|
|
681
|
743
|
//y_axis();
|
682
|
744
|
//x_axis();
|