kcl-samples → c-shape-solid

c-shape-solid

c-shape-solid

KCL

// C-Shape Solid (Abstract Geometry Demo) // This is a simplified geometry study that demonstrates how to create a "C" shape by subtracting a rectangular wedge from a circular ring. This base logic is foundational to models like split washers and other circular parts with a gap.     @settings(defaultLengthUnit = mm)  // ────────── // PARAMETERS // ──────────  // Outer diameter of the ring ringOuterDiameter = 20  // Inner diameter — defines the hole in the middle of the ring ringInnerDiameter = 10  // Thickness of the ring (height in Z direction) ringThickness = 2  // Width of the wedge we will use to cut the split cutGapWidth = 2  // ─────────────────────── // STEP 1: CREATE THE RING // ───────────────────────  // We begin by sketching two concentric circles: the outer boundary and the hole. Then we subtract the inner one to get a donut-like profile. ringSketch = startSketchOn(XY) ringProfile = circle(ringSketch, center = [0, 0], diameter = ringOuterDiameter)  |> subtract2d(tool = [  circle(center = [0, 0], diameter = ringInnerDiameter)  ])  // We extrude this sketch into a 3D solid. This is the full ring, with no gap yet. solidRing = extrude(ringProfile, length = ringThickness)  // ─────────────────────────────── // STEP 2: CREATE THE WEDGE CUTTER // ───────────────────────────────  // We now create a thin rectangular wedge that will be used to cut the split. This wedge starts from the center and extends past the outer radius.  // First, define a little clearance so that the wedge cuts fully through the body cutClearance = ringThickness * 0.5  // Compute wedge dimensions ringOuterRadius = ringOuterDiameter / 2 wedgeLength = ringOuterRadius + cutClearance wedgeHeight = ringThickness + cutClearance * 2  // Draw the wedge on a plane slightly below the ring wedgePlane = offsetPlane(XY, offset = -cutClearance) wedgeSketch = startSketchOn(wedgePlane) wedgeProfile = startProfile(wedgeSketch, at = [0, -cutGapWidth / 2])  |> yLine(length = cutGapWidth)  |> xLine(length = wedgeLength)  |> yLine(length = -cutGapWidth)  |> line(endAbsolute = [profileStartX(%), profileStartY(%)])  |> close()  wedgeBody = extrude(wedgeProfile, length = wedgeHeight)  // ────────────────────── // STEP 3: SUBTRACT WEDGE // ──────────────────────   // Finally, we subtract the wedge body from the solid ring. The result is a simple C-shape: a ring with a single clean gap.   cShape = subtract([solidRing], tools = [wedgeBody])