export const bracket = `// Shelf Bracket // This is a bracket that holds a shelf. It is made of aluminum and is designed to hold a force of 300 lbs. The bracket is 6 inches wide and the force is applied at the end of the shelf, 12 inches from the wall. The bracket has a factor of safety of 1.2. The legs of the bracket are 5 inches and 2 inches long. The thickness of the bracket is calculated from the constraints provided. // Define constants sigmaAllow = 35000 // psi (6061-T6 aluminum) width = 6 // inch p = 300 // Force on shelf - lbs factorOfSafety = 1.2 // FOS of 1.2 shelfMountL = 5 // inches wallMountL = 2 // inches shelfDepth = 12 // Shelf is 12 inches in depth from the wall moment = shelfDepth * p // assume the force is applied at the end of the shelf to be conservative (lb-in) // Calculate required thickness of bracket thickness = sqrt(moment * factorOfSafety * 6 / (sigmaAllow * width)) // this is the calculation of two brackets holding up the shelf (inches) filletRadius = .25 extFilletRadius = filletRadius + thickness mountingHoleDiameter = 0.5 sketch001 = startSketchOn(XZ) |> startProfileAt([0, 0], %) |> xLine(length = shelfMountL - thickness, tag = $seg01) |> yLine(length = thickness, tag = $seg02) |> xLine(length = -shelfMountL, tag = $seg03) |> yLine(length = -wallMountL, tag = $seg04) |> xLine(length = thickness, tag = $seg05) |> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $seg06) |> close() extrude001 = extrude(sketch001, length = width) |> fillet(radius = extFilletRadius, tags = [getNextAdjacentEdge(seg03)]) |> fillet(radius = filletRadius, tags = [getNextAdjacentEdge(seg06)]) |> fillet(radius = filletRadius, tags = [seg02, getOppositeEdge(seg02)]) |> fillet(radius = filletRadius, tags = [seg05, getOppositeEdge(seg05)]) sketch002 = startSketchOn(extrude001, seg03) |> circle(center = [-1.25, 1], radius = mountingHoleDiameter / 2) |> patternLinear2d(instances = 2, distance = 2.5, axis = [-1, 0]) |> patternLinear2d(instances = 2, distance = 4, axis = [0, 1]) extrude002 = extrude(sketch002, length = -thickness - .01) sketch003 = startSketchOn(extrude002, seg04) |> circle(center = [1, -1], radius = mountingHoleDiameter / 2) |> patternLinear2d(instances = 2, distance = 4, axis = [1, 0]) extrude003 = extrude(sketch003, length = -thickness - 0.1) ` /** * @throws Error if the search text is not found in the example code. */ function findLineInExampleCode({ searchText, example = bracket, }: { searchText: string example?: string }) { const lines = example.split('\n') const lineNumber = lines.findIndex((l) => l.includes(searchText)) + 1 if (lineNumber === 0) { // We are exporting a constant, so we don't want to return an Error. // eslint-disable-next-line suggest-no-throw/suggest-no-throw throw new Error( `Could not find the line with search text "${searchText}" in the example code. Was it removed?` ) } return lineNumber } export const bracketWidthConstantLine = findLineInExampleCode({ searchText: 'width =', }) export const bracketThicknessCalculationLine = findLineInExampleCode({ searchText: 'thickness =', })