kcl-samples → 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], )