nPlates = 20
buildPlateThickness = 1 / 25.4 // 1mm w/ two stickers
buildPlateWidth = 10.125
widthTolerance = 0.2
thicknessTolerance = 0.020
endWidth = 0.5
endTabWidth = 2
endTabHeight = 1
endTabThickness = 0.1
width = buildPlateWidth + 2 * (widthTolerance + endWidth)
depth = nPlates * (buildPlateThickness + thicknessTolerance) + (nPlates + 1) * endTabThickness
baseHeight = 0.25

base = startSketchOn(XZ)
  |> startProfile(at = [0, 0])
  |> xLine(endAbsolute =  width, tag = $seg01)
  |> yLine(endAbsolute = baseHeight + endTabHeight)
  |> xLine(length = -endWidth)
  |> yLine(endAbsolute = baseHeight)
  |> xLine(endAbsolute = endWidth)
  |> yLine(endAbsolute = baseHeight + endTabHeight)
  |> xLine(endAbsolute = 0,tag = $seg02)
  |> close()
  |> extrude(length = -depth)

endTabs = startSketchOn(XZ)
  |> startProfile(at = [endWidth, baseHeight])
  |> xLine(endAbsolute = endWidth + endTabWidth)
  |> angledLine(
       angle = 135,
       endAbsoluteY = baseHeight + endTabHeight
     ,tag=$toFillet)
  |> xLine(endAbsolute = endWidth)
  |> close()
  |> extrude(length = -1 * endTabThickness)
  |> fillet(
       radius = 0.1,
       tags = [getNextAdjacentEdge(toFillet)]
     )
  |> patternLinear3d(
       axis = [0, 1, 0],
       distance = buildPlateThickness + thicknessTolerance + endTabThickness,
       instances = nPlates + 1
     )

endTabs2 = startSketchOn(XZ)
  |> startProfile(at = [width - endWidth, baseHeight])
  |> xLine(endAbsolute = width - endTabWidth)
  |> angledLine(
       angle = 45,
       endAbsoluteY = baseHeight + endTabHeight
     ,tag=$toFillet2)
  |> xLine(endAbsolute = width - endWidth)
  |> close()
  |> extrude(length = -1 * endTabThickness)
  |> fillet(
       radius = 0.1,
       tags = [getNextAdjacentEdge(toFillet2)]
     )
  |> patternLinear3d(
       axis = [0, 1, 0],
       distance = buildPlateThickness + thicknessTolerance + endTabThickness,
       instances = nPlates + 1
     )


union([base,endTabs])
