/* Generated by Text-to-CAD: Create a cube with sides of length 20mm. On the top face, add a cylindrical boss of radius 6mm and height 2mm. Then, shell the body to 2mm thickness, leaving the top face of the cylindrical boss open. */ @settings(defaultLengthUnit = mm) // Define the dimensions of the cube cubeSide = 20 // Define the dimensions of the cylindrical boss bossRadius = 6 bossHeight = 2 // Define the shell thickness shellThickness = 2 // Define the fillet radius filletRadius = 2 // Create a sketch for the cube cubeSketch = startSketchOn(XY) |> startProfile(at = [-cubeSide / 2, -cubeSide / 2]) |> xLine(length = cubeSide) |> yLine(length = cubeSide, tag = $seg01) |> xLine(length = -cubeSide) |> yLine(length = -cubeSide, tag = $seg02) |> close() // Extrude the cube cube = extrude( cubeSketch, length = cubeSide, tagEnd = $topFace, tagStart = $capStart001, ) // Apply fillets to all edges of the cube filletedCube = fillet( cube, radius = filletRadius, tags = [ getNextAdjacentEdge(seg01), getNextAdjacentEdge(seg02), // these double wrapped functions are the point of this test getNextAdjacentEdge(getNextAdjacentEdge(seg01)), getNextAdjacentEdge(getNextAdjacentEdge(seg02)) ] ) // Create a sketch for the cylindrical boss on the top face of the cube bossSketch = startSketchOn(filletedCube, face = topFace) |> circle(center = [0, 0], radius = bossRadius) // Extrude the cylindrical boss boss = extrude(bossSketch, length = bossHeight, tagEnd = $bossTopFace) // Shell the cube, leaving the top face of the cylindrical boss open shell([filletedCube, boss], thickness = shellThickness, faces = [bossTopFace])