1
0
Fork 0
mirror of https://github.com/Luzifer/3dmodels.git synced 2024-10-18 13:14:18 +00:00
3dmodels/eink_2-13_case.jscad

63 lines
1.9 KiB
Text
Raw Normal View History

/*
* title : Case for 2.13" Lilygo eink display
* author : Knut Ahlers
* revision : 0.1.1
*/
const boardD = 6
const boardH = 37 + 4
const boardW = 67
const displayH = 25
const displayW = 49.5
const wall = 2
const genCap = () => difference(
cube({ size: [boardW + 2 * wall, boardH + 2 * wall, wall], center: true }),
cube({ size: [wall, wall, wall], center: true })
.translate([boardW / 2 + wall / 2, boardH / 2 + wall / 2, 0]),
cube({ size: [wall, wall, wall], center: true })
.translate([boardW / -2 + wall / -2, boardH / 2 + wall / 2, 0]),
cube({ size: [wall, wall, wall], center: true })
.translate([boardW / 2 + wall / 2, boardH / -2 + wall / -2, 0]),
cube({ size: [wall, wall, wall], center: true })
.translate([boardW / -2 + wall / -2, boardH / -2 + wall / -2, 0])
)
const genInner = () => union(
// Inner without holding cylinders
difference(
cube({ size: [boardW, boardH, boardD], center: true }),
cylinder({ h: boardD, r: 1, center: true })
.translate([31, 16.5, 0]),
cylinder({ h: boardD, r: 1, center: true })
.translate([-31, 16.5, 0]),
cylinder({ h: boardD, r: 1, center: true })
.translate([31, -16.5, 0]),
cylinder({ h: boardD, r: 1, center: true })
.translate([-31, -16.5, 0])
),
// Display cut-out
cube({ size: [displayW, displayH, wall], center: true })
.translate([boardW / -2 + displayW / 2 + 3, 0, boardD / -2 + wall / -2]),
// Port cut-out
cube({ size: [9, wall, boardD], center: true })
.translate([boardW / 2 - 4.5 - 19.5, boardH / -2 + wall / -2])
)
/* exported main */
function main () {
return union(
difference(
// Block
cube({ size: [boardW + 2 * wall, boardH + 2 * wall, boardD + 2 * wall], center: true }),
genInner(),
genCap().translate([0, 0, boardD / 2 + wall / 2])
),
genCap().translate([0, 2 * boardH, 0])
)
}
// vim: set ft=javascript: