1
0
Fork 0
mirror of https://github.com/Luzifer/3dmodels.git synced 2024-12-23 02:41:19 +00:00

Add basic implementation for Sonoff DEV housing

This commit is contained in:
Knut Ahlers 2020-01-03 14:40:00 +01:00
commit 4ca0dd66d9
Signed by: luzifer
GPG key ID: DC2729FDD34BE99E

96
sonoff_dev_housing.jscad Normal file
View file

@ -0,0 +1,96 @@
// title : Sonoff DEV box for lamp post
// author : Knut Ahlers
// license : MIT License
// revision : 0.003
// file : sonoff_dev_lamp.jscad
// All measurements in mm
const innerSpace = 15 // free room on the inside from the board not to bend the cables that hard
const innerSpaceHeight = 30
const boardSize = 50 // 50x50mm
const boardSupportHeight = 10 // 10mm pins to put the board on
const boardSupportRadius = 1 // 2mm (holes do have 3mm)
const boardSupportEdgeDist = 2.5 // 2.5mm from the edges
const lampPostRadius = 7.5 // 15mm diameter
const lampPostSupport = lampPostRadius + 4.5 // adjust for proper grip
const wall = 2.5 // wall thickness
function main() {
return [
union(
// Housing with holder
difference(
union(
// Main housing block
cube({ size: [
boardSize + innerSpace + wall,
boardSize + innerSpace + wall,
innerSpaceHeight + wall,
], center: true }),
// Lamp post holder
difference(
cylinder({
h: boardSize + innerSpace + wall,
r: lampPostSupport,
center: true,
resolution: 100,
}),
cylinder({
h: boardSize + innerSpace + wall,
r: lampPostRadius,
center: true,
resolution: 100,
}).translate([-7.5, 0, 0])
)
.rotateY(90)
.translate([0, 0, (innerSpaceHeight + wall)/2])
),
// Inner housing
cube({ size: [
boardSize + innerSpace,
boardSize + innerSpace,
innerSpaceHeight,
], center: true }).translate([0, 0, wall * -1])
),
// Board supports
cylinder({
h: boardSupportHeight + wall,
r: boardSupportRadius,
center: true,
}).translate([
boardSize / 2 - boardSupportEdgeDist,
boardSize / 2 - boardSupportEdgeDist,
(innerSpaceHeight + wall) / 2 - (boardSupportHeight + wall) / 2,
]),
cylinder({
h: boardSupportHeight + wall,
r: boardSupportRadius,
center: true,
}).translate([
(boardSize / 2 - boardSupportEdgeDist) * -1,
boardSize / 2 - boardSupportEdgeDist,
(innerSpaceHeight + wall) / 2 - (boardSupportHeight + wall) / 2,
]),
cylinder({
h: boardSupportHeight + wall,
r: boardSupportRadius,
center: true,
}).translate([
boardSize / 2 - boardSupportEdgeDist,
(boardSize / 2 - boardSupportEdgeDist) * -1,
(innerSpaceHeight + wall) / 2 - (boardSupportHeight + wall) / 2,
]),
cylinder({
h: boardSupportHeight + wall,
r: boardSupportRadius,
center: true,
}).translate([
(boardSize / 2 - boardSupportEdgeDist) * -1,
(boardSize / 2 - boardSupportEdgeDist) * -1,
(innerSpaceHeight + wall) / 2 - (boardSupportHeight + wall) / 2,
])
).translate([0, 0, (innerSpaceHeight + wall)/2])
]
}
// vim: set ft=javascript: