the rules of lego — stated, then demonstrated live
Rules
LEGO has a closed vocabulary of connection. Six connector classes, one classification ladder deciding fastened-vs-moving, and that's the whole grammar — everything the pipeline infers reduces to these rules.
connector classes · 6
stud / anti-studcyl · r6 round · ≤10 LDUrigidTHE fastener. A stud in any r6 well — plate antistud, Technic bore — fastens. Incidental spin is not a joint.
pin / pin holecyl · r6 round · >10 LDU, r8 collar seatfriction: rigid · smooth: revoluteLEGO's own distinction: friction ridges = structure, smooth = bearing. Same geometry, opposite intent.
axle / axle holecyl · cross sectionkeyed: rigid · in round bore: revoluteCross-in-cross transmits torque (keyed drive). An axle through a ROUND hole is a shaft in a bearing.
bar / clipcyl r4 + clprevoluteClip wraps bar: rotates about the bar, may slide along it. Minifig hands, panel clips.
hinge fingersfgr + fgrrevoluteInterleaved fingers on a shared pin axis — classic hinge bricks, opening crates.
ball / socketgen M + gen FballTowballs, Mixel joints. Multi-axis; v1 classifies contact, full ball DOF later.
the classification ladder — applied in this order
1studstud into antistud — fastened is fastened
2keyed axleaxle cross in axle hole — driven, not free
3friction pinfriction ridges fasten — smooth pins are the bearings
4part vetoround 1×1s — spin is unobservable
5pair vetotyre on wheel — one solid assembly
6crossed axescontacts on non-parallel axes can't move
7off-axisparallel but non-colinear contacts can't move
8colinearALL contacts share one axis line → the pair is a joint (revolute)
demonstrator — every way two parts can mate
Pick two parts. The enumerator proposes connector-to-connector placements (both polarities, 90° rotations) and keeps only what the editor's own contact detector accepts, classified by the ladder above. Collision between part bodies is not yet checked.
part A (fixed, gray)
part B (placed, yellow)