@rulecad/rules
v0.3.0
Published
Researched rule sets as open data: a Bambu Lab X1C, Cherry MX switches, OEM keycaps, M2 inserts, the Raspberry Pi Pico, materials for analysis (printed PLA and PETG, aluminium, steel, titanium) and more, each value with its source.
Maintainers
Readme
@rulecad/rules
Researched facts for designing printed parts, as open data (CC0, public domain). Every value says what it is, where it comes from and when it was checked, so a design built on it can be traced and corrected.
"bed": { "value": 256, "unit": "mm", "rule": "Build volume is 256 × 256 × 256 mm", "kind": "spec",
"source": "https://…", "checked": "2026-10-11" }| Set | What | Values |
|---|---|---|
| x1c | Bambu Lab X1 Carbon: bed, line width, layer, overhang, bridges, fits and hole compensation | 11 |
| mx | Cherry MX switches: plate cut-out, stem, housing, travel, key pitch | 29 |
| oem | OEM keycap profile: heights and top tilt per row (from KeyV2) | 12 |
| m2 | M2 heat-set inserts and screws | 5 |
| pico | Raspberry Pi Pico: outline, headers, the GPIO on each pin | 18 |
| promicro | Pro Micro controller | 9 |
| sod123 | SOD-123 diode footprint | 3 |
| xiao | Seeed Studio XIAO modules: outline, headers, the pin on each pad | 8 |
| qwiic | Qwiic / STEMMA QT sockets (JST SH, 4 pins): land pattern and pinout | 10 |
| jstph | JST PH (2.0 mm) battery connector | 3 |
| jlcpcb | JLCPCB's limits for two-layer boards | 10 |
| wiring | Room for hand wiring | 1 |
kind says how far to trust a value: spec (a datasheet or manufacturer), community (a widely used figure, such
as KiCad's library or KeyV2), default (a setting that works), derived (read off someone else's model with cad measure: check it
against the real thing, and see its licence), or estimate (nobody has published it: measure it and correct it). Use them with @rulecad/variables (uses: ['x1c'], then x1c.line * 3 in any expression), or read
the JSON from anywhere.
Corrections are the most useful contribution. If you measured something, use the "Correct a rule" issue form on
GitHub, or open a pull request with the value,
"kind": "measured", how you measured it, and the date.
