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

  • World transform

    The transform of an object in the scene, through all its parents.

    W = M_root × … × M_parent × M_own

    USD transforms and placement usd/geom.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    • PartCraft
    64-bit
  • Scene units and up axis

    The transform from the scene's own units and up axis to meters with Z up.

    scale by metersPerUnit; Y-up scenes: rotate 90° about X

    USD transforms and placement usd/geom.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    • PartCraft
    64-bit
  • Placement of instanced copies

    The transform of each copy of a point instancer from its position, orientation and scale.

    M = translate(p) × rotate(q) × scale(s)

    USD transforms and placement usd/scene.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    • PartCraft
    64-bit
  • Writing an object's transform

    Stores an object's placement in the exported scene.

    USD transforms and placement usd/build.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    • PartCraft
    64-bit
  • Attribute value to its storage type

    Converts a list of numbers to the number type its USD attribute type calls for.

    USD mesh coordinates in saved and exported files usd/build.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    • PartCraft
    32-bit in part
  • Mesh points and extent

    Stores the points of a mesh and its bounding box in the scene.

    extent = [min x, min y, min z, max x, max y, max z] of the points

    USD mesh coordinates in saved and exported files usd/build.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    • PartCraft
    32-bit in part
  • Lamp intensity

    Converts a lamp's lumens to the intensity a renderer reads.

    intensity = lumens ÷ (683 × area × π)

    USD mesh coordinates in saved and exported files usd/build.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    • PartCraft
    32-bit, display only
  • Single values in the binary file

    Writes one number, tuple or matrix into the binary USD file.

    USD mesh coordinates in saved and exported files usd/usdc-write.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    • PartCraft
    64-bit
  • Arrays in the binary file

    Writes an array of numbers into the binary USD file.

    USD mesh coordinates in saved and exported files usd/usdc-write.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    • PartCraft
    32-bit in part
  • Reading a mesh

    The points, faces and attached values of a mesh read from a USD scene.

    USD mesh coordinates in saved and exported files usd/geom.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    • PartCraft
    32-bit in part
  • Built-in shapes as meshes

    A cube, sphere, cylinder, cone, capsule or plane of a USD scene as a mesh.

    ring point = (r·cos θ, r·sin θ, z), θ = 2π·j ÷ 24

    USD mesh coordinates in saved and exported files usd/geom.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    • PartCraft
    64-bit
  • Frame of a member

    The origin, the unit direction, the two section axes and the length of a member line.

    x = (e − s) ÷ |e − s|; v = unit(Z − x·x_z); u = v × x; u′ = cos a·u + sin a·v, v′ = −sin a·u + cos a·v

    Member frames and local coordinates geom.js
    • DetailCraft
    64-bit
  • Local point to model point

    The model coordinates of a point given along the member and across its section.

    p = o + x·x̂ + u·û + (v + voff)·v̂

    Member frames and local coordinates geom.js
    • DetailCraft
    64-bit
  • Model point to local point

    Where a model point lies along a member and across its section.

    d = p − o; x = d·x̂, u = d·û, v = d·v̂ − voff

    Member frames and local coordinates geom.js
    • DetailCraft
    64-bit
  • End face position on a plane-cut end

    How far along the part its end face is at a given point of the section, for square ends and mitre cuts.

    x = x0 + ku·u + kv·v

    Member frames and local coordinates geom.js
    • DetailCraft
    64-bit
  • Section outline clipped at a height

    The part of a section outline below or above a line, used for coped ends.

    t = (limit − a_v) ÷ (b_v − a_v); new point = (a_u + (b_u − a_u)·t, limit)

    Member frames and local coordinates geom.js
    • DetailCraft
    64-bit
  • Node merging

    One analysis node for every group of points that lie within 1 mm of each other.

    same node when |p − n| ≤ 1 mm

    Analytical frame model from the drawn members analysis.js
    • DetailCraft
    64-bit
  • Splitting a member at the points on it

    The stations along a drawn member where another member's end or a node load lies on it.

    s = (q − start)·u; foot = start + u·s; cut when |foot − q| ≤ 2 mm and 2 mm < s < L − 2 mm

    Analytical frame model from the drawn members analysis.js
    • DetailCraft
    64-bit
  • End points of each piece

    The two points of every piece a split member becomes.

    p = start + u·s

    Analytical frame model from the drawn members analysis.js
    • DetailCraft
    64-bit
  • Section properties per profile

    Area, second moments of area and torsion constant of each profile in use, with the reduced bending stiffness of cracked concrete.

    Iy′ = f·Iy, Iz′ = f·Iz

    Analytical frame model from the drawn members analysis.js
    • DetailCraft
    64-bit
  • Which column feet are supports

    Decides which column feet are held: those with a base plate, or with no member going lower at that node.

    support when lowest z at the node ≥ node z − 1 mm

    Analytical frame model from the drawn members analysis.js
    • DetailCraft
    64-bit
  • Point load on a split member

    Moves a point load from its distance along the drawn member to the piece it falls on.

    a′ = max(0, a − s0)

    Analytical frame model from the drawn members analysis.js
    • DetailCraft
    64-bit
  • Distributed load on a split member

    Cuts a uniform or linearly varying load into the part that falls on each piece.

    w(s) = w + (w₂ − w)·(s − a) ÷ (b − a)

    Analytical frame model from the drawn members analysis.js
    • DetailCraft
    64-bit
  • Sections the drawn members use

    The area and second moments of area listed for each profile in the model.

    Analytical frame model from the drawn members analysis.js
    • DetailCraft
    64-bit
  • One bolt's shear strength

    The single-shear design strength of one bolt in kN.

    φRn = 0.75 × Fnv × (π·d² ÷ 4) ÷ 1000

    Connection autopilot starting sizes autopilot.js
    • DetailCraft
    64-bit
  • End shear from a uniform load

    The end shear of a beam when only a uniform load per meter is given.

    R = w × L ÷ 1000 ÷ 2

    Connection autopilot starting sizes autopilot.js
    • DetailCraft
    64-bit
  • Shear tab rows and plate

    Bolt diameter, number of rows, edge distance and plate thickness for a shear tab.

    clear = d − 2(tf + r); maxRows = ⌊(clear − 2·edge) ÷ 75⌋ + 1; need = max(2, ⌈R ÷ φRn⌉)

    Connection autopilot starting sizes autopilot.js
    • DetailCraft
    64-bit
  • End plate rows and plate

    Bolt rows, plate width, thickness and gauge for an end plate.

    rows wanted = max(4, 2·⌈R ÷ φRn ÷ 4⌉); width = max(150, bf rounded up to 10); gauge = max(90, round(0.55·bf ÷ 5)·5)

    Connection autopilot starting sizes autopilot.js
    • DetailCraft
    64-bit
  • Base plate size and rod spacing

    Plate length and width, rod diameter, hole and rod spacing for a column base.

    length = max(300, (depth + 150) rounded up to 25); sx = length − 100

    Connection autopilot starting sizes autopilot.js
    • DetailCraft
    64-bit
  • Rounding up to a step

    Rounds a size up to the next multiple of a step.

    ⌈v ÷ step − 1e-9⌉ × step

    Connection autopilot starting sizes autopilot.js
    • DetailCraft
    64-bit
  • Box round each part and footing

    The center, axes and half sizes of the box used for the first, coarse test.

    c = o + x̂·L ÷ 2 + v̂·voff; h = (L ÷ 2, width ÷ 2, depth ÷ 2)

    Clash check between parts clash.js
    • DetailCraft
    64-bit
  • Do two boxes overlap

    Whether two oriented boxes overlap by more than the tolerance.

    separated on axis l when |T·l| > r_A + r_B − tol

    Clash check between parts clash.js
    • DetailCraft
    64-bit
  • Point inside a section outline

    Whether a point lies inside a closed outline.

    Clash check between parts clash.js
    • DetailCraft
    64-bit
  • Distance to the nearest outline edge

    The shortest distance from a point to any edge of an outline.

    t = clamp((p − a)·(b − a) ÷ |b − a|², 0, 1); d = |p − a − t·(b − a)|

    Clash check between parts clash.js
    • DetailCraft
    64-bit
  • How far a point is inside a part

    The distance from a point to the outside of a part, zero when it is outside.

    depth = min(x, L − x, distance to each outline edge)

    Clash check between parts clash.js
    • DetailCraft
    64-bit
  • Ray to the far side of the material

    How far a ray from an edge runs before it meets another edge of the section, to place a sample point in the middle of a flange or web.

    t = (w × e) ÷ (d × e), u = (w × d) ÷ (d × e)

    Clash check between parts clash.js
    • DetailCraft
    64-bit
  • Sample points across and along a part

    The points of one part that are tested inside the other.

    stations n = clamp(⌈(t1 − t0) ÷ 10⌉, 2, 40)

    Clash check between parts clash.js
    • DetailCraft
    64-bit
  • Stretch of a part that can reach the other

    The range along one part's axis where it can meet the other part's box.

    t0 = max(0, min x − pad), t1 = min(L, max x + pad); pad = √(h_u² + h_v²)

    Clash check between parts clash.js
    • DetailCraft
    64-bit
  • Reported depth and location

    The depth and the point each clash is reported with.

    depth = round(depth × 10) ÷ 10

    Clash check between parts clash.js
    • DetailCraft
    64-bit
  • Distance from a point to a member line

    The shortest distance from a point to the segment between a member's two ends.

    k = clamp((P − a)·(b − a) ÷ |b − a|², 0, 1); d = |P − (a + k·(b − a))|

    Finding joints between members connections.js
    • DetailCraft
    64-bit
  • Is a member vertical

    Whether a member stands vertical, the condition for a column to take a connection.

    |Δx| < 1 mm and |Δy| < 1 mm and |Δz| ≥ 1 mm

    Finding joints between members connections.js
    • DetailCraft
    64-bit
  • Members end to end in line

    Pairs of member ends that meet in line, with the gap between them.

    along = d·d̂_a; off = |d − d̂_a·along|; in line when |d̂_a·d̂_b| ≥ 0.9999, off ≤ 1 mm, |d| ≤ 50 mm

    Finding joints between members connections.js
    • DetailCraft
    64-bit
  • Beam end at a column

    Which beam ends land on a column, and whether they meet its flange, its web or come in skewed.

    flange when |away·v̂| > 0.9999; web when |away·û| > 0.9999; else skew

    Finding joints between members connections.js
    • DetailCraft
    64-bit
  • Members meeting at an angle

    Pairs of I-shaped member ends that share a point and are not in line, with the angle between them.

    angle = acos(clamp(ê_A·ê_B, −1, 1)) × 180 ÷ π

    Finding joints between members connections.js
    • DetailCraft
    64-bit
  • Plate size written into the profile name

    The thickness and width digits of a plate's profile name, which is how a connection plate's section reaches the built part.

    text = Number(v.toFixed(1))

    Connection plates, holes, bolts and cut-backs connections.js
    • DetailCraft
    64-bit
  • Bolt length rounded up to 5 mm

    The length of a bolt from its grip and the allowance.

    length = ⌈(grip + allowance) ÷ 5 − 1e-9⌉ × 5

    Connection plates, holes, bolts and cut-backs connections.js
    • DetailCraft
    64-bit
  • Anchor rod hole and washer sizes

    The hole diameter, washer size and washer thickness for an anchor rod, from the table in AISC Design Guide 1.

    mm = inches × 25.4

    Connection plates, holes, bolts and cut-backs connections.js
    • DetailCraft
    Exact
  • End plate, its holes and bolts

    Where an end plate sits against the column and where each bolt row goes.

    center = N + away·(faceOff + tp ÷ 2); z_i = z_c + ((rows − 1) ÷ 2 − i)·pitch; hole = face ± ŵ·gauge ÷ 2

    Connection plates, holes, bolts and cut-backs connections.js
    • DetailCraft
    64-bit
  • Edge distance and spacing checks

    Warnings when bolt edge distances, pitch or gauge are under the EN 1993-1-8 Table 3.3 minimums.

    e1, e2 ≥ 1.2·d0; p1 ≥ 2.2·d0; p2 ≥ 2.4·d0

    Connection plates, holes, bolts and cut-backs connections.js
    • DetailCraft
    64-bit
  • Shear tab: beam cut-back

    How far a square, skewed or sloped beam is cut back so every corner of its end clears the column face by the gap.

    setback = max over corners of (faceOff + gap − c·n) ÷ cos A; cos A = dir·n

    Connection plates, holes, bolts and cut-backs connections.js
    • DetailCraft
    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.