Sign in to continue
Variables: qty (LF/SF/EA of the measurement), assembly parameters
(oc_in, height_ft, pliesβ¦), the global factors below, and the
assembly's derived values. Formula = 0 drops the line.
ceil(x) | round UP to whole pieces (ceiling) β you can't ship 6.2 studs, so 6.2 β 7 |
floor(x) | round DOWN to whole pieces β 6.9 β 6 |
round(x) | round to the nearest whole number |
min / max | smaller / larger of two values β max(1, β¦) means "at least 1" |
abs(x) | the value without its minus sign |
x if cond else y | choose: use x when the condition holds, otherwise y |
qty | the measurement itself β LF for linear, SF for area, EA for count |
studs_n | stud COUNT for the wall (spacing + waste allowance + 1 starter) |
stud_sticks | stock sticks the studs get cut from (frost walls) |
sheets_n | sheathing sheet count (wall/floor area Γ· 32 SF + waste) |
plate_lf | total plate LF: top+bottom plates Γ wall LF, plus blocking rows |
p16 / p14 / p12 | 16' / 14' / 12' plate PIECE counts β plate_lf split by the
plate_pct_16/14/12 factors below (38/34/28% standard; keep the three β₯ 100% total) |
joists_n | joist count (length Γ· span Γ 12 Γ· spacing + 1) |
oc_in | on-centre spacing in inches (16" o.c., 24" o.c. β¦) |
plies / depth_in | built-up member: number of plies laminated together / board depth in inches (8=2x8, 10=2x10β¦) |
hlen | one header's stock length: the DRAWN length as-is (bearing is already in the
geometry β the line grows header_bearing_in/2 = 3" past each clicked node), rounded UP by
header_round_ft steps, clamped header_min_ftβheader_max_ft (2x12 runs to 20').
The stick is the yard's stock for the depth: 2x8 10'β16', 2x10 14'/16', 2x12 14'β20' |
avg_width_ft | counted openings (headers by count): the average opening width β
header_bearing_in IS added here because a counted opening has no drawn line |
header_bearing_in | total header bearing (6" std = 3" each side) β grows drawn header
lines at the nodes; added to avg_width_ft for counted openings |
post_round_ft / joist_round_ft | global length rounding: posts round UP to 2' increments, joists & beams to the nearest foot β change the factors below to change the rule |
size / pwf | dimensional member size ("2x8"/"2x10"/"2x12") / treated (ACQ) option β PWF beams ship the 12' treated stock; there is no treated 2x12 |
ladder_len_ft / ladder_waste | form-ladder stock length (12'/16') and its waste (0.10 = 10%); with PWF the total splits about equally SPF/PWF and PWF rails ship 16' only |
rows_rebar / windows | cribbing: horizontal rebar rows, and window bucks (+1 bar each) |
supply_forms | cribbing: footing forms supplied (2x8x16') β the footing STAKES (LSTAKE) follow it, and their formula runs ONCE on the total LF of every cribbing run that has forms (a job tally β never once per drawn segment), then the 2-bundle minimum |
strap_spacing_in | cribbing strap spacing (24"/48") when straps are included |
brand / series | I-joist maker (Nordic / Weyerhaeuser by banner) and joist series β span checks run against that maker's published table |
rim_board_in | rim board thickness (1-1/8" std) β fill joists trim back this much at outline/opening edges |
What's wrong / confusing / slow? Goes straight to the friction log with your current sheet attached.
Each BANNER is a supplier the estimator quotes for. It carries an export profile and, per product group, the BRAND that banner stocks β the takeoff names members in that brand (I-joists today; hangers and beams are scaffolded for when those selectors land). Add banners and set their brands here.
A CUSTOMER PROFILE carries one builder's preferences: partial formula overrides merged over the global assembly formulas, and default load settings. Assign a profile to a plan in β° Plan details β every BOM, export and email for that plan then uses the customer's math.
The estimator-behavior ledger: every takeoff adjustment β manual draws, edits, deletes, proposal verdicts, scale fixes, notes, exports β captured per user and plan. This is the raw material for learning how an estimator does proper estimating.
THE LEARNING LOOP (K159): every β run is recorded per sheet; every save scores it against what the estimator kept, edited, rejected or drew by hand; a lesson with enough evidence (3 sheets of 2 plans agreeing 80 %) becomes an adjustment the next run reads for that drafting style, and an adjustment that makes the style score worse reverts itself. Apply or revert by hand here β that is the manual training; nothing here ever memorises one plan's answer.
The Claude VISION producer reads each rendered sheet once (sheet kind/storey/title on every page; annotation regions, printed areas and joist notes on plan sheets) and caches the result with the plan β roughly $0.50 per plan, one time. It reads meaning only, never quantities; geometry still does all measuring, and your own edits always outrank it. Turning it OFF stops API calls AND makes every takeoff path ignore API-produced records β your own records and edits are untouched.
To re-read one plan's records: open the plan and use β» AI Re-read in its toolbar (clears API records only, never your edits). Who sees the AI buttons is set per user in the Users tab.