# Belt

> Connection kind `belt` (category `mech`, DSL name `belt`, API v1)

Flexible loop coupling two pulleys. Preserves direction (open belt) or flips it (crossed belt).

## Accepted ports

- `pulley.axis` → `pulley.axis`

## Parameters

- **`side`** — Direction from anchor to driven pulley in the anchor XY plane. One of right, left, up, down, or { angleDeg: N }.
- **`distance`** — Center-to-center distance between the two pulleys (mm). Defaults to the sum of the two pitch radii × 4 — roomy enough for a visible belt run.
- **`crossed`** — When true, the belt crosses between pulleys and the driven direction flips sign. Default false (open belt).

## Parameters schema

| Parameter | Type | Default | Constraints |
| --- | --- | --- | --- |
| `side` | any | right | allowed: right, left, up, down |
| `distance` | Number | null |  |
| `crossed` | Boolean | false |  |

## Kinematics

ω_to = ω_from · (d_from / d_to). Sign is preserved when crossed=false, flipped when crossed=true.

## Layout

This connection computes the driven component position from the anchor.

## Example

```
connect P1.axis -> P2.axis with mech.belt {
  side: "right"
  distance: 180
}
```
