1 Commits
Author SHA1 Message Date
ede1998 fafb4fc34f re-model left half of housing with bosl2 2026-09-13 20:06:04 +02:00
3 changed files with 74 additions and 73 deletions
+2 -2
View File
@@ -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
View File
@@ -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();
+2 -2
View File
@@ -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();