# Build a cabinet, bookcase or wardrobe

Make a parametric carcass with bays, shelves, a back, a plinth, doors, drawers and handles, then change it from the Properties panel.

KerfCraft builds cabinets, bookcases, shelving units and wardrobes with one parametric generator: the **Carcass**. You set its parameters, and KerfCraft makes every panel, hole and joint again from them. Do not edit the generated panels one by one. Change the parameters instead.

## Start a carcass

1. Click **Library…** in the toolbar.
2. Under **Built from parameters**, click **Carcass**.

KerfCraft inserts a carcass at a standard size and selects it. The status bar shows "set its size in Properties › Parameters".

You can also start from a sample or a unit:

- Open **File ▸ Sample projects ▸ Bookcase**, **Fitted wardrobe** or **Kitchen base cabinet**. Then change the parameters.
- Insert a BILLY-size or KALLAX-size unit from **Library…**. See [Add IKEA-size furniture](/docs/how-to/furniture/add-ikea-size-furniture/).

The assistant can also build a carcass from a description, for example "a 900 wide, 1800 high bookcase with four shelves".

## Change the parameters

1. Click the carcass in the viewport, or click its name in the **Model** tree.
2. In the **Properties** panel, find the **Parameters** heading.
3. Hold the pointer over a parameter name to read what it does.
4. Type a new value in the field, then press Enter.

KerfCraft builds the carcass again at once. The **Derived** heading under the parameters shows the results, for example **internalWidth** and **bayWidths**. Warnings show below them with a ⚠.

Length fields take numbers in mm, or a value with a unit (`2.4m`, `90cm`, `36in`). They also take a project parameter name. See [Use project parameters and expressions](/docs/how-to/furniture/use-project-parameters/).

## Set the size and the material

- **width**, **height** and **depth** are the overall outside sizes. The height includes the plinth. The depth includes the back but not the doors.
- **materialId** is the sheet material of the carcass.
- **dividerMaterialId** sets a different material for dividers and shelves. Leave it at **(default)** to use the carcass material.
- **joint** sets how the sides meet the top and bottom: **topBottomBetweenSides** or **sidesBetweenTopBottom**.

## Add bays and shelves

- **bays** is the number of compartments. KerfCraft adds one divider less than the number of bays.
- **bayRatios** sets the relative bay widths, for example `1,1.5,1`. Leave it blank for equal bays.
- **shelvesPerBay** takes one number for all bays, or a list with one number for each bay, for example `5,2,5`.
- **shelfType** is **adjustable** (on shelf pins) or **fixed** (housed full width).
- **shelfPinHoles** **auto** drills rows of 32 mm system shelf-pin holes in each bay with adjustable shelves.

## Add a back and a plinth

- **back** is **none**, **overlay** (fixed over the rear) or **inset** (between the sides, top and bottom).
- **backMaterialId** is the back panel material.
- **plinthHeight** adds a kick board under the bottom panel. 0 means no plinth.
- **plinthSetback** sets the kick board back from the front.

## Add doors

1. Set **doors** to **overlay**, **inset**, **inframe** or **sliding**.
2. Set **doorStyle** to **slab**, **shaker**, **glazed**, **handleless** or **fluted**.
3. Set **doorsPerBay** to 1 or 2.
4. If you want doors in a different material, set **doorMaterialId**.

**doorGap** sets the gap round and between the doors. The default is 3 mm. A shaker door has stiles, rails and a thinner panel in a groove. Set the frame with **shakerFrameWidth** and **shakerGroove**. A glazed door has the same frame round a glass panel (**glassMaterialId**).

With **hingeCups** at **auto**, KerfCraft drills 35 mm hinge cups on the back of each hinged door.

## Add drawers

1. Set **drawersPerBay** to one number for all bays, or a list, for example `0,3,0`.
2. If the drawers must not fill the bay, set **drawerZoneHeight** to the clear height of the drawer opening.
3. If you want drawers inside a wardrobe behind full-height doors, set **drawerFronts** to **internal**.

Each drawer has a box, a bottom in a groove and a front. **runnerClearance** is the gap for the runners on each side. The default is 12.5 mm. KerfCraft uses the longest standard runner length from 250 to 600 mm that fits the depth.

## Add handles

1. Set **handle** to **bar**, **knob**, **cup**, **edge**, **finger** or **none**.
2. For a bar, cup or edge pull, set **handleCentres** to the hole centres of your handle.
3. Set **handlePosition** to **top**, **middle** or **bottom**.
4. Set **handleFinish** to the metal finish you want.

KerfCraft drills the handle holes and draws bar, knob and cup handles in 3D. The drawn handles are accessories: they are never in the cut list. With **handle** at **unspecified**, KerfCraft drills no holes and lists "1× handle" in the BOM.

## Change one generated part

You cannot resize a generated panel: its size comes from the parameters. If you move it, or change its material, KerfCraft records an override on the carcass. The **Properties** panel of the panel shows **Generated by** and the carcass name.

- To keep the part and stop it following the parameters, click **Detach**.
- To remove all your changes, select the carcass and click **Reset manual overrides**.

Edited generated parts show "needs extra checking" in the cut list.

## Before you cut

The cut list shows "Check every dimension against your own measurements before cutting." Do that. KerfCraft does not check that a design is strong enough. A freestanding unit more than twice as tall as it is deep shows "Fix this to the wall so it can't tip".

## Related

- [Fit a carcass into an alcove](/docs/how-to/furniture/fit-a-carcass-into-an-alcove/)
- [Add joints](/docs/how-to/furniture/add-joints/)
- [Make doors and drawers open](/docs/how-to/furniture/make-doors-and-drawers-open/)
- [Check a shelf for sag](/docs/how-to/furniture/check-a-shelf-for-sag/)
