|
|
@@ -54,7 +54,10 @@ wall = 1;
|
|
|
mount_radius = 3.5;
|
|
|
|
|
|
// height of mount
|
|
|
-mount_height = 8;
|
|
|
+mount_height = 30;
|
|
|
+
|
|
|
+// height of sleeve
|
|
|
+sleeve_height = 25;
|
|
|
|
|
|
//// end of model parameters
|
|
|
////
|
|
|
@@ -243,7 +246,7 @@ module mount (angles, wall, separation) {
|
|
|
// indentations that match the lower capsule holders
|
|
|
for (rot = angles) {
|
|
|
rotate([0, 0, rot + 45]) {
|
|
|
- translate([-mount_radius * 1.6, mount_radius * 1.6, mount_height / 3]) {
|
|
|
+ translate([-mount_radius * 1.6, mount_radius * 1.6, 8.0 / 3]) {
|
|
|
rotate([0, 90 - elev_angle, -45]) {
|
|
|
cylinder(r = capsule_radius + wall, h = capsule_height * 2, $fn = facets);
|
|
|
}
|
|
|
@@ -258,11 +261,44 @@ module mount (angles, wall, separation) {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+ // slice it open so we can pop in cables
|
|
|
+ rotate([0, 0, 45]) {
|
|
|
+ translate([mount_radius - wall / 2, - wall / 2, -mount_height]) {
|
|
|
+ cube([2 * wall, wall, mount_height]);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+module mount_sleeve (wall, separation) {
|
|
|
+ translate([0, 0, -(separation + 0.0)]) {
|
|
|
+ difference() {
|
|
|
+ union() {
|
|
|
+ // main mount cylinder
|
|
|
+ translate([0, 0, -mount_height]) {
|
|
|
+ difference() {
|
|
|
+ cylinder(r = mount_radius + 2 * wall, h = sleeve_height, $fn = facets);
|
|
|
+ // make the hole for the mount (* 1.5 to cut the ridge as well)
|
|
|
+ cylinder(r = mount_radius + wall, h = sleeve_height * 1.5, $fn = facets);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // spine that fits into slice of mount body
|
|
|
+ rotate([0, 0, 45]) {
|
|
|
+ translate([mount_radius - wall, - wall / 2, -mount_height]) {
|
|
|
+ cube([2 * wall, wall, sleeve_height]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // cut a bit less that one half of the sleeve so it fits around the body
|
|
|
+ rotate([0, 0, 45]) {
|
|
|
+ translate([-mount_radius - 3 * wall, - (mount_radius + wall) * 1.5, -mount_height]) {
|
|
|
+ cube([mount_radius + wall, (mount_radius + wall) * 3, sleeve_height]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
|
|
|
box_height = 4.0;
|
|
|
|
|
|
@@ -378,9 +414,11 @@ if (rendermic == 1) {
|
|
|
capsule(45, elev_angle, leg_angles_top, 60, 0);
|
|
|
capsule(-135, elev_angle, leg_angles_top, 60, 0);
|
|
|
capsule(-45, -elev_angle, leg_angles_bot, 0, 1);
|
|
|
- capsule(135, -elev_angle, leg_angles_bot, 0, 1);
|
|
|
+ capsule(135, -elev_angle, leg_angles_bot, 0, 1);
|
|
|
// the mount
|
|
|
mount([-45, 135], 1, capsule_bottom);
|
|
|
+ // the sleeve closing it
|
|
|
+ mount_sleeve(1, capsule_bottom);
|
|
|
}
|
|
|
|
|
|
// print all the parts separately
|
|
|
@@ -391,16 +429,18 @@ if (rendermic == 0) {
|
|
|
part_height = 0;
|
|
|
part_sep = capsule_radius * 2.5;
|
|
|
// #3
|
|
|
- *translate([part_sep, -part_sep, part_height]) { capsule(0, part_rot, leg_angles_top, 60, 0); }
|
|
|
+ translate([part_sep, -part_sep, part_height]) { capsule(0, part_rot, leg_angles_top, 60, 0); }
|
|
|
if (renderset != 0) {
|
|
|
// #4
|
|
|
- *translate([part_sep, part_sep, part_height]) { capsule(0, part_rot, leg_angles_top, 60, 0); }
|
|
|
+ translate([part_sep, part_sep, part_height]) { capsule(0, part_rot, leg_angles_top, 60, 0); }
|
|
|
// #2
|
|
|
translate([-part_sep, part_sep, part_height]) { capsule(0, part_rot, leg_angles_bot, -90, 1); }
|
|
|
// #1
|
|
|
translate([-part_sep, -part_sep, part_height]) { capsule(0, part_rot, leg_angles_bot, 90, 1); }
|
|
|
- // mount
|
|
|
+ // mount body
|
|
|
translate([0, 0, mount_height]) { mount([-45, 135], 1, 0); }
|
|
|
+ // mount sleeve
|
|
|
+ translate([mount_radius * 8, 0, mount_height]) { mount_sleeve(1, 0); }
|
|
|
// add connecting ridges to make it all one part
|
|
|
difference() {
|
|
|
for (rot_a = [-45, 45]) {
|