const rpizWidth = 30 const rpizLength = 65 const caseThickness = 1 const border = 4 const screwHeight = 4 const caseWidth = rpizWidth + border * 2 const caseLength = rpizLength + border * 2 const caseHeight = 8 const widthBetweenScrews = 23 const lengthBetweenScrews = 29 * 2 const miniHdmiDistance = 12.4 const microUsb1Distance = 41.4 const microUsb2Distance = 54 const miniHdmiWidth = 11.2 const microUsbWidth = 7.4 const connectorPadding = 4 const miniHdmiHole = startSketchAt([ 0, border + miniHdmiDistance - (miniHdmiWidth / 2) ]) |> lineTo([ 0, border + miniHdmiDistance + miniHdmiWidth / 2 ], %) |> lineTo([ 1, border + miniHdmiDistance + miniHdmiWidth / 2 ], %) |> lineTo([ 1, border + miniHdmiDistance - (miniHdmiWidth / 2) ], %) |> close() const case = startSketchOn('XY') |> startProfileAt([0, 0], %) |> line(endAbsolute = [caseWidth, 0], $edge1) |> line(endAbsolute = [caseWidth, caseLength], $edge2) |> line(endAbsolute = [0, caseLength], $edge3) |> close(tag = $edge4) |> extrude(length = caseHeight) |> fillet({ radius: 1, tags: [ getNextAdjacentEdge(edge1), getNextAdjacentEdge(edge2), getNextAdjacentEdge(edge3), getNextAdjacentEdge(edge4) ], }, %) fn m25Screw = (x, y, height) => { const screw = startSketchOn("XY") |> startProfileAt([0, 0], %) |> circle({ center: [x, y], radius: 2.5 }, %) |> hole(circle({ center: [x, y], radius: 1.25 }, %), %) |> extrude(length = height) return screw } m25Screw(border + rpizWidth / 2 - (widthBetweenScrews / 2), 0 + border + rpizLength / 2 - (lengthBetweenScrews / 2), screwHeight) m25Screw(border + rpizWidth / 2 - (widthBetweenScrews / 2), 0 + border + rpizLength / 2 + lengthBetweenScrews / 2, screwHeight) m25Screw(border + rpizWidth / 2 + widthBetweenScrews / 2, 0 + border + rpizLength / 2 + lengthBetweenScrews / 2, screwHeight) m25Screw(border + rpizWidth / 2 + widthBetweenScrews / 2, 0 + border + rpizLength / 2 - (lengthBetweenScrews / 2), screwHeight) shell( faces = ['end'], thickness = caseThickness )