1 Commits
Author SHA1 Message Date
ede1998 90d8173397 re-model left half of housing with bosl2 2026-09-13 19:49:10 +02:00
3 changed files with 74 additions and 75 deletions
+2 -2
View File
@@ -2,8 +2,8 @@ include <common.scad>
use <left-half.scad>
use <right-half.scad>
left_half_creaturedex();
right_half_creaturedex();
left_half();
right_half();
#union() {
right_half_components();
+70 -71
View File
@@ -144,83 +144,82 @@ module hinges(joint_axis_length = 80, hinge_thickness = 22) {
}
}
module left_half_creaturedex() {
left((w + hinge_thickness) / 2)
diff("holes", "forcekeep")
// Outer walls
color_this("green")
rect_tube(h=base_h, size=[w, l], wall=wall, rounding=[0, 5, 5, 0]) {
module left_half() {
diff("holes", "forcekeep")
// Outer walls
color_this("green")
rect_tube(h=base_h, size=[w, l], wall=wall, rounding=[0, 5, 5, 0]) {
// Gap for extension of top bump
position(RIGHT + BACK + BOTTOM)
fwd(wall)
move([EPS / 2, 0, -EPS / 2])
tag("holes")
cuboid([wall + EPS, top_bump_width_small - wall + EPS, EPS + bump_height + base_h], anchor=RIGHT + BOTTOM + BACK);
// Gap for extension of top bump
position(RIGHT + BACK + BOTTOM)
fwd(wall)
move([EPS / 2, 0, -EPS / 2])
tag("holes")
cuboid([wall + EPS, top_bump_width_small - wall + EPS, EPS + bump_height + base_h], anchor=RIGHT + BOTTOM + BACK);
// Recessed Faceplate
attach(TOP)
recolor("blue")
down(recess_h) {
cuboid([w - EPS, l - EPS, faceplate_thickness], rounding=5, edges="Z", anchor=TOP) {
position(BACK)
tag("holes") top_bump(height=bump_height + faceplate_thickness + recess_h, wall=wall, inverted=true, anchor=BACK);
}
// Recessed Faceplate
attach(TOP)
recolor("blue")
down(recess_h) {
cuboid([w - EPS, l - EPS, faceplate_thickness], rounding=5, edges="Z", anchor=TOP) {
position(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
recolor("Red")
position(BOTTOM + RIGHT + FRONT) {
hinges();
}
// 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
recolor("Red")
position(BOTTOM + RIGHT + FRONT) {
hinges();
}
}
}
left_half_creaturedex();
left_half();
left(300) left_half_orig();
+2 -2
View File
@@ -106,10 +106,10 @@ module right_half_hinge_only() {
}
// !right_half_hinge_only();
module right_half_creaturedex() {
module right_half() {
right_half_door_only();
right_half_hinge_only();
}
// right_half_creaturedex();
// right_half();
// #right_half_components();