kcl-samples → starlink-mini-bracket

starlink-mini-bracket

starlink-mini-bracket

KCL

// Starlink Mini Bracket
// Bracket for holding a starlink device

// Set units in inches (in)
@settings(defaultLengthUnit = in)

// Define parameters
cutoutEdgeLength = 2
cutoutWidth = 0.52
cutoutAngleBase = 8 // degrees
cutoutAngleSide = 14 // degrees
cutoutDepth = 1
cutoutBaseDepth = 0.1
totalWidth = 1.25
blockEdgeLength = 0.5
FLIP = 0

sketch001 = startSketchOn(XZ)
  |> startProfile(at = [0.0, 0.0])
  |> xLine(length = blockEdgeLength + cutoutEdgeLength)
  |> yLine(length = blockEdgeLength, tag = $seg01)
  |> xLine(endAbsolute = blockEdgeLength)
  |> yLine(endAbsolute = blockEdgeLength + cutoutEdgeLength)
  |> xLine(endAbsolute = 0, tag = $seg02)
  |> close()
  |> extrude(length = totalWidth)

sketch002 = startSketchOn(sketch001, face = seg01)
  |> startProfile(at = [blockEdgeLength, 0.0])
  |> xLine(length = cutoutDepth + cutoutBaseDepth)
  |> yLine(length = (totalWidth - cutoutWidth) / 2 - ((1 - FLIP) * cutoutDepth * sin(units::toRadians(cutoutAngleBase))))
  |> angledLine(angle = 180 - ((1 - FLIP) * cutoutAngleBase), lengthX = cutoutDepth)
  |> yLine(length = cutoutWidth)
  |> angledLine(angle = FLIP * cutoutAngleBase, lengthX = cutoutDepth)
  |> yLine(endAbsolute = totalWidth)
  |> xLine(endAbsolute = blockEdgeLength)
  |> close()
  |> extrude(length = -1 * cutoutEdgeLength)

sketch003 = startSketchOn(sketch001, face = seg02)
  |> startProfile(at = [-1 * blockEdgeLength, 0.0])
  |> xLine(length = -1 * (cutoutDepth + cutoutBaseDepth))
  |> yLine(length = (totalWidth - cutoutWidth) / 2 - ((1 - FLIP) * cutoutDepth * sin(units::toRadians(cutoutAngleSide))))
  |> angledLine(angle = (1 - FLIP) * cutoutAngleSide, lengthX = cutoutDepth)
  |> yLine(length = cutoutWidth)
  |> angledLine(angle = 180 - (FLIP * cutoutAngleSide), lengthX = cutoutDepth)
  |> yLine(endAbsolute = totalWidth)
  |> xLine(endAbsolute = -1 * blockEdgeLength)
  |> close()
  |> extrude(length = -1 * cutoutEdgeLength)

barrelD = 0.700
barrelL = 1.10
nRidges = 36
barrelC = 1.25 / 2 // guess
holeD = 0.253
ridgeHeight = 1.1135 - barrelL
ridgeWidth = 0.042

sketch004 = startSketchOn(XY)
  |> startProfile(at = [
       -1 * (barrelC + barrelD / 2),
       -totalWidth / 2
     ])
  |> arc(angleStart = 180, angleEnd = 90, radius = barrelD / 2)
  |> xLine(endAbsolute = 0)
  |> yLine(endAbsolute = -(totalWidth / 2 + barrelD / 2))
  |> xLine(endAbsolute = -barrelC)
  |> arc(angleEnd = 180, angleStart = 270, radius = barrelD / 2)
  |> close()
  |> extrude(length = barrelL)
sketch005 = startSketchOn(sketch004, face = START)
  |> circle(center = [barrelC, -totalWidth / 2], radius = holeD / 2)
  |> extrude(length = -1 * barrelL)

ridgePlane = offsetPlane(YZ, offset = -(barrelC + holeD / 2))

sketch006 = startSketchOn(ridgePlane)
  |> startProfile(at = [-totalWidth / 2, barrelL])
  |> xLine(length = ridgeWidth / 2)
  |> line(end = [-ridgeWidth / 2, ridgeHeight])
  |> line(end = [-ridgeWidth / 2, -ridgeHeight])
  |> close()
  |> extrude(length = -((barrelD - holeD) / 2 - .003))
  |> patternCircular3d(
       arcDegrees = 360,
       axis = [0, 0, barrelL],
       center = [-barrelC, -totalWidth / 2, barrelL],
       instances = nRidges,
       rotateDuplicates = true,
     )