Resources Numerical accuracy
Calculations
Every calculation under our calculation policies: what it works out, its formula and the precision it runs at. Open one to see its code as it is in the released app.
Calculations
-
Labor and machine hours
The labor hours from the count of each cabinet kind, and the machine hours from the number of sheets.
hours = Σ count × hours per kind + frames × extra; machine = sheets × minutes per sheet ÷ 60
Cabinet job cost estimate addons/cabinetcraft/lib/estimate.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Subtotal, markup, tax and total
The totals of the estimate and the cost per cabinet.
subtotal = Σ amounts; markup = subtotal × rate; tax = (subtotal + markup) × rate; total = subtotal + markup + tax
Cabinet job cost estimate addons/cabinetcraft/lib/estimate.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
A rate read from a shop's table
Turns one cell of an imported rate table into a number.
Cabinet job cost estimate addons/cabinetcraft/lib/estimate.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Rate table lines
Splits each line of a text rate table into a path and a value.
Cabinet job cost estimate addons/cabinetcraft/lib/estimate.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Rounding to a number of decimals
Rounds a value to dp decimals, 6 by default.
round(v, dp) = Math.round(v × 10^dp) ÷ 10^dp
Cut list sizes, areas and banding lengths addons/cabinetcraft/lib/cutlist/cutlist.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Cut size of a part
The size to cut a part so it measures its finished size once the banding is on.
cut width = width − (t_L1 + t_L2) + premill × banded L edges; cut length = length − (t_W1 + t_W2) + premill × banded W edges
Cut list sizes, areas and banding lengths addons/cabinetcraft/lib/cutlist/cutlist.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Pieces and areas per material
The piece count, finished area and cut area of each material and thickness.
area = Σ qty × length × width; cut area = Σ qty × cut length × cut width
Cut list sizes, areas and banding lengths addons/cabinetcraft/lib/cutlist/cutlist.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Edge banding length
The length of each banding, the number of edges, and the length with trim waste.
length = Σ qty × edge; with waste = Σ qty × (edge + waste per edge)
Cut list sizes, areas and banding lengths addons/cabinetcraft/lib/cutlist/cutlist.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Rough sheet count
An estimate of the sheets a material needs, from area only.
estimate = ⌈round(cut area × (1 + 0.15) ÷ sheet area, 9 decimals)⌉
Cut list sizes, areas and banding lengths addons/cabinetcraft/lib/cutlist/cutlist.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Parts handed to nesting
Each part as a rectangle at its cut size for the nesting engine.
Cut list sizes, areas and banding lengths addons/cabinetcraft/lib/cutlist/cutlist.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Cut list CSV numbers
Writes the cut list as CSV text.
number cell = round(v, dp), dp = 2 by default
Cut list sizes, areas and banding lengths addons/cabinetcraft/lib/cutlist/cutlist.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Arcs to chords
Turns a loop with bulges into points, with each arc as chords no further than the sag from it.
θ = 4 atan(b); r = chord ÷ (2 sin(|θ| ÷ 2)); steps = ⌈|θ| ÷ (2 acos(1 − min(sag, r) ÷ r))⌉
Sheet nesting addons/cabinetcraft/lib/nest/nest.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Area of a loop with arcs
The signed area of a closed loop, with each arc's segment included.
2A = Σ (xᵢ yᵢ₊₁ − xᵢ₊₁ yᵢ) + Σ sign(θ) r² (|θ| − sin|θ|)
Sheet nesting addons/cabinetcraft/lib/nest/nest.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Area of a part
A part's area: its outline less its holes.
area = |A₀| − Σ |Aₖ|
Sheet nesting addons/cabinetcraft/lib/nest/nest.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
A part moved to its place
Rotates, mirrors and moves a part's loops to their position on the sheet.
q = (x, y) + R(rot) · (m pₓ, p_y), m = −1 when mirrored; bulge × m
Sheet nesting addons/cabinetcraft/lib/nest/nest.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Turns a part may take
The rotation angles tried for a part, from its grain and the turn step.
no grain: rot = k × 2π ÷ n, n = round(360 ÷ step); grain: rot = −g (+ π) ± tolerance
Sheet nesting addons/cabinetcraft/lib/nest/nest.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
A shape on the raster
Marks every grid cell a part touches.
cell i = ⌊(x − oₓ) ÷ res⌋; edge cells from the segment's lowest and highest point in each column
Sheet nesting addons/cabinetcraft/lib/nest/nest.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Raster cell size and clearance
The cell size of the raster, the arc sag, and the number of cells kept clear around each part.
res = max((h − 2 margin) ÷ 750, 1e-6), at most smallest ÷ 4; sag = min(res ÷ 8, 0.1); grow = ⌈(spacing + 2 sag) ÷ res − 1e-9⌉
Sheet nesting addons/cabinetcraft/lib/nest/nest.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Placed position of a part
The position of each placed part in sheet coordinates.
x = margin + gₓ × res − shape origin x; y = margin + g_y × res − shape origin y
Sheet nesting addons/cabinetcraft/lib/nest/nest.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Used length and efficiency
The length used on each sheet and the share of the sheet area the parts cover.
used = max x of the placed outlines + margin; efficiency = Σ part area ÷ (sheets × w × h), or ÷ (used × h) on a roll
Sheet nesting addons/cabinetcraft/lib/nest/nest.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Distance between two edges
The shortest distance between two segments, 0 when they cross.
0 when the cross-product signs differ on both segments; else min of the four end-point-to-segment distances
Sheet nesting addons/cabinetcraft/lib/nest/nest.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Re-check of a nest
Checks that no two placed parts overlap or come closer than the spacing, and that all lie inside the margins.
outside when the bounding box passes a margin by more than eps; overlap when d ≤ eps or one part's first point is inside the other; close when d < gap − eps
Sheet nesting addons/cabinetcraft/lib/nest/nest.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Lines and arcs joined into loops
Joins separate line and arc pieces into closed loops where their ends meet.
ends meet when their distance ≤ 1.5 × tol
Sheet nesting addons/cabinetcraft/lib/nest/nest.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Bulge of an arc
The bulge value of an arc from its sweep in degrees.
bulge = tan(sweep × π ÷ 180 ÷ 4)
Sheet nesting addons/cabinetcraft/lib/nest/nest.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Flat pattern pieces to loops
Turns line, arc, circle and polyline pieces of a flat pattern into closed loops with bulges.
arc end = c + r (cos a, sin a); sweep = (a₁ − a₀) mod 360; circle = two bulges of 1
Sheet nesting addons/cabinetcraft/lib/nest/nest.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Arcs and ellipses read from DXF
Reads ARC and ELLIPSE entities into pieces or loops.
ellipse: n = max(8, ⌈sweep ÷ (2π ÷ 96)⌉) points at equal parameter steps
Sheet nesting addons/cabinetcraft/lib/nest/nest.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Joining tolerance for a DXF
The distance within which loose line and arc ends of a DXF are joined.
tol = max(1e-6, 1e-7 × largest absolute coordinate)
Sheet nesting addons/cabinetcraft/lib/nest/nest.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Outlines and their holes
Sorts loops into parts: an outline and the holes directly inside it.
Sheet nesting addons/cabinetcraft/lib/nest/nest.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Numbers written to the DXF
Formats every coordinate, bulge and text height of the nest DXF.
text = v.toFixed(6) with trailing zeros removed; |v| < 1e-12 written as 0
Sheet nesting addons/cabinetcraft/lib/nest/nest.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Sheets stacked in the DXF
The y offset of each sheet in the written DXF.
offset₀ = 0; offsetₛ₊₁ = offsetₛ − (Hₛ + gap), gap = 0.1 × tallest sheet by default
Sheet nesting addons/cabinetcraft/lib/nest/nest.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Loads at the joints
Turns roof, snow and ceiling loads in kPa into forces in kN at the joints of the frame.
top chord: w = (dead × L + snow × Δx) × spacing; bottom chord: w = ceiling × Δx × spacing; half to each end
Truss member forces and timber checks addons/trusscraft/lib/analysis.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Wind and uplift forces at the joints
Forces at the top-chord joints from wind pressure normal to the roof and from a net uplift on plan.
F = p × spacing × L; n = (−Δz, Δx) ÷ L; joint force = −n F ÷ 2
Truss member forces and timber checks addons/trusscraft/lib/analysis.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Load across each chord member
The load per meter across each chord member, per load case, used for bending between panel points.
c = |Δx| ÷ L; dead: w c; snow and uplift: w c²
Truss member forces and timber checks addons/trusscraft/lib/analysis.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Linear solve
Solves a square system of linear equations.
Truss member forces and timber checks addons/trusscraft/lib/analysis.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Member forces by the method of joints
The axial force in every member and the support reactions for one set of joint loads.
Σ member pulls + reactions = load at every joint; members + 3 = 2 × joints
Truss member forces and timber checks addons/trusscraft/lib/analysis.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Member check
The utilization of one member under an axial force and a bending moment.
tension: T ÷ (Ft·CD·A); compression: fc ÷ (Fc·CD·Cp), Cp = q − √(q² − α ÷ c), q = (1 + α) ÷ 2c, α = FcE ÷ (Fc·CD), FcE = 0.822 Emin ÷ (le ÷ d)²
Truss member forces and timber checks addons/trusscraft/lib/analysis.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Governing combination for a member
The load combination that gives a member its highest utilization, with the largest and smallest force over all combinations.
Truss member forces and timber checks addons/trusscraft/lib/analysis.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Smallest sizes that pass
The smallest timber size for the top chord, the bottom chord and the webs that keeps every member at or under a utilization of 1.
Truss member forces and timber checks addons/trusscraft/lib/analysis.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Deflection estimate
The largest vertical deflection at a bottom-chord joint and the span-to-deflection ratio.
δ = Σ N n L × 1000 ÷ (E A)
Truss member forces and timber checks addons/trusscraft/lib/analysis.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Frame member stiffness
The stiffness of each member of the attic frame, turned into the frame's axes and added to the whole.
EA = E b d; EI = E b d³ ÷ 12; K = Tᵀ k T
Truss member forces and timber checks addons/trusscraft/lib/frame.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Uniform load on a level beam
The joint forces and moments that stand in for a uniform load on the floor or ceiling tie.
end force = w L ÷ 2; end moment = w L² ÷ 12
Truss member forces and timber checks addons/trusscraft/lib/frame.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Frame displacements, forces and moments
Solves the frame and reads each member's axial force and each beam's largest moment.
N = (EA ÷ L)(u_b − u_a); M = max(|Ma|, |Mb|, |w L² ÷ 8 − (|Ma| + |Mb|) ÷ 2|)
Truss member forces and timber checks addons/trusscraft/lib/frame.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Frame support reactions
The reactions at the two supports of the attic frame.
R = Σ K·D − F for the support's row
Truss member forces and timber checks addons/trusscraft/lib/frame.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Load combinations
Member forces, chord moments and reactions for each combination of the load cases.
force = Σ factor × case force; M = |w| L² ÷ momentDiv
Truss member forces and timber checks addons/trusscraft/lib/design.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Point loads from carried trusses
Adds point loads, such as the reactions of jack trusses on a girder, at the nearest top-chord joint.
Truss member forces and timber checks addons/trusscraft/lib/design.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Attic frame sizing passes
Repeats the frame solve and the sizing of an attic truss until the sizes settle.
Truss member forces and timber checks addons/trusscraft/lib/design.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Stub forces and the governing force per member
The force in each bearing stub and, for the joints and the drawing, the force of largest size in each member over all combinations.
stub force = −vertical reaction; governing = value with the largest |force|
Truss member forces and timber checks addons/trusscraft/lib/design.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Forces used for the deflection
Chooses the member forces the deflection estimate is based on.
service force = dead case + snow case
Truss member forces and timber checks addons/trusscraft/lib/design.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Bearing reactions
The largest and smallest vertical reaction at each bearing and the largest horizontal reaction, over the combinations.
Truss member forces and timber checks addons/trusscraft/lib/design.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Ceiling and floor loads of an attic truss
The load on each bottom-chord member of an attic truss in a combination.
w = f_D × ceiling dead × spacing + f_S × floor live × spacing (room floor only)
Truss member forces and timber checks addons/trusscraft/lib/design.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
A calculation is added only after its source was read. Each statement can be checked in the code shown on its policy's page; the app repositories are public. When a release changes a calculation, its page says so until it has been read again.