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