---
title: "Cable management"
description: "Grommets and cable tie mounts — the clear bore that limits the bundle, the panel thickness each needs, and what the path checks read."
url: https://kaicad.barpom.xyz/docs/catalogue/cable-management
schema: "0.1"
source: packages/catalogue/data/fixtures/cable.yaml
---

# Cable management

Cable management is in v1 scope deliberately. A desk or a media unit that cannot get a cable
from the back of a device to a socket is a design failure that no other woodworking tool
checks for, and the geometry to check it — a panel with a hole in it — is already in the
model.

> **The `PTH-` path rules are not built yet.** The codes are reserved in the registry and no
> rule implements them, so nothing currently checks that a cable route is continuous. These
> entries are the numbers to design to in the meantime, and the edge-distance and
> feature-within-blank checks do run against the holes you cut for them.

## Grommets

| Id | Nominal Ø | Depth | Ring Ø | **Clear bore** |
| --- | --- | --- | --- | --- |
| `fixtures.grommet.40` | 40 | 22 | 46 | **34** |
| `fixtures.grommet.60` | 60 | 24 | 68 | **52** |

The 40 has a cap; the 60 has a brush insert, which keeps dust out and still passes a plug.

### `clearBore` is not the hole you drill

This is the field that exists to prevent one specific mistake. The drilled hole for a
`grommet.40` is 40 mm. The **usable** opening once the trim ring is fitted is 34 mm — the cap
costs about 6 mm.

Size a bundle against the drilled hole and it will not fit — a 40 mm grommet passes a 34 mm
bundle, not a 40 mm one.

### Machining

| Id | Through part | Receiving part |
| --- | --- | --- |
| `grommet.40` | 40 mm hole, through | — |
| `grommet.60` | 60 mm hole, through | — |

### Rules

| Id | Min edge | Min end | Min spacing | Panel thickness |
| --- | --- | --- | --- | --- |
| `grommet.40` | 28 | 28 | 60 | 12 – 22 |
| `grommet.60` | 40 | 40 | 90 | 12 – 24 |

**Both a minimum and a maximum panel thickness.** The maximum is real: the body is 22 mm long,
so it will not reach through a 25 mm top, and the grommet simply will not seat. The minimum is
what the clip needs to grab.

A 40 mm grommet also needs 28 mm of panel around it. Putting one 20 mm from a back edge splits
the panel, and the edge-distance check catches it.

## Cable tie mounts

| Id | Base | Screw bore |
| --- | --- | --- |
| `fixtures.cable_tie_mount.20` | 20 mm square × 8 | 2.5 mm × 12 deep |

| Min edge | Min end | Min engagement | Min spacing |
| --- | --- | --- | --- |
| 14 | 20 | 10 | 100 |

Screwed or adhesive. End grain is `warn` — the mount is carrying a cable bundle in shear and
wants face grain under it.

100 mm minimum spacing is about the bundle, not the wood: tie mounts closer than that do not
let the cable bend between them.

## Using them

A grommet does not join two parts, so there is no second part to mate to. Cut its hole as a
[`hole` feature](/docs/schema/features#hole) on the panel, sized from the table above:

```yaml
parts:
  - id: desk_top
    material: top_stock
    grain: length
    blank: { length: 1600, width: 700, thickness: 22 }
    features:
      - kind: hole
        id: cable_exit
        on: top
        diameter: 60          # fixtures.grommet.60 — drilled size, not clear bore
        through: true
        at: { u: 1400, v: 120 }
```

This is the one place the catalogue's numbers are yours to transcribe rather than the
compiler's to apply, because a grommet is not a fastener between two parts. Check three
things against the table:

- **Panel thickness** is inside the entry's range — a 22 mm top is at the limit of the
  `grommet.40` and fine for the `grommet.60`.
- **The hole is at least the minimum edge distance from every edge.** 120 mm from the back
  edge of a 700 mm top clears the `grommet.60`'s 40 mm easily; 20 mm would not, and
  [`GEO-003`](/docs/validation/error-codes#geo-003) measures a hole at its **rim**, not its
  centre.
- **The bundle fits the clear bore**, not the drilled diameter.

The hole itself is checked — that it lands on the board and keeps its edge distance. What is
not yet checked is whether the route it belongs to actually goes anywhere, which is what the
`PTH-` rules will do.

## Assembly

Both grommets fit with no tool, and the step hint is `after_finish` — they go in once the
panel is oiled or lacquered, because finishing around a fitted grommet is miserable. The tie
mounts are `after_finish` too.

Those hints reach the assembly steps when a fixture is declared on a joint. Since a grommet is
authored as a feature today, put it in the part's `note:` instead.

## Procurement

| Id | Pack sizes | Unit cost |
| --- | --- | --- |
| `grommet.40` | 1 · 10 | 2.10 |
| `grommet.60` | 1 · 10 | 3.40 |
| `cable_tie_mount.20` | 20 · 50 | 0.18 |
