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
-
Leg dimension
The dimension line beside each leg and the number on it.
real = √(Δx² + Δy² + Δz²) of the leg's 3D ends
Piping isometric drawing and its bill of materials addons/plant/lib/iso.js64-bit- BimCraft
-
Coordinates in the DXF file
Formats paper coordinates, text heights and text angles for the DXF output.
num(v) = v rounded to 4 decimals
Piping isometric drawing and its bill of materials addons/plant/lib/iso.js64-bit- BimCraft
-
Coordinates in the SVG file
Formats paper coordinates for the SVG output and flips Y to run downward.
f(n) = n to 2 decimals; Y = paper height − y
Piping isometric drawing and its bill of materials addons/plant/lib/iso.js64-bit- BimCraft
-
Corners of an item
The four corners in plan of an item of given width, depth, position and turn.
corner = (x₀ + x cos a − y sin a, y₀ + x sin a + y cos a), a = rot × π ÷ 180
Factory layout checks addons/plant/lib/layout.js64-bit- BimCraft
-
Access strips
The strips beside each side of an item that must stay free, as turned rectangles.
Factory layout checks addons/plant/lib/layout.js64-bit- BimCraft
-
Overlap of two convex polygons
Whether two items, or an item and an access strip or obstacle, overlap by more than a sliver.
separated if maxA ≤ minB + tol or maxB ≤ minA + tol on any edge normal; tol = 1
Factory layout checks addons/plant/lib/layout.js64-bit- BimCraft
-
Distance from a point to a segment
The shortest distance from a corner of one item to an edge of another.
t = clamp(((p − a) · (b − a)) ÷ |b − a|², 0, 1); d = |p − (a + t (b − a))|
Factory layout checks addons/plant/lib/layout.js64-bit- BimCraft
-
Gap between two items
The least distance between two items that do not overlap, compared with the minimum aisle width.
gap = min over corners and edges of the point-to-segment distance
Factory layout checks addons/plant/lib/layout.js64-bit- BimCraft
-
Floor load of an item
The weight of an item divided by its footprint area, compared with the floor load limit.
load = weight ÷ (area ÷ 10⁶) in kg per m²; area = |Σ (xᵢ yᵢ₊₁ − xᵢ₊₁ yᵢ)| ÷ 2
Factory layout checks addons/plant/lib/layout.js64-bit- BimCraft
-
Footprint of Plant equipment
The width, depth, height and center of a piece of Plant equipment for the layout, from its bounding box.
Factory layout checks addons/plant/lib/layout.js64-bit- BimCraft
-
Flow path length
The length of the path through a sequence of items, measured center to center along X then Y.
L = Σ (|Δx| + |Δy|)
Factory layout checks addons/plant/lib/layout.js64-bit- BimCraft
-
Legs of a route
The straight legs of a route with their axis and length.
axis = first of x, y, z with |Δ| > 10⁻⁶; length = |Δ| on that axis
Orthogonal pipe router addons/plant/lib/route.js64-bit- BimCraft
-
Route against obstacles
Whether the center line of a route comes within a clearance of any obstacle box.
Orthogonal pipe router addons/plant/lib/route.js64-bit- BimCraft
-
Grid lines of the search
The X, Y and Z coordinates at which a route may turn.
lines = nozzle and lead coordinates, obstacle faces ± clearance, levels, two outer lines, and the midpoint of each neighboring pair
Orthogonal pipe router addons/plant/lib/route.js64-bit- BimCraft
-
Search state and the minimum leg
The key that identifies a search state: grid node, direction and the length of the current leg.
cap = round(minLeg); key = ((node × 6 + direction) × (cap + 1)) + min(cap, round(run))
Orthogonal pipe router addons/plant/lib/route.js64-bit- BimCraft
-
Cost of a step
The cost added for moving to the next grid node.
cost = g + step × (1 + climbCost if vertical, else 1) + (bendCost if the direction changes)
Orthogonal pipe router addons/plant/lib/route.js64-bit- BimCraft
-
Route points and length
The final corner points of the route with collinear points removed, its length, bends and climbs.
length = Σ leg lengths; bends = legs − 1
Orthogonal pipe router addons/plant/lib/route.js64-bit- BimCraft
-
Openings and walls on a room's edge
Finds the doors, windows and walls that lie on the outline of a room.
t = clamp(((p − a) · (b − a)) ÷ |b − a|², 0, 1); d = |p − a − t (b − a)|; on the edge if d ≤ tolerance
Rooms handed to add-ons with their doors, windows and walls addons/bimcraft-api.js64-bit- BimCraft
-
Net clear opening of a window
The clear width, height and area of a window for the escape opening rules, estimated from its type.
hung: w × h ÷ 2; slider: w ÷ 2 × h; other opening types: w × h; fixed: 0
Regulation checks of rooms, doors, windows and outlets addons/regs/lib/check.js64-bit- BimCraft
-
Least width of a room
The narrowest width across a room outline, used for the least room dimension and hall width rules.
min over edges of (max − min of p · n), n = unit normal of the edge
Regulation checks of rooms, doors, windows and outlets addons/regs/lib/check.js64-bit- BimCraft
-
Window area credited to a room
Adds each window's area and openable area to the room on either face of its wall.
center = a + u × (offset + width ÷ 2); area = width × height; open = area × share
Regulation checks of rooms, doors, windows and outlets addons/regs/lib/check.js64-bit- BimCraft
-
Ceiling height, light and ventilation of a room
The values compared with the ceiling height, natural light and ventilation rules.
ceiling = lowest wall height on the level; light % = window area ÷ floor area × 100; vent % = openable area ÷ floor area × 100
Regulation checks of rooms, doors, windows and outlets addons/regs/lib/check.js64-bit- BimCraft
-
Egress door clear width
Finds the widest exterior door and its clear width and height for the egress door rules.
clear width = max(0, leaf width − 50.8)
Regulation checks of rooms, doors, windows and outlets addons/regs/lib/check.js64-bit- BimCraft
-
Position of a point along a room's perimeter
The distance along the room outline to the point nearest an outlet or a door, and the outline's total length.
s = Σ earlier edge lengths + t × L; t = clamp(((p − a) · (b − a)) ÷ L², 0, 1)
Regulation checks of rooms, doors, windows and outlets addons/regs/lib/check.js64-bit- BimCraft
-
Longest distance to an outlet along the wall
The greatest distance, measured along the floor line, from any point of a wall space to an outlet in that space.
per wall space: max(first, length − last, half of each gap between neighbors); a space with no doorway: (first + length − last) ÷ 2
Regulation checks of rooms, doors, windows and outlets addons/regs/lib/check.js64-bit- BimCraft
-
Numbers in the regulation schedule
Formats a found value or a limit for the schedule table.
percent: 1 decimal; m²: 2 decimals; ratio and U-value: 2 decimals; R-value: 1 decimal; count: whole number
Regulation checks of rooms, doors, windows and outlets addons/regs/lib/check.js64-bit- BimCraft
-
Rooms and doors of the escape routes
Builds the graph of rooms and the doors that join them or lead outside, with each door's clear width.
clear width = max(0, leaf width − 50.8)
Regulation checks of rooms, doors, windows and outlets addons/regs/lib/route.js64-bit- BimCraft
-
Narrowest door on the way out of a room
The finding for each room: the narrowest door on its best way out against the pack's egress width.
utilization = minimum ÷ bottleneck; stated width = round(bottleneck)
Regulation checks of rooms, doors, windows and outlets addons/regs/lib/route.js64-bit- BimCraft
-
Footing width and thickness from the table
The footing size the pack's table gives for the number of stories, the foundation type, the snow load and the soil pressure.
width = inches × 25.4; thickness = inches × 25.4
Regulation limits read from the pack's tables addons/regs/lib/check.js64-bit- BimCraft
-
Footing depth below grade
The depth of the footing's underside below grade compared with the rule and the frost depth.
required = max(rule, frost depth); found = max(0, depth below the floor − 6 × 25.4)
Regulation limits read from the pack's tables addons/regs/lib/check.js64-bit- BimCraft
-
Feet and inches in a table cell
Turns a span written as feet-inches in a table into millimeters.
mm = (feet × 12 + inches) × 25.4
Regulation limits read from the pack's tables addons/regs/lib/check.js64-bit- BimCraft
-
Header span from the table
The allowed span of a header for its size, what it carries, the snow load and the building width.
span = a + (b − a) × (w − lo) ÷ (hi − lo), w = building width ÷ 304.8
Regulation limits read from the pack's tables addons/regs/lib/check.js64-bit- BimCraft
-
Span of a header in the model
The span of a framed header compared with the table.
span = max(0, length − 3 × 25.4)
Regulation limits read from the pack's tables addons/regs/lib/check.js64-bit- BimCraft
-
Stud height and spacing from the table
The greatest stud height and spacing the table allows for a stud size, bearing or not, and the floors above.
height = feet × 304.8; spacing = inches × 25.4
Regulation limits read from the pack's tables addons/regs/lib/check.js64-bit- BimCraft
-
Joist and rafter span from the table
The allowed span of a joist or rafter size at its spacing.
column = first listed spacing ≥ spacing ÷ 25.4 − 0.05; span = least span of the listed species
Regulation limits read from the pack's tables addons/regs/lib/check.js64-bit- BimCraft
-
Horizontal span of a rafter
The span of the longest rafter or ceiling joist measured on the horizontal, compared with the table.
span = sloped length × cos(pitch × π ÷ 180)
Regulation limits read from the pack's tables addons/regs/lib/check.js64-bit- BimCraft
-
Insulation R-value of a wall type
The nominal R-value of a wall type's cavity and continuous insulation layers, in imperial units.
R = thickness (mm) ÷ 1000 ÷ λ × 5.678263
Regulation limits read from the pack's tables addons/regs/lib/check.js64-bit- BimCraft
-
Wall insulation against the table's options
Whether a wall type's insulation meets any of the cavity and continuous options of its climate zone.
met if cavity + 0.05 ≥ option cavity and continuous + 0.05 ≥ option continuous, for any option
Regulation limits read from the pack's tables addons/regs/lib/check.js64-bit- BimCraft
-
K-factor in SI units
Converts a head's K-factor from L/min per √bar to m³/s per √Pa.
k = K ÷ 1000 ÷ 60 ÷ √100000
Sprinkler layout and hydraulic calculation addons/sprinkler/lib/hydraulics.js64-bit- BimCraft
-
Pipe friction
The friction loss in pascals per meter of pipe for a flow, an inside diameter and a roughness coefficient C.
Δp per m = 10.67 × Q^1.852 ÷ (C^1.852 × D^4.871) × 998.2 × 9.80665
Sprinkler layout and hydraulic calculation addons/sprinkler/lib/hydraulics.js64-bit- BimCraft
-
Pipe sizes
Chooses for each pipe the smallest steel schedule 40 size that keeps the velocity within the limit.
Q = heads below × flow per head ÷ 1000 × 1.15; v = Q ÷ (π d² ÷ 4) ≤ vmax
Sprinkler layout and hydraulic calculation addons/sprinkler/lib/hydraulics.js64-bit- BimCraft
-
Design areas to test
The groups of heads tried as the design area: blocks of rows at the far and near ends of the branch lines.
heads = ceil(area ÷ coverage); per row m = ceil(1.2 × √area ÷ spacing); rows = ceil(heads ÷ m)
Sprinkler layout and hydraulic calculation addons/sprinkler/lib/hydraulics.js64-bit- BimCraft
-
Minimum flow and pressure at a head
The least flow and pressure every operating head must have.
q = density ÷ 1000 ÷ 60 × coverage; P = max((q ÷ k)², minimum head pressure)
Sprinkler layout and hydraulic calculation addons/sprinkler/lib/hydraulics.js64-bit- BimCraft
-
Pressures and flows for a source pressure
The pressure at every node and the flow in every pipe when the source is at a given pressure and each operating head discharges K √P.
P(b) = P(a) − friction × (length + equivalent length) − ρ g Δz
Sprinkler layout and hydraulic calculation addons/sprinkler/lib/hydraulics.js64-bit- BimCraft
-
Lowest source pressure
The lowest source pressure at which every operating head has its minimum.
upper bound doubled from 200000 Pa until it works, then halved 40 times
Sprinkler layout and hydraulic calculation addons/sprinkler/lib/hydraulics.js64-bit- BimCraft
-
Head and pipe results
Each head's flow, pressure and density, each pipe's flow, velocity and pressure drop, and the total flow.
density = q × 1000 × 60 ÷ coverage; v = Q ÷ (π D² ÷ 4); total = Σ head flows
Sprinkler layout and hydraulic calculation addons/sprinkler/lib/hydraulics.js64-bit- BimCraft
-
Supply pressure at a flow
The pressure the water supply gives at a flow, from the static and residual pressures of a flow test.
P = Ps − (Ps − Pr) × (Q ÷ Qr)^1.85
Sprinkler layout and hydraulic calculation addons/sprinkler/lib/hydraulics.js64-bit- BimCraft
-
Required against available pressure
Takes the design area needing the most pressure, adds the hose allowance and margin, and compares with the supply.
Q total = Q heads × 60 + hose; required = P source ÷ 100000 + margin; ok if available ≥ required − 10⁻⁹
Sprinkler layout and hydraulic calculation addons/sprinkler/lib/hydraulics.js64-bit- BimCraft
-
Head spacing
The number of heads each way and their spacing, the largest the hazard's maximum spacing and coverage allow.
nx = ceil(W ÷ maxS − 10⁻⁹); ny likewise; raised until (W ÷ nx)(D ÷ ny) ≤ max coverage; sx = W ÷ nx
Sprinkler layout and hydraulic calculation addons/sprinkler/lib/layout.js64-bit- BimCraft
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.