# Weld

> Connection kind `weld` (category `static`, DSL name `weld`, API v1)

Rigid face-to-face junction between two structural parts. Prefer the assembly-solver hints (`face` + `align`): the driven part is placed flush against a named face of the anchor, gap 0 by default. Without hints it keeps the legacy world-axis `axis`/`side` placement.

## Accepted ports

- `undefined.undefined` → `undefined.undefined`

## Parameters

- **`face`** — Preferred hint. Which face of the ANCHOR (in its LOCAL frame) the driven part attaches to: 'top' | 'bottom' | 'front' | 'back' | 'left' | 'right'. A standing leg's physical top is its local 'front' (+Z) face. When present, the driven part is placed flush against this face (gap 0).
- **`align`** — In-plane alignment when `face` is used: 'flush' (default, driven centered on the face, opposing faces touching), 'center' (concentric — driven center coincides with the anchor center, ignoring `face`, e.g. a bolt through a tube), or a numeric [x, y, z] extra world offset (mm).
- **`axis`** — Legacy (no `face`): world axis the faces meet along — 'x', 'y' or 'z'. Default 'y' (the driven part sits on top of the anchor).
- **`side`** — Legacy (no `face`): +1 places the driven part on the positive-axis side of the anchor, -1 on the negative side. Default +1.
- **`gap`** — Clearance left between the mating faces (mm). Default 0 (touching, as a real weld).
- **`offset`** — [dx, dy, dz] slide of the driven part along the joint face (mm), for off-center welds. Default [0, 0, 0].
- **`rotationDeg`** — [rx, ry, rz] orientation of the driven part in degrees. Default [0, 0, 0]. A weld does not inherit the anchor rotation — structural members often meet at 90°.

## Parameters schema

| Parameter | Type | Default | Constraints |
| --- | --- | --- | --- |
| `face` | any | — | allowed: top, bottom, front, back, left, right |
| `align` | any | — |  |
| `offset` | any | — |  |
| `rotationDeg` | any | — |  |
| `axis` | any | y | allowed: x, y, z |
| `side` | Number | 1 |  |
| `gap` | Number | 0 |  |

## Kinematics

None. A weld is static: it propagates no signal. It only fixes geometry and connectivity.

## Layout

This connection computes the driven component position from the anchor.

## Example

```
// rail welded onto the standing leg end (its local +Z = "front"
// face), running along X:
statics.weld(leg, rail, {
  face: 'front', rotationDeg: [0, 90, 0]
});
```
