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
)
