Skip to content

Commit a3eb944

Browse files
committed
buttons can go into the body
1 parent 0b106c0 commit a3eb944

File tree

1 file changed

+211
-151
lines changed

1 file changed

+211
-151
lines changed

cases/case1.scad

Lines changed: 211 additions & 151 deletions
Original file line numberDiff line numberDiff line change
@@ -231,10 +231,11 @@ side_buttons_top = [];
231231
side_buttons_bottom = [];
232232
side_button_width = 9.2;
233233
side_button_height = 3.2;
234-
side_button_extrude = 1.5;
235-
side_button_base = 1;
236-
side_button_base_border = 0.8;
237-
side_button_hole_gap = 0.3;
234+
side_button_extrude = 1.5; // How much it comes out of the case
235+
side_button_base = 1; // Height of square rectangle below the button
236+
side_button_base_border = 0.8; // Extra around width and height
237+
side_button_base_inner = 1.0; // How much does the button base go inside the case body
238+
side_button_hole_gap = 0.3; // How much more to carve out of the hole
238239

239240
/* [Debug] */
240241
// Gap between STL parts for visual debugging
@@ -1422,174 +1423,233 @@ module piPinholesCooling() {
14221423
}
14231424

14241425
module sideButtonHoles() {
1425-
// side buttons left
1426-
for (side_button = side_buttons_left) {
1427-
translate([
1428-
-side_button_extrude,
1429-
side_button * (frame_full_height - side_button_width) / 100 - side_button_hole_gap,
1430-
(case_depth - side_button_height) / 2 - side_button_hole_gap
1431-
])
1432-
filletBoxLeft(
1433-
panel_border_left + case_inner_padding_left + side_button_base + side_button_extrude,
1434-
side_button_width + side_button_hole_gap * 2,
1435-
side_button_height + side_button_hole_gap * 2,
1436-
min(side_button_height / 2 - 0.01, fillet_radius_in_use)
1437-
);
1438-
}
1439-
1440-
// side buttons right
1441-
for (side_button = side_buttons_right) {
1442-
translate([
1443-
frame_full_width - panel_border_right - case_inner_padding_right - side_button_base,
1444-
side_button * (frame_full_height - side_button_width) / 100 - side_button_hole_gap,
1445-
(case_depth - side_button_height) / 2 - side_button_hole_gap
1446-
])
1447-
filletBoxRight(
1448-
panel_border_right + case_inner_padding_right + side_button_base + side_button_extrude,
1449-
side_button_width + side_button_hole_gap * 2,
1450-
side_button_height + side_button_hole_gap * 2,
1451-
min(side_button_height / 2 - 0.01, fillet_radius_in_use)
1452-
);
1453-
}
1454-
1455-
// side buttons top
1456-
for (side_button = side_buttons_top) {
1457-
translate([
1458-
side_button * (frame_full_width - side_button_width) / 100 - side_button_hole_gap,
1459-
-side_button_extrude,
1460-
(case_depth - side_button_height) / 2 - side_button_hole_gap
1461-
])
1462-
filletBoxUp(
1463-
side_button_width + side_button_hole_gap * 2,
1464-
panel_border_top + case_inner_padding_top + side_button_base + side_button_extrude,
1465-
side_button_height + side_button_hole_gap * 2,
1466-
min(side_button_height / 2 - 0.01, fillet_radius_in_use)
1467-
);
1468-
}
1469-
1470-
// side buttons bottom
1471-
for (side_button = side_buttons_bottom) {
1472-
translate([
1473-
side_button * (frame_full_width - side_button_width) / 100 - side_button_hole_gap,
1474-
frame_full_height - panel_border_bottom - case_inner_padding_bottom - side_button_base,
1475-
(case_depth - side_button_height) / 2 - side_button_hole_gap
1476-
])
1477-
filletBoxDown(
1478-
side_button_width + side_button_hole_gap * 2,
1479-
panel_border_bottom + case_inner_padding_bottom + side_button_base + side_button_extrude,
1480-
side_button_height + side_button_hole_gap * 2,
1481-
min(side_button_height / 2 - 0.01, fillet_radius_in_use)
1482-
);
1483-
}
1484-
}
1485-
1486-
1487-
module sideButtons() {
1488-
if (side_buttons_left) {
1489-
for (idx = [ 0 : len(side_buttons_left) - 1 ] ) {
1426+
union() {
1427+
// side buttons left
1428+
for (side_button = side_buttons_left) {
14901429
translate([
1491-
idx * (side_button_width + side_button_extrude * 2 + 2),
1492-
0,
1493-
0
1430+
-side_button_extrude,
1431+
side_button * (frame_full_height - side_button_width) - side_button_hole_gap,
1432+
(case_depth - side_button_height) / 2 - side_button_hole_gap
14941433
])
1495-
filletBoxBottom(
1496-
side_button_width,
1497-
side_button_height,
1498-
side_button_base + side_button_extrude + panel_border_left + case_inner_padding_left,
1499-
min(side_button_height / 2 - 0.01, fillet_radius_in_use)
1434+
filletBoxLeft(
1435+
panel_border_left + case_inner_padding_left + side_button_base + side_button_extrude,
1436+
side_button_width + side_button_hole_gap * 2,
1437+
side_button_height + side_button_hole_gap * 2,
1438+
r=min(side_button_height / 2 - 0.01, fillet_radius_in_use),
1439+
fn=12
15001440
);
1441+
if (side_button_base_inner > 0) {
1442+
translate([
1443+
panel_border_left + case_inner_padding_left - side_button_base_inner - 0.01,
1444+
side_button * (frame_full_height - side_button_width) - side_button_base_border - side_button_hole_gap,
1445+
(case_depth - side_button_height) / 2 - side_button_base_border - side_button_hole_gap
1446+
])
1447+
cube([
1448+
side_button_base + side_button_base_inner + 0.02,
1449+
side_button_width + side_button_base_border * 2 + side_button_hole_gap * 2,
1450+
side_button_height + side_button_base_border * 2 + side_button_hole_gap * 2,
1451+
]);
1452+
}
1453+
}
15011454

1455+
// side buttons right
1456+
for (side_button = side_buttons_right) {
15021457
translate([
1503-
idx * (side_button_width + side_button_extrude * 2 + 2) -side_button_base_border,
1504-
-side_button_base_border,
1505-
0
1458+
frame_full_width - panel_border_right - case_inner_padding_right - side_button_base,
1459+
side_button * (frame_full_height - side_button_width) - side_button_hole_gap,
1460+
(case_depth - side_button_height) / 2 - side_button_hole_gap
15061461
])
1507-
cube([
1508-
side_button_width + side_button_base_border * 2,
1509-
side_button_height + side_button_base_border * 2,
1510-
side_button_base
1511-
]);
1462+
filletBoxRight(
1463+
panel_border_right + case_inner_padding_right + side_button_base + side_button_extrude,
1464+
side_button_width + side_button_hole_gap * 2,
1465+
side_button_height + side_button_hole_gap * 2,
1466+
r=min(side_button_height / 2 - 0.01, fillet_radius_in_use),
1467+
fn=12
1468+
);
1469+
if (side_button_base_inner > 0) {
1470+
translate([
1471+
frame_full_width - panel_border_right - case_inner_padding_right - side_button_base - 0.01,
1472+
side_button * (frame_full_height - side_button_width) - side_button_base_border - side_button_hole_gap,
1473+
(case_depth - side_button_height) / 2 - side_button_base_border - side_button_hole_gap
1474+
])
1475+
cube([
1476+
side_button_base + side_button_base_inner + 0.02,
1477+
side_button_width + side_button_base_border * 2 + side_button_hole_gap * 2,
1478+
side_button_height + side_button_base_border * 2 + side_button_hole_gap * 2,
1479+
]);
1480+
}
15121481
}
1513-
}
15141482

1515-
if (side_buttons_right) {
1516-
for (idx = [ 0 : len(side_buttons_right) - 1 ] ) {
1483+
// side buttons top
1484+
for (side_button = side_buttons_top) {
15171485
translate([
1518-
idx * (side_button_width + side_button_extrude * 2 + 2),
1519-
side_button_height + side_button_extrude * 2 + 2,
1520-
0
1486+
side_button * (frame_full_width - side_button_width) - side_button_hole_gap,
1487+
-side_button_extrude,
1488+
(case_depth - side_button_height) / 2 - side_button_hole_gap
15211489
])
1522-
filletBoxBottom(
1523-
side_button_width,
1524-
side_button_height,
1525-
side_button_base + side_button_extrude + panel_border_right + case_inner_padding_right,
1526-
min(side_button_height / 2 - 0.01, fillet_radius_in_use)
1490+
filletBoxUp(
1491+
side_button_width + side_button_hole_gap * 2,
1492+
panel_border_top + case_inner_padding_top + side_button_base + side_button_extrude - side_button_base_inner,
1493+
side_button_height + side_button_hole_gap * 2,
1494+
r=min(side_button_height / 2 - 0.01, fillet_radius_in_use),
1495+
fn=12
15271496
);
1497+
if (side_button_base_inner > 0) {
1498+
translate([
1499+
side_button * (frame_full_width - side_button_width) - side_button_base_border - side_button_hole_gap,
1500+
panel_border_top + case_inner_padding_top - side_button_base_inner - 0.01,
1501+
(case_depth - side_button_height) / 2 - side_button_base_border - side_button_hole_gap
1502+
])
1503+
cube([
1504+
side_button_width + side_button_base_border * 2 + side_button_hole_gap * 2,
1505+
side_button_base + side_button_base_inner,
1506+
side_button_height + side_button_base_border * 2 + side_button_hole_gap * 2,
1507+
]);
1508+
}
1509+
}
15281510

1511+
// side buttons bottom
1512+
for (side_button = side_buttons_bottom) {
15291513
translate([
1530-
idx * (side_button_width + side_button_extrude * 2 + 2) -side_button_base_border,
1531-
side_button_height + side_button_extrude * 2 + 2 -side_button_base_border,
1532-
0
1514+
side_button * (frame_full_width - side_button_width) - side_button_hole_gap,
1515+
frame_full_height - panel_border_bottom - case_inner_padding_bottom - side_button_base,
1516+
(case_depth - side_button_height) / 2 - side_button_hole_gap
15331517
])
1534-
cube([
1535-
side_button_width + side_button_base_border * 2,
1536-
side_button_height + side_button_base_border * 2,
1537-
side_button_base
1538-
]);
1518+
filletBoxDown(
1519+
side_button_width + side_button_hole_gap * 2,
1520+
panel_border_bottom + case_inner_padding_bottom + side_button_base + side_button_extrude - side_button_base_inner,
1521+
side_button_height + side_button_hole_gap * 2,
1522+
r=min(side_button_height / 2 - 0.01, fillet_radius_in_use),
1523+
fn=12
1524+
);
1525+
if (side_button_base_inner > 0) {
1526+
translate([
1527+
side_button * (frame_full_width - side_button_width) - side_button_base_border - side_button_hole_gap,
1528+
frame_full_height - panel_border_bottom - case_inner_padding_bottom - side_button_base - 0.01,
1529+
(case_depth - side_button_height) / 2 - side_button_base_border - side_button_hole_gap
1530+
])
1531+
cube([
1532+
side_button_width + side_button_base_border * 2 + side_button_hole_gap * 2,
1533+
side_button_base + side_button_base_inner,
1534+
side_button_height + side_button_base_border * 2 + side_button_hole_gap * 2,
1535+
]);
1536+
}
15391537
}
15401538
}
1539+
}
15411540

1542-
if (side_buttons_top) {
1543-
for (idx = [ 0 : len(side_buttons_top) - 1 ] ) {
1544-
translate([
1545-
idx * (side_button_width + side_button_extrude * 2 + 2),
1546-
(side_button_height + side_button_extrude * 2 + 2) * 2,
1547-
0
1548-
])
1549-
filletBoxBottom(
1550-
side_button_width,
1551-
side_button_height,
1552-
side_button_base + side_button_extrude + panel_border_top + case_inner_padding_top,
1553-
min(side_button_height / 2 - 0.01, fillet_radius_in_use)
1554-
);
1541+
module sideButtons() {
1542+
union() {
1543+
if (side_buttons_left) {
1544+
for (idx = [ 0 : len(side_buttons_left) - 1 ] ) {
1545+
translate([
1546+
idx * (side_button_width + side_button_extrude * 2 + 2),
1547+
0,
1548+
0
1549+
])
1550+
filletBoxBottom(
1551+
side_button_width,
1552+
side_button_height,
1553+
side_button_base + side_button_extrude + panel_border_left + case_inner_padding_left - side_button_base_inner,
1554+
r=min(side_button_height / 2 - 0.01, fillet_radius_in_use),
1555+
fn=12
1556+
);
15551557

1556-
translate([
1557-
idx * (side_button_width + side_button_extrude * 2 + 2) -side_button_base_border,
1558-
(side_button_height + side_button_extrude * 2 + 2) * 2 -side_button_base_border,
1559-
0
1560-
])
1561-
cube([
1562-
side_button_width + side_button_base_border * 2,
1563-
side_button_height + side_button_base_border * 2,
1564-
side_button_base
1565-
]);
1558+
translate([
1559+
idx * (side_button_width + side_button_extrude * 2 + 2) -side_button_base_border,
1560+
-side_button_base_border,
1561+
0
1562+
])
1563+
cube([
1564+
side_button_width + side_button_base_border * 2,
1565+
side_button_height + side_button_base_border * 2,
1566+
side_button_base
1567+
]);
1568+
}
15661569
}
1567-
}
15681570

1569-
if (side_buttons_bottom) {
1570-
for (idx = [ 0 : len(side_buttons_bottom) - 1 ] ) {
1571-
translate([
1572-
idx * (side_button_width + side_button_extrude * 2 + 2),
1573-
(side_button_height + side_button_extrude * 2 + 2) * 3,
1574-
0
1575-
])
1576-
filletBoxBottom(
1577-
side_button_width,
1578-
side_button_height,
1579-
side_button_base + side_button_extrude + panel_border_bottom + case_inner_padding_bottom,
1580-
min(side_button_height / 2 - 0.01, fillet_radius_in_use)
1581-
);
1571+
if (side_buttons_right) {
1572+
for (idx = [ 0 : len(side_buttons_right) - 1 ] ) {
1573+
translate([
1574+
idx * (side_button_width + side_button_extrude * 2 + 2),
1575+
side_button_height + side_button_extrude * 2 + 2,
1576+
0
1577+
])
1578+
filletBoxBottom(
1579+
side_button_width,
1580+
side_button_height,
1581+
side_button_base + side_button_extrude + panel_border_right + case_inner_padding_right - side_button_base_inner,
1582+
r=min(side_button_height / 2 - 0.01, fillet_radius_in_use),
1583+
fn=12
1584+
);
15821585

1583-
translate([
1584-
idx * (side_button_width + side_button_extrude * 2 + 2) -side_button_base_border,
1585-
(side_button_height + side_button_extrude * 2 + 2) * 3 -side_button_base_border,
1586-
0
1587-
])
1588-
cube([
1589-
side_button_width + side_button_base_border * 2,
1590-
side_button_height + side_button_base_border * 2,
1591-
side_button_base
1592-
]);
1586+
translate([
1587+
idx * (side_button_width + side_button_extrude * 2 + 2) -side_button_base_border,
1588+
side_button_height + side_button_extrude * 2 + 2 -side_button_base_border,
1589+
0
1590+
])
1591+
cube([
1592+
side_button_width + side_button_base_border * 2,
1593+
side_button_height + side_button_base_border * 2,
1594+
side_button_base
1595+
]);
1596+
}
1597+
}
1598+
1599+
if (side_buttons_top) {
1600+
for (idx = [ 0 : len(side_buttons_top) - 1 ] ) {
1601+
translate([
1602+
idx * (side_button_width + side_button_extrude * 2 + 2),
1603+
(side_button_height + side_button_extrude * 2 + 2) * 2,
1604+
0
1605+
])
1606+
filletBoxBottom(
1607+
side_button_width,
1608+
side_button_height,
1609+
side_button_base + side_button_extrude + panel_border_top + case_inner_padding_top - side_button_base_inner,
1610+
r=min(side_button_height / 2 - 0.01, fillet_radius_in_use),
1611+
fn=12
1612+
);
1613+
1614+
translate([
1615+
idx * (side_button_width + side_button_extrude * 2 + 2) -side_button_base_border,
1616+
(side_button_height + side_button_extrude * 2 + 2) * 2 -side_button_base_border,
1617+
0
1618+
])
1619+
cube([
1620+
side_button_width + side_button_base_border * 2,
1621+
side_button_height + side_button_base_border * 2,
1622+
side_button_base
1623+
]);
1624+
}
1625+
}
1626+
1627+
if (side_buttons_bottom) {
1628+
for (idx = [ 0 : len(side_buttons_bottom) - 1 ] ) {
1629+
translate([
1630+
idx * (side_button_width + side_button_extrude * 2 + 2),
1631+
(side_button_height + side_button_extrude * 2 + 2) * 3,
1632+
0
1633+
])
1634+
filletBoxBottom(
1635+
side_button_width,
1636+
side_button_height,
1637+
side_button_base + side_button_extrude + panel_border_bottom + case_inner_padding_bottom - side_button_base_inner,
1638+
r=min(side_button_height / 2 - 0.01, fillet_radius_in_use),
1639+
fn=12
1640+
);
1641+
1642+
translate([
1643+
idx * (side_button_width + side_button_extrude * 2 + 2) -side_button_base_border,
1644+
(side_button_height + side_button_extrude * 2 + 2) * 3 -side_button_base_border,
1645+
0
1646+
])
1647+
cube([
1648+
side_button_width + side_button_base_border * 2,
1649+
side_button_height + side_button_base_border * 2,
1650+
side_button_base
1651+
]);
1652+
}
15931653
}
15941654
}
15951655
}

0 commit comments

Comments
 (0)