Every fixture slot in Counts has two independent knobs:
Catalog Number1–6 builds the part-number string (and can explode a run into multiple cut rows), and
Catalog Qty1–6 decides how many of that part to order.
Both resolve per fixture instance — the length-aware modes against the Linear Length parameter.
Static text plus optional length tokens. Length tokens can explode one instance into several Worksheet rows — one per cut length — with the length baked into the SKU.
One quantity rule per slot — flat counts, multiples, ratios, per-type, or continuous-stock piece counts via N @ft / N @in. Never explodes; the SKU stays fixed and only the quantity scales.
A single slot uses one or the other: a length token in the Catalog Number and a Catalog Qty value on the same slot is a validation error.
Part 1 · Catalog NumberDrop a {…} token into Catalog Number1–Catalog Number6 to stamp each instance's Linear Length into the part number. A bare format produces one row per unique resolved length; a cut-list mode (max / sizes / pool) splits each run into orderable pieces. The min=N modifier floors the shortest cut those pieces may be.
Greedy-splits each instance into N"-sized cuts plus one remainder piece. Every cut is a real ordered length — zero waste.
Covers each instance with the fewest sticks whose sum ≥ instance length, tie-break least overage. Each instance gets dedicated material — no offcut reuse.
Same stock sizes as sizes=, but offcuts are reused across instances. Hardcoded 18" minimum reusable offcut. Typically drops waste from ~25% to ~3–5% on multi-size jobs.
Modifier · min=N — a floor on the emitted cut length, not a fourth mode. Add it to max= (or to a bare token) and any piece shorter than N" — a short made-to-length remainder, or a whole instance under N" — is clamped up to N", over-supplying by a few inches rather than shipping an unbuyable sub-minimum cut. E.g. {xx",max=197,min=12} for tape with a 197" reel and a 12" minimum order. Not valid with sizes=/pool= (their stock lengths already clear any floor), and min may not exceed max.
| Token | Output (42") |
|---|---|
| {xx} | 42 |
| {xx"} | 42" |
| {xxIN} | 42IN |
| {ft} | 4 |
| {xx'} | 4' |
| {xxFT} | 4FT |
| {xx'-xx"} | 3'-6" |
| {xxFT-xxIN} | 3FT-6IN |
Whole-foot formats (ft, xx', xxFT) order in whole feet, rounding each cut up to the next foot — a 42" run orders as 4', never a short 3' or an un-orderable 0'. Because they carry only whole feet, every explicit length in the token (max, min, sizes/pool stock) must itself be a multiple of 12. Need the exact length? Use {xx'-xx"}, which renders feet + inches with no rounding.
| Catalog Number parameter | Mode | Resolved Worksheet row(s) |
|---|---|---|
| LUT-RBN-{xx"} | plain | LUT-RBN-42", LUT-RBN-78" |
| LUT-RBN-{xxIN} | plain | LUT-RBN-42IN, LUT-RBN-78IN |
| LUT-RBN-{xx'} | plain | LUT-RBN-4', LUT-RBN-7' (42"→4', 78"→7', rounded up) |
| LUT-RBN-{xxFT} | plain | LUT-RBN-4FT, LUT-RBN-7FT (rounded up to whole feet) |
| LUT-RBN-{xx'-xx"} | plain | LUT-RBN-3'-6", LUT-RBN-6'-6" |
| LUT-RBN-{xx",max=96} | max | LUT-RBN-96" + LUT-RBN-28" (for 124" instance) |
| LUT-RBN-{xxFT-xxIN,max=96} | max | LUT-RBN-8FT-0IN + LUT-RBN-2FT-4IN |
| PLX-HTL67COB-12MM-TW-{xx",max=197,min=12} | max + min | …TW-197" + …TW-12" (200" instance: 197" cut + 3" remainder floored up to 12") |
| TEK4{ft,sizes=48|96|144} | sizes | TEK44, TEK48, TEK412 |
| LUT-RBN-{xx",sizes=94|48} | sizes | LUT-RBN-48" + LUT-RBN-94" (covering 130" instance, no offcut reuse) |
| LUT-RBN-{xx",pool=94|48} | pool | LUT-RBN-48" + LUT-RBN-94" (stock-SKU rows; offcuts reused across instances) |
Put a quantity rule in Catalog Qty1–Catalog Qty6 to control the ordered quantity for that slot's part. The input string picks the mode automatically. Leave it blank and the slot just inherits the fixture Count.
| Input | Mode | Computes | What it's for |
|---|---|---|---|
| (blank) | default | Count | One per fixture. The normal case — order as many parts as there are fixtures. |
| N | per-fixture | Count × N | A fixed multiple per fixture: 2 mounting clips, 4 screws, a pair of end caps. |
| 1/N | ratio | ceil(Count / N) | One shared part per N fixtures: one driver per 4 heads, one feed per 6 modules. Rounds up. |
| N @type | per-type | N | A flat count for the whole type, regardless of fixture count: one controller, one power pack. |
| N @ft | length | ceil(ceil(LinearLength × 1.05) / N) | Continuous stock N feet long, cut to cover the run, with 5% overage. Tape reels, channel sticks. |
| N @in | length | ceil(ceil(LinearLength × 1.05) / (N ÷ 12)) | Same as @ft, but stock is given in inches (normalized to feet internally). Use for clip spacing and short stock you naturally measure in inches. |
N is a positive number. It must be a whole number for the first four modes; for @ft/@in it may be fractional (stock lengths like 16.40 ft or 21 in are valid). @ft and @in are the same Length mode — only the unit of the number differs, and @in is divided by 12 to feet, so 16.40 @ft and 196.80 @in compute identically.
@ft / @in) in detailN is the stock length — a reel, a channel stick, or a clip interval. State the unit in the keyword: @ft for feet, @in for inches. The run (Linear Length, in feet) is padded by 5% for overage, rounded up to whole feet, then divided by the stock length and rounded up to whole pieces. @in stock is converted to feet (÷ 12) first, so the division is always feet ÷ feet.
Example — a 30 ft run ordered in 5 m (16.40 ft) reels, i.e. 16.40 @ft:
| Catalog Qty | Mode | Scenario | Worksheet Qty |
|---|---|---|---|
| (blank) | default | 12 downlights, one trim each | 12 |
| 2 | per-fixture | 12 fixtures, 2 mounting clips apiece | 24 |
| 1/4 | ratio | 14 heads, one driver per 4 | ceil(14/4) = 4 |
| 1 @type | per-type | One control processor for the whole type | 1 |
| 16.40 @ft | length | 30 ft run, 5 m (16.40 ft) reels | ceil(32 / 16.40) = 2 |
| 21 @in | length | 30 ft run, mounting clip every 21" (1.75 ft) | ceil(32 / (21÷12)) = 19 |
@ft / @in?Both deal with continuous runs, but they answer different questions. The deciding factor is whether the cut length belongs in the part number or only in the quantity.
One instance becomes several Worksheet rows, each a distinct SKU with the cut length stamped into the part number. Pricing sees a line per length.
One fixed part number, one row. Only the quantity grows with the run — the number of reels, sticks, or clips needed to cover it.
max, sizes, and pool are mutually exclusive. min is a modifier — it pairs with max or a bare token, but never with sizes/pool, and it may not exceed max.max, sizes, pool, and min values are positive integers in inches, regardless of the display format.max/sizes/pool) are always inches; Catalog Qty stock length states its own unit — @ft or @in. There is no unit-less length keyword.N @ft / N @in require the type to have instances with a positive Linear Length; otherwise it's a validation error.@ft/@in) resolve against each instance's Linear Length; the other Catalog Qty modes resolve against the fixture Count.N is whole-number for N, 1/N, and N @type; N @ft/@in accept fractional stock lengths.