kcl-samples → modular-shelf-grid

modular-shelf-grid

modular-shelf-grid

KCL

// Modular Shelf Grid // A parametric, grid-based shelving system for layout prototyping and modular storage design.   // This model generates a configurable number of uniform shelf modules, // stacked in a grid defined by row and column counts. // Each module is: // - A rectangular box composed of two vertical side panels and two horizontal shelves // - Open at the front for accessible storage // All dimensions and counts are parametric, enabling rapid iteration // for uses such as built-ins, modular wall storage, or retail shelving.     @settings(defaultLengthUnit = m, kclVersion = 1.0)  columnCount = 5 // number of shelf modules in horizontal direction (X axis) rowCount = 3 // number of shelf modules in vertical direction (Z axis)   // --- Module Dimensions --- unitWidth = 0.4 // external width of each module unitHeight = 0.5 // external height of each module unitDepth = 0.4 // depth from front to back   // --- Geometry Parameters --- panelThickness = 0.02 // thickness for side walls and shelves sidePanelOffset = unitWidth - panelThickness // spacing between left and right panels   // --- Shelf Geometry --- shelfThickness = panelThickness // same as panel thickness shelfWidth = unitWidth - (panelThickness * 2) // fits between side panels shelfDepth = unitDepth // full shelf depth shelfSpacing = unitHeight - shelfThickness // position of top shelf above bottom   // --- Reference Plane --- basePlane = startSketchOn(XY)  // --- Side Panels --- // Left and right vertical panels forming module sides. sidePanelProfile = startProfile(basePlane, at = [-unitWidth / 2, 0])  |> yLine(length = -unitDepth)  |> xLine(length = panelThickness)  |> yLine(length = unitDepth)  |> close()  |> patternLinear2d(  %,  instances = 2,  distance = sidePanelOffset,  axis = [1, 0],  ) sidePanels = extrude(sidePanelProfile, length = unitHeight)  // --- Shelf Boards --- // Two shelves: one at the bottom, one at the top of each module. firstShelfSketch = startSketchOn(basePlane) firstShelfProfile = startProfile(firstShelfSketch, at = [-shelfWidth / 2, 0])  |> yLine(length = -shelfDepth)  |> xLine(length = shelfWidth)  |> yLine(length = shelfDepth)  |> close() firstShelf = extrude(firstShelfProfile, length = shelfThickness)  // Stack two shelf boards inside the unit (bottom and top) shelves = patternLinear3d(  firstShelf,  instances = 2,  distance = shelfSpacing,  axis = [0, 0, 1], )  // --- Grid of Shelf Modules --- // Repeats the basic shelf module (side panels + two shelves) // in both horizontal and vertical directions to form a full grid.   modularShelfArray = patternLinear3d(  [sidePanels, shelves],  instances = columnCount,  distance = unitWidth,  axis = [1, 0, 0],  )  |> patternLinear3d(  %,  instances = rowCount,  distance = unitHeight,  axis = [0, 0, 1],  )