Designing Weaving Drafts
A weaving draft has four linked components. Given any three, the fourth (or the resulting cloth structure) can be derived:
- Threading – order in which warp threads pass through heddles on shafts
- Tie-up – which shafts each treadle lifts (loom-specific; direct-tie-up looms skip this)
- Treadling – sequence in which treadles are pressed
- Drawdown – the resulting over/under pattern (the actual cloth structure)
Minimal Python example (plain weave, 2 shafts):
Pythonimport numpy as np import matplotlib.pyplot as plt threading = [0, 1, 0, 1, 0, 1, 0, 1] # warp thread -> shaft index tieup = [[1, 0], [0, 1]] # treadle -> shafts lifted treadling = [0, 1, 0, 1, 0, 1, 0, 1] # pick -> treadle index def drawdown(threading, tieup, treadling): n_warp, n_picks = len(threading), len(treadling) draft = np.zeros((n_picks, n_warp)) for pick, treadle in enumerate(treadling): lifted_shafts = tieup[treadle] for warp_i, shaft in enumerate(threading): draft[pick, warp_i] = lifted_shafts[shaft] return draft plt.imshow(drawdown(threading, tieup, treadling), cmap='gray_r') plt.gca().invert_yaxis() plt.show()
Progress:
- Clarify loom type (shaft loom vs. tablet/card loom) and number of shafts/treadles or tablets
- Clarify goal: design a new pattern, convert an existing image/motif, or evaluate/choose a tool
- Define or derive threading, tie-up, treadling
- Generate drawdown and visually verify structure matches intent (twill, plain weave, block design, double cloth, etc.)
- Validate practicality (floats not excessively long, loom's shaft/treadle count respected, selvedge behavior)
- Export in appropriate format (WIF for physical looms, SVG/PNG for documentation, text draft for sharing)
Step detail:
-
Identify loom constraints first. Shaft count, treadle count, and tie-up style (direct vs. table loom with lever-per-shaft) determine what drafts are physically weavable. Tablet weaving has an entirely different model (card rotation direction/angle per pick, not shafts).
-
Choose representation. For algorithmic/generative work, use arrays (numpy-style) as in Quick Start. For interactive design, prefer browser tools (see Tool Selection below) so the drawdown updates live as threading/tie-up/treadling are edited.
-
Derive the missing component. Common cases:
- Have threading + want a known weave structure (e.g., twill) → derive tie-up and treadling from the structure's standard pattern, then adjust treadling order for variations (herringbone, point twill).
- Have a target image/motif → this is overshot/block-weave or jacquard territory; use block-substitution methods or a parametric tool (AdaCAD) rather than hand-deriving.
-
Check floats. A float is a thread that skips over/under more than ~3-4 adjacent threads without interlacing. Long floats weaken cloth and snag. Scan each row/column of the drawdown for consecutive same-value runs; flag anything beyond the weave structure's typical max (satin structures intentionally allow longer floats, e.g. 4-7).
-
Export. WIF (Weaving Information File) is the de facto standard for physical floor looms and is supported by Weave Patterner and little-loom. SVG/PNG suit documentation or tablet-weaving card diagrams.
| Need | Recommended tool | Why |
|---|---|---|
| Interactive browser design, no install | Weave Patterner (steves165.github.io) | Live drawdown, WIF export, 3D preview, block/double-cloth support |
| Tablet/card weaving specifically | Tablet Weaving Draft Designer (jamespbarrett.github.io/tabletweave) | Purpose-built for card rotation diagrams, SVG/PNG/text export |
| Programmatic/algorithmic generation, scripting pipelines | Python (numpy + matplotlib) | Easy to script herringbone/twill variants, batch-generate, embed in notebooks |
| Parametric/jacquard or complex structural exploration | AdaCAD | Built for algorithmic manipulation of drafts across shaft and jacquard looms |
| Embedding draft logic in another app (validation, conversion) | Rust (weave-draft crate) | Typed, validated draft representation meant to be composed with other tools |
| Small-scale physical loom (shoebox/backstrap) | little-loom | Generates heddle frames from WIF directly |
| Accessibility requirement (blind weavers) | Simphony | Audio-enhanced drafting interface |
Default recommendation when unspecified: Weave Patterner for exploration, Python for anything needing custom generation logic or reproducible scripted output.
Example 1:
Input: "I want a 2x2 twill herringbone draft for 8 shafts."
Output: Threading in point-twill order [0,1,2,3,3,2,1,0] repeated, tie-up as standard 2x2 twill rotation [[1,1,0,0],[0,1,1,0],[0,0,1,1],[1,0,0,1]] per shaft-group, treadling mirrored to match threading direction (ascending then descending) to produce the herringbone chevron. Drawdown rendered with matplotlib, verified no float exceeds 2 threads (correct for 2x2 twill).
Example 2: Input: "I have a scanned image of a motif and want it woven as a block design." Output: Recommend converting the image to a binary block map first (quantize to light/dark regions sized to realistic block counts for the loom's shaft count), then use AdaCAD or a block-substitution script to map blocks to threading/treadling units — not a direct pixel-to-thread conversion, since floor looms can't resolve arbitrary resolution.
Example 3: Input: "Which tool should I use to just try out tie-up changes quickly?" Output: Weave Patterner — no install, live drawdown updates as you click tie-up cells, WIF export when finished.
- Always state loom type and shaft/treadle count before producing a draft — a draft valid for an 8-shaft loom may be unweavable on 4.
- Prefer deriving from known weave-structure templates (plain, twill, satin, basket) over inventing tie-ups from scratch; perturb a known-good template instead.
- Check float length after every generated or edited draft, not just at the end.
- When converting images/motifs, downsample to a block grid matching the loom's practical resolution before generating threading — don't attempt per-pixel threading.
- For tablet weaving, remember direction (S/Z) and number of turns per pick matter as much as which cards are threaded — treat it as a distinct model from shaft weaving, not a variant.
- Don't conflate tablet/card weaving drafts with shaft-loom drafts — tools and data models are not interchangeable (tabletweave vs. Weave Patterner serve different structures).
- Don't ignore tie-up feasibility for direct-tie-up looms (e.g., many rigid-heddle or simple table looms) — treadling freedom is constrained there.
- Don't generate drawdowns without checking float length; a mathematically valid drawdown can still be unweavable cloth.
- Don't assume WIF export is universal — verify the target loom/software actually reads WIF before relying on it as the deliverable.
- Don't hand-derive complex structures (double cloth, jacquard, block weaves) from first principles when a parametric tool like AdaCAD already encodes the correct construction rules.