|
@@ -105,6 +105,9 @@ box_radius = pcb_front + (pcb_thickness + pcb_tfit) + pcb_back + 2 * wall;
|
|
|
// calculated main body corner radius
|
|
// calculated main body corner radius
|
|
|
mount_corner = box_radius - pcb_width / 2 + pcb_slot_depth + 4.0;
|
|
mount_corner = box_radius - pcb_width / 2 + pcb_slot_depth + 4.0;
|
|
|
|
|
|
|
|
|
|
+// render span joints to join all three main assemblies
|
|
|
|
|
+render_snap_joints = false;
|
|
|
|
|
+
|
|
|
// body to flares snap joint arm slot width
|
|
// body to flares snap joint arm slot width
|
|
|
snap_joint_slot_w = 0.75;
|
|
snap_joint_slot_w = 0.75;
|
|
|
|
|
|
|
@@ -199,28 +202,32 @@ module tetra_mount_body(height, radius, corner, lower_lip, upper_lip, clear) {
|
|
|
rounded_block_relative(lower_lip, radius, radius, corner, -(wall + lip_fit));
|
|
rounded_block_relative(lower_lip, radius, radius, corner, -(wall + lip_fit));
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- // slots for snap joint hooks
|
|
|
|
|
- // lower
|
|
|
|
|
- for (m=[-1, 1]) rotate([0, 90, 0]) {
|
|
|
|
|
- translate([-lower_lip * 3/4, (radius - wall/2)*m, -(snap_joint_hook_w/2 + 0.25)]) {
|
|
|
|
|
- cylinder(r = snap_joint_hook_r, h = snap_joint_hook_w + 0.5, $fn = facets);
|
|
|
|
|
|
|
+ if (render_snap_joints) {
|
|
|
|
|
+ // slots for snap joint hooks
|
|
|
|
|
+ // lower
|
|
|
|
|
+ for (m=[-1, 1]) rotate([0, 90, 0]) {
|
|
|
|
|
+ translate([-lower_lip * 3/4, (radius - wall/2)*m, -(snap_joint_hook_w/2 + 0.25)]) {
|
|
|
|
|
+ cylinder(r = snap_joint_hook_r, h = snap_joint_hook_w + 0.5, $fn = facets);
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
- }
|
|
|
|
|
- // upper
|
|
|
|
|
- for (m=[-1, 1]) rotate([0, 90, 0]) {
|
|
|
|
|
- translate([- height + upper_lip * 3/4, (radius - wall/2)*m, -(snap_joint_hook_w/2 + 0.25)]) {
|
|
|
|
|
- cylinder(r = snap_joint_hook_r, h = snap_joint_hook_w + 0.5, $fn = facets);
|
|
|
|
|
|
|
+ // upper
|
|
|
|
|
+ for (m=[-1, 1]) rotate([0, 90, 0]) {
|
|
|
|
|
+ translate([- height + upper_lip * 3/4, (radius - wall/2)*m, -(snap_joint_hook_w/2 + 0.25)]) {
|
|
|
|
|
+ cylinder(r = snap_joint_hook_r, h = snap_joint_hook_w + 0.5, $fn = facets);
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- // upper lip is too thin, reinforce the back of the snap joint hook holes
|
|
|
|
|
- for (r = [0, 180]) rotate([0, 90, r]) {
|
|
|
|
|
- translate([- height + upper_lip * 3/4, (radius - wall), -(snap_joint_hook_w/2 + 0.25)]) {
|
|
|
|
|
- difference() {
|
|
|
|
|
- cylinder(r = snap_joint_hook_r * 1.25, h = snap_joint_hook_w + 0.5, $fn = facets);
|
|
|
|
|
- translate([- snap_joint_hook_r * 1.25, - wall, 0]) {
|
|
|
|
|
- cube([snap_joint_hook_r * 3, snap_joint_hook_r * 3, snap_joint_hook_w * 1.5]);
|
|
|
|
|
|
|
+ if (render_snap_joints) {
|
|
|
|
|
+ // upper lip is too thin, reinforce the back of the snap joint hook holes
|
|
|
|
|
+ for (r = [0, 180]) rotate([0, 90, r]) {
|
|
|
|
|
+ translate([- height + upper_lip * 3/4, (radius - wall), -(snap_joint_hook_w/2 + 0.25)]) {
|
|
|
|
|
+ difference() {
|
|
|
|
|
+ cylinder(r = snap_joint_hook_r * 1.25, h = snap_joint_hook_w + 0.5, $fn = facets);
|
|
|
|
|
+ translate([- snap_joint_hook_r * 1.25, - wall, 0]) {
|
|
|
|
|
+ cube([snap_joint_hook_r * 3, snap_joint_hook_r * 3, snap_joint_hook_w * 1.5]);
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -264,21 +271,25 @@ module tetra_mount_flare(height, lip, transition, bot_radius, bot_corner, top_ra
|
|
|
difference() {
|
|
difference() {
|
|
|
union() {
|
|
union() {
|
|
|
rounded_block(height, bot_radius, bot_radius, bot_corner);
|
|
rounded_block(height, bot_radius, bot_radius, bot_corner);
|
|
|
- // make snap joint arm thicker
|
|
|
|
|
- for (r = [0, 180]) rotate([0, 0, r]) {
|
|
|
|
|
- translate([- snap_joint_hook_w - snap_joint_slot_w / 2, bot_radius, 0]) {
|
|
|
|
|
- cube([snap_joint_hook_w * 2 + snap_joint_slot_w, wall / 2, lip * 1.25]);
|
|
|
|
|
|
|
+ if (render_snap_joints) {
|
|
|
|
|
+ // make snap joint arm thicker
|
|
|
|
|
+ for (r = [0, 180]) rotate([0, 0, r]) {
|
|
|
|
|
+ translate([- snap_joint_hook_w - snap_joint_slot_w / 2, bot_radius, 0]) {
|
|
|
|
|
+ cube([snap_joint_hook_w * 2 + snap_joint_slot_w, wall / 2, lip * 1.25]);
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
rounded_block_relative(height, bot_radius, bot_radius, bot_corner, -(2 * wall));
|
|
rounded_block_relative(height, bot_radius, bot_radius, bot_corner, -(2 * wall));
|
|
|
// cut flange to mount on body
|
|
// cut flange to mount on body
|
|
|
rounded_block_relative(lip + 1.00, bot_radius, bot_radius, bot_corner, - (wall));
|
|
rounded_block_relative(lip + 1.00, bot_radius, bot_radius, bot_corner, - (wall));
|
|
|
- // cut slots for snap joint hooks
|
|
|
|
|
- for (r = [0, 180]) rotate([0, 0, r]) {
|
|
|
|
|
- for (m = [-1, 1]) {
|
|
|
|
|
- translate([m * (snap_joint_hook_w + snap_joint_slot_w) - snap_joint_slot_w / 2, bot_radius - 1.5 * wall, 0]) {
|
|
|
|
|
- cube([snap_joint_slot_w, 2 * wall, lip - 1.0]);
|
|
|
|
|
|
|
+ if (render_snap_joints) {
|
|
|
|
|
+ // cut slots for snap joint hooks
|
|
|
|
|
+ for (r = [0, 180]) rotate([0, 0, r]) {
|
|
|
|
|
+ for (m = [-1, 1]) {
|
|
|
|
|
+ translate([m * (snap_joint_hook_w + snap_joint_slot_w) - snap_joint_slot_w / 2, bot_radius - 1.5 * wall, 0]) {
|
|
|
|
|
+ cube([snap_joint_slot_w, 2 * wall, lip - 1.0]);
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -292,14 +303,16 @@ module tetra_mount_flare(height, lip, transition, bot_radius, bot_corner, top_ra
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- // add snap joint hook to arm
|
|
|
|
|
- for (r = [0, 180]) rotate([0, 0, r]) {
|
|
|
|
|
- translate([- snap_joint_hook_w / 2, bot_radius - wall/2, 1/4 * lip]) {
|
|
|
|
|
- rotate([90, 0, 90]) {
|
|
|
|
|
- difference() {
|
|
|
|
|
- cylinder(r = snap_joint_hook_r - 0.2, h = snap_joint_hook_w, $fn = facets);
|
|
|
|
|
- translate([0, -snap_joint_hook_r, 0]) {
|
|
|
|
|
- cube([snap_joint_hook_r, snap_joint_hook_w, snap_joint_hook_w]);
|
|
|
|
|
|
|
+ if (render_snap_joints) {
|
|
|
|
|
+ // add snap joint hook to arm
|
|
|
|
|
+ for (r = [0, 180]) rotate([0, 0, r]) {
|
|
|
|
|
+ translate([- snap_joint_hook_w / 2, bot_radius - wall/2, 1/4 * lip]) {
|
|
|
|
|
+ rotate([90, 0, 90]) {
|
|
|
|
|
+ difference() {
|
|
|
|
|
+ cylinder(r = snap_joint_hook_r - 0.2, h = snap_joint_hook_w, $fn = facets);
|
|
|
|
|
+ translate([0, -snap_joint_hook_r, 0]) {
|
|
|
|
|
+ cube([snap_joint_hook_r, snap_joint_hook_w, snap_joint_hook_w]);
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|