Compare commits
1
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fafb4fc34f
|
+2
-2
@@ -2,8 +2,8 @@ include <common.scad>
|
|||||||
use <left-half.scad>
|
use <left-half.scad>
|
||||||
use <right-half.scad>
|
use <right-half.scad>
|
||||||
|
|
||||||
left_half();
|
left_half_creaturedex();
|
||||||
right_half();
|
right_half_creaturedex();
|
||||||
|
|
||||||
#union() {
|
#union() {
|
||||||
right_half_components();
|
right_half_components();
|
||||||
|
|||||||
+70
-69
@@ -144,82 +144,83 @@ module hinges(joint_axis_length = 80, hinge_thickness = 22) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module left_half() {
|
module left_half_creaturedex() {
|
||||||
diff("holes", "forcekeep")
|
left((w + hinge_thickness) / 2)
|
||||||
// Outer walls
|
diff("holes", "forcekeep")
|
||||||
color_this("green")
|
// Outer walls
|
||||||
rect_tube(h=base_h, size=[w, l], wall=wall, rounding=[0, 5, 5, 0]) {
|
color_this("green")
|
||||||
|
rect_tube(h=base_h, size=[w, l], wall=wall, rounding=[0, 5, 5, 0]) {
|
||||||
|
|
||||||
// Gap for extension of top bump
|
// Gap for extension of top bump
|
||||||
position(RIGHT + BACK + BOTTOM)
|
position(RIGHT + BACK + BOTTOM)
|
||||||
fwd(wall)
|
fwd(wall)
|
||||||
move([EPS / 2, 0, -EPS / 2])
|
move([EPS / 2, 0, -EPS / 2])
|
||||||
tag("holes")
|
tag("holes")
|
||||||
cuboid([wall + EPS, top_bump_width_small - wall + EPS, EPS + bump_height + base_h], anchor=RIGHT + BOTTOM + BACK);
|
cuboid([wall + EPS, top_bump_width_small - wall + EPS, EPS + bump_height + base_h], anchor=RIGHT + BOTTOM + BACK);
|
||||||
|
|
||||||
// Recessed Faceplate
|
// Recessed Faceplate
|
||||||
attach(TOP)
|
attach(TOP)
|
||||||
recolor("blue")
|
recolor("blue")
|
||||||
down(recess_h) {
|
down(recess_h) {
|
||||||
cuboid([w - EPS, l - EPS, faceplate_thickness], rounding=5, edges="Z", anchor=TOP) {
|
cuboid([w - EPS, l - EPS, faceplate_thickness], rounding=5, edges="Z", anchor=TOP) {
|
||||||
position(BACK)
|
position(BACK)
|
||||||
tag("holes") top_bump(height=bump_height + faceplate_thickness + recess_h, wall=wall, inverted=true, anchor=BACK);
|
tag("holes") top_bump(height=bump_height + faceplate_thickness + recess_h, wall=wall, inverted=true, anchor=BACK);
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Top Bump
|
|
||||||
tag("forcekeep")
|
|
||||||
recolor("Gold")
|
|
||||||
position(TOP + BACK) {
|
|
||||||
down(recess_h + faceplate_thickness)
|
|
||||||
top_bump(height=bump_height + faceplate_thickness + recess_h, extra_width=hinge_thickness, wall=wall, anchor=BOTTOM + BACK) {
|
|
||||||
position(TOP + BACK)
|
|
||||||
fwd(20) {
|
|
||||||
position(LEFT)
|
|
||||||
right(w / 5)
|
|
||||||
top_bump_big_sphere(diameter=23, ring_extra_diameter=4, ring_height=2);
|
|
||||||
position(RIGHT)
|
|
||||||
left(w / 5)
|
|
||||||
top_bump_small_spheres(diameter=7, spacing=15);
|
|
||||||
}
|
|
||||||
position(FRONT + BOTTOM)
|
|
||||||
fwd(wall)
|
|
||||||
top_bump_skirt(recess_h + faceplate_thickness);
|
|
||||||
position(RIGHT + BACK + TOP)
|
|
||||||
down(EPS)
|
|
||||||
back(EPS)
|
|
||||||
recolor("red")
|
|
||||||
top_bump_side_extension(width=hinge_thickness + wall, height=bump_height + base_h);
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// TODO: do this properly!
|
|
||||||
// 4. Cutouts/Details in the Recessed Area
|
|
||||||
*up(base_h / 2 - max_h / 2) {
|
|
||||||
// Main Portrait Display Cutout
|
|
||||||
translate([0, 10, 0])
|
|
||||||
tag("holes") cuboid([w - 40, l - 90, base_h + 2], rounding=2, edges="Z");
|
|
||||||
|
|
||||||
// Small Landscape Display Cutout (Bottom Left)
|
|
||||||
translate([-w / 2 + 35, -l / 2 + 35, 0])
|
|
||||||
tag("holes") cuboid([28, 12, base_h + 2], rounding=1, edges="Z");
|
|
||||||
|
|
||||||
// D-Pad Cutout (Bottom Right)
|
|
||||||
translate([w / 2 - 35, -l / 2 + 35, 0])
|
|
||||||
tag("holes") union() {
|
|
||||||
cuboid([22, 8, base_h + 2], rounding=1, edges="Z");
|
|
||||||
cuboid([8, 22, base_h + 2], rounding=1, edges="Z");
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// 5. Right Side Hinges
|
// Top Bump
|
||||||
recolor("Red")
|
tag("forcekeep")
|
||||||
position(BOTTOM + RIGHT + FRONT) {
|
recolor("Gold")
|
||||||
hinges();
|
position(TOP + BACK) {
|
||||||
|
down(recess_h + faceplate_thickness)
|
||||||
|
top_bump(height=bump_height + faceplate_thickness + recess_h, extra_width=hinge_thickness, wall=wall, anchor=BOTTOM + BACK) {
|
||||||
|
position(TOP + BACK)
|
||||||
|
fwd(20) {
|
||||||
|
position(LEFT)
|
||||||
|
right(w / 5)
|
||||||
|
top_bump_big_sphere(diameter=23, ring_extra_diameter=4, ring_height=2);
|
||||||
|
position(RIGHT)
|
||||||
|
left(w / 5)
|
||||||
|
top_bump_small_spheres(diameter=7, spacing=15);
|
||||||
|
}
|
||||||
|
position(FRONT + BOTTOM)
|
||||||
|
fwd(wall)
|
||||||
|
top_bump_skirt(recess_h + faceplate_thickness);
|
||||||
|
position(RIGHT + BACK + TOP)
|
||||||
|
down(EPS)
|
||||||
|
back(EPS)
|
||||||
|
recolor("red")
|
||||||
|
top_bump_side_extension(width=hinge_thickness + wall, height=bump_height + base_h);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: do this properly!
|
||||||
|
// 4. Cutouts/Details in the Recessed Area
|
||||||
|
*up(base_h / 2 - max_h / 2) {
|
||||||
|
// Main Portrait Display Cutout
|
||||||
|
translate([0, 10, 0])
|
||||||
|
tag("holes") cuboid([w - 40, l - 90, base_h + 2], rounding=2, edges="Z");
|
||||||
|
|
||||||
|
// Small Landscape Display Cutout (Bottom Left)
|
||||||
|
translate([-w / 2 + 35, -l / 2 + 35, 0])
|
||||||
|
tag("holes") cuboid([28, 12, base_h + 2], rounding=1, edges="Z");
|
||||||
|
|
||||||
|
// D-Pad Cutout (Bottom Right)
|
||||||
|
translate([w / 2 - 35, -l / 2 + 35, 0])
|
||||||
|
tag("holes") union() {
|
||||||
|
cuboid([22, 8, base_h + 2], rounding=1, edges="Z");
|
||||||
|
cuboid([8, 22, base_h + 2], rounding=1, edges="Z");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
// 5. Right Side Hinges
|
||||||
|
recolor("Red")
|
||||||
|
position(BOTTOM + RIGHT + FRONT) {
|
||||||
|
hinges();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
left_half();
|
left_half_creaturedex();
|
||||||
|
|
||||||
left(300) left_half_orig();
|
left(300) left_half_orig();
|
||||||
|
|||||||
@@ -106,10 +106,10 @@ module right_half_hinge_only() {
|
|||||||
}
|
}
|
||||||
// !right_half_hinge_only();
|
// !right_half_hinge_only();
|
||||||
|
|
||||||
module right_half() {
|
module right_half_creaturedex() {
|
||||||
right_half_door_only();
|
right_half_door_only();
|
||||||
right_half_hinge_only();
|
right_half_hinge_only();
|
||||||
}
|
}
|
||||||
|
|
||||||
// right_half();
|
// right_half_creaturedex();
|
||||||
// #right_half_components();
|
// #right_half_components();
|
||||||
|
|||||||
Reference in New Issue
Block a user