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.

  • 6,917 calculations in 1,248 source files
  • 143 exact
  • 6,286 in 64-bit
  • 335 with a 32-bit step
  • Last reviewed

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.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • 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.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • 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.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • 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.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • 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.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • 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.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • 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.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • 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.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • 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.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • 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.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • 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.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • 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.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • 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.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Area of a part

    A part's area: its outline less its holes.

    area = |A₀| − Σ |Aₖ|

    Sheet nesting addons/cabinetcraft/lib/nest/nest.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • 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.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • 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.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • 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.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • 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.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • 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.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • 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.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • 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.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • 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.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • 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.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • 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.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • 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.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • 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.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • 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.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Outlines and their holes

    Sorts loops into parts: an outline and the holes directly inside it.

    Sheet nesting addons/cabinetcraft/lib/nest/nest.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • 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.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • 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.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • 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.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • 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.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • 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.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Linear solve

    Solves a square system of linear equations.

    Truss member forces and timber checks addons/trusscraft/lib/analysis.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • 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.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • 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.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • 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.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • 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.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • 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.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • 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.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • 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.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • 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.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • 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.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • 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.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • 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.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • 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.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • 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.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • 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.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • 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.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • 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.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit

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.