lol thunderstorm

This commit is contained in:
Octopus Octopus 2022-05-21 09:58:30 -05:00
parent 25c4c45bd0
commit 6b3dad3435
3 changed files with 63 additions and 16 deletions

Binary file not shown.

View File

@ -14,8 +14,8 @@ func main() {
bottom := bottom()
render.RenderDXF(hjkl, 300, "hjkl.dxf")
render.RenderDXF(sdf.Difference2D(buttons, buttonMounts), 300, "buttons.dxf")
render.RenderSTLSlow(top, 1200, "top.stl")
render.RenderSTLSlow(bottom, 1200, "bottom.stl")
render.RenderSTLSlow(plate, 1200, "plate.stl")
render.RenderSTLSlow(top, 1200, "top.stl")
}

View File

@ -11,6 +11,9 @@ const (
TOLERANCE = 8
CABLE_HEAD_HEIGHT = 6
CABLE_HEAD_WIDTH = 10
USB_DAUGHTERBOARD_HEIGHT = 12.6
USB_DAUGHTERBOARD_LENGTH = 21.4
USB_DAUGHTERBOARD_THICKNESS = 4.7 // includes usb jack
)
func plate() sdf.SDF3 {
@ -39,7 +42,9 @@ func plate() sdf.SDF3 {
func top() sdf.SDF3 {
top2D := sdf.Box2D(sdf.V2{X: PLATE_WIDTH, Y: PLATE_HEIGHT}, 5)
hjkl := hjkl()
hjkl := buttonRow()
hjkl = sdf.Box2D(sdf.V2{X: hjkl.BoundingBox().Max.X*2 + 2, Y: hjkl.BoundingBox().Max.Y*2 + 2}, 1)
hjkl = sdf.Transform2D(hjkl, sdf.Rotate2d(sdf.DtoR(30)))
hjkl = sdf.Transform2D(hjkl, sdf.Translate2d(sdf.V2{X: top2D.BoundingBox().Max.X / 2, Y: top2D.BoundingBox().Max.Y / 6}))
top2D = sdf.Difference2D(top2D, hjkl)
@ -48,9 +53,12 @@ func top() sdf.SDF3 {
top2D = sdf.Difference2D(top2D, buttons)
buttonRow := buttonRow()
buttonRow = sdf.Box2D(sdf.V2{X: buttonRow.BoundingBox().Max.X*2 + 2, Y: buttonRow.BoundingBox().Max.Y*2 + 2}, 1)
buttonRow = sdf.Transform2D(buttonRow, sdf.Translate2d(sdf.V2{X: top2D.BoundingBox().Max.X / 2, Y: top2D.BoundingBox().Max.Y / 1.25}))
top2D = sdf.Difference2D(top2D, buttonRow)
// hjkl := buttonRow
corners := cornerHoles(top2D, screwHole())
top2D = sdf.Difference2D(top2D, corners)
@ -70,8 +78,19 @@ func bottom() sdf.SDF3 {
cornerScrews := cornerHoles(bottom2D, screwHole())
bottom2D = sdf.Union2D(bottom2D, cornerScrewHolders)
bottom2D = sdf.Difference2D(bottom2D, cornerScrews)
cavity2D = sdf.Difference2D(cavity2D, cornerScrewHolders)
peg, _ := sdf.Circle2D(2.4 / 2) // M2 screw
pegHole, _ := sdf.Circle2D(2.4 / 2) // M2 screw
pegHoles := make([]sdf.SDF2, 4)
for i := range pegHoles {
pegHoles[i] = pegHole
}
pegHoles[0] = sdf.Transform2D(pegHoles[0], sdf.Translate2d(sdf.V2{X: 48.26 / 2, Y: 11.4 / 2})) //pico mounting hole spacing
pegHoles[1] = sdf.Transform2D(pegHoles[1], sdf.Translate2d(sdf.V2{X: 48.26 / 2, Y: -11.4 / 2})) //pico mounting hole spacing
pegHoles[2] = sdf.Transform2D(pegHoles[2], sdf.Translate2d(sdf.V2{X: -48.26 / 2, Y: -11.4 / 2})) //pico mounting hole spacing
pegHoles[3] = sdf.Transform2D(pegHoles[3], sdf.Translate2d(sdf.V2{X: -48.26 / 2, Y: 11.4 / 2})) //pico mounting hole spacing
peg, _ := sdf.Circle2D(2.4) // M2 screw
pegs := make([]sdf.SDF2, 4)
for i := range pegs {
pegs[i] = peg
@ -80,13 +99,41 @@ func bottom() sdf.SDF3 {
pegs[1] = sdf.Transform2D(pegs[1], sdf.Translate2d(sdf.V2{X: 48.26 / 2, Y: -11.4 / 2})) //pico mounting hole spacing
pegs[2] = sdf.Transform2D(pegs[2], sdf.Translate2d(sdf.V2{X: -48.26 / 2, Y: -11.4 / 2})) //pico mounting hole spacing
pegs[3] = sdf.Transform2D(pegs[3], sdf.Translate2d(sdf.V2{X: -48.26 / 2, Y: 11.4 / 2})) //pico mounting hole spacing
mount := sdf.Union2D(pegs...)
mount = sdf.Transform2D(mount, sdf.Translate2d(sdf.V2{X: bottom2D.BoundingBox().Max.X / 2, Y: -bottom2D.BoundingBox().Max.X / 3}))
bottom2D = sdf.Union2D(bottom2D, mount)
mount2D := sdf.Union2D(pegs...)
mountingHoles2D := sdf.Union2D(pegHoles...)
mount2D = sdf.Difference2D(mount2D, mountingHoles2D)
mount2D = sdf.Transform2D(mount2D, sdf.Translate2d(sdf.V2{X: bottom2D.BoundingBox().Max.X / 2, Y: -bottom2D.BoundingBox().Max.X / 3}))
mount := sdf.Extrude3D(mount2D, 4) // M2x4mm screw holes
// bottom2D = sdf.Union2D(bottom2D, mount)
bottom := sdf.Extrude3D(bottom2D, BOTTOM_THICKNESS)
bottom = sdf.Union3D(bottom, mount)
cavity2D = sdf.Elongate2D(cavity2D, sdf.V2{X: 1, Y: 1})
floor := sdf.Extrude3D(cavity2D, PLATE_THICKNESS)
floor = sdf.Transform3D(floor, sdf.Translate3d(sdf.V3{X: 0, Y: 0, Z: -(bottom.BoundingBox().Max.Z/2 + floor.BoundingBox().Max.Z/2)}))
return sdf.Union3D(bottom, floor)
floor = sdf.Transform3D(floor, sdf.Translate3d(sdf.V3{X: 0, Y: 0, Z: -(bottom.BoundingBox().Max.Z*2+floor.BoundingBox().Max.Z*2)/4 - 0.50}))
bottom = sdf.Union3D(bottom, floor)
cableHole2D := sdf.Box2D(sdf.V2{X: CABLE_HEAD_WIDTH, Y: CABLE_HEAD_HEIGHT}, 0)
cableHole := sdf.Extrude3D(cableHole2D, TOLERANCE)
cableHole = sdf.Transform3D(cableHole, sdf.RotateX(sdf.DtoR(90)))
cableHole = sdf.Transform3D(cableHole, sdf.Translate3d(sdf.V3{X: 0, Y: (bottom.BoundingBox().Max.Y + cableHole.BoundingBox().Max.Y) - cableHole.BoundingBox().Max.Y*2, Z: cableHole.BoundingBox().Max.Z / 3}))
bottom = sdf.Difference3D(bottom, cableHole)
usbCutout, _ := sdf.Box3D(sdf.V3{X: USB_DAUGHTERBOARD_LENGTH, Y: USB_DAUGHTERBOARD_HEIGHT, Z: USB_DAUGHTERBOARD_THICKNESS}, 0)
usbCutout = sdf.Transform3D(usbCutout, sdf.Translate3d(sdf.V3{X: 0, Y: (floor.BoundingBox().Max.Y + usbCutout.BoundingBox().Max.Y) - usbCutout.BoundingBox().Max.Y*2 + 2.6, Z: 0})) // 5 for m3x5 screw
bottom = sdf.Difference3D(bottom, usbCutout)
/*
usbCutoutPeg2D, _ := sdf.Circle2D(3 / 2) // m3 hole
usbCutoutPeg := sdf.Extrude3D(usbCutoutPeg2D, 1.5) // thickness of daughtboard pcb
usbCutoutPeg = sdf.Transform3D(usbCutoutPeg, sdf.Translate3d(sdf.V3{X: 7.7, Y: (floor.BoundingBox().Max.Y + usbCutoutPeg.BoundingBox().Max.Y) - usbCutoutPeg.BoundingBox().Max.Y*2, Z: -usbCutoutPeg.BoundingBox().Max.Z * 2}))
usbCutoutPeg2 := sdf.Transform3D(usbCutoutPeg, sdf.Translate3d(sdf.V3{X: -15.4, Y: 0, Z: 0}))
bottom = sdf.Union3D(bottom, usbCutoutPeg, usbCutoutPeg2)
*/
return bottom
}
func cornerHoles(input, hole sdf.SDF2) sdf.SDF2 {