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
-
Vertex data of one geometry
Returns a geometry's positions and normals for drawing and for measuring.
IFC geometry handed to the apps ifc/api.js32-bit in part- BimCraft
- TakeoffCraft
- CivilCraft
- DetailCraft
-
Placement matrix of each piece
The matrix that takes a geometry's vertices to model space in meters, Y up.
M = C × Y-up × scale(u) × placement
IFC geometry handed to the apps ifc/api.js64-bit- BimCraft
- TakeoffCraft
- CivilCraft
- DetailCraft
-
Shift to the origin
Finds the translation that brings the model near the origin.
c = (box min + box max) ÷ 2 of the first element; C = translate(−(Y-up × scale(u) × placement × c))
IFC geometry handed to the apps ifc/api.js64-bit- BimCraft
- TakeoffCraft
- CivilCraft
- DetailCraft
-
File units to meters, Z up to Y up
Scales a placement by the file's length unit and turns its axes.
M′ = Y-up × scale(u) × M
IFC geometry handed to the apps ifc/api.js64-bit- BimCraft
- TakeoffCraft
- CivilCraft
- DetailCraft
-
Clear spacing a bar asks for
The least clear distance between parallel bars for a bar size and aggregate.
max(25.4, d_b, 4/3 × aggregate) mm; BS bars: max(d_b, aggregate + 5, 20) mm
Rebar congestion map of a footing congestion.js64-bit- DetailCraft
-
Free gap at a point
The length of the free stretch that contains a point, between the bars either side of it.
gap = right − left; 0 inside a bar
Rebar congestion map of a footing congestion.js64-bit- DetailCraft
-
Need and grid size
Sets what the concrete needs and how fine the map is.
cell = max(5, given, or max(10, ⌈max(L, B) ÷ 160 ÷ 5⌉ × 5)); columns = round(L ÷ cell)
Rebar congestion map of a footing congestion.js64-bit- DetailCraft
-
Opening and ratio per cell, and the worst place
Fills the map and finds the tightest opening and the number of cells that are too tight.
opening = min of the gaps in each layer; ratio = need ÷ opening
Rebar congestion map of a footing congestion.js64-bit- DetailCraft
-
The congestion problem
The warning or error listed for a footing whose steel is too tight.
Rebar congestion map of a footing congestion.js32-bit in part- DetailCraft
-
Conversion constants and two-decimal rounding
The pound and inch factors and the helper that writes two decimals.
lb = kg × 2.20462262185; in = mm ÷ 25.4; f2(v) = round(v × 100) ÷ 100
KISS file: quantities, sizes and weights kiss.js64-bit- DetailCraft
-
Weight and plate area fields
The weight and area written on a line, in metric or imperial units.
weight = kg, or kg × 2.20462262185 lb; area = m², or m² × 10.7639104167 sq ft
KISS file: quantities, sizes and weights kiss.js64-bit- DetailCraft
-
Inches as a fraction to 1/16
Writes a plate or bolt size in inches and sixteenths.
n = round(inches × 16); whole = ⌊n ÷ 16⌋; fraction reduced by halving
KISS file: quantities, sizes and weights kiss.js64-bit- DetailCraft
-
Size designation
The type code and size text of a part's profile.
KISS file: quantities, sizes and weights kiss.js64-bit- DetailCraft
-
Detail line: quantity, length, weight, area
One D line of the file for a part mark.
plate area m² = width × length ÷ 10⁶
KISS file: quantities, sizes and weights kiss.js64-bit- DetailCraft
-
Hole counts by size
The labor lines that count a part's holes by diameter and thickness.
KISS file: quantities, sizes and weights kiss.js64-bit- DetailCraft
-
Scale of a pasted picture
Works out how big one pixel of the copied area is in the model.
mm per pixel = width in mm ÷ width in pixels
Reference picture size and position picture.js64-bit- DetailCraft
-
Picture size in millimeters
The width and height of the picture in the model.
w = pixelsₓ × mm per pixel; h = pixels_y × mm per pixel
Reference picture size and position picture.js64-bit- DetailCraft
-
Picture corners
The four corners of the picture's outline.
corner = middle ± size ÷ 2
Reference picture size and position picture.js64-bit- DetailCraft
-
Picture values read from a file
Checks a picture's numbers when a model is opened.
Reference picture size and position picture.js64-bit- DetailCraft
-
Area, mass per meter, width, depth and perimeter
Fills in the values every member, bill of materials and drawing reads from a profile.
mass kg/m = published value, else area mm² × 10⁻⁶ × ρ kg/m³
Steel profiles: area, mass per meter and sizes profiles.js64-bit- DetailCraft
-
Plate name
The name of a plate profile from its thickness and width.
PL<t>x<w>, each to 2 decimals
Steel profiles: area, mass per meter and sizes profiles.js64-bit- DetailCraft
-
Thickness a hole goes through
The material thickness on the face a hole is made in.
Steel profiles: area, mass per meter and sizes profiles.js64-bit- DetailCraft
-
Profile summary in the properties panel
The rows of sizes, area and mass shown for a profile.
area cm² = area mm² ÷ 100
Steel profiles: area, mass per meter and sizes profiles.js64-bit- DetailCraft
-
Custom profile sizes
Checks the sizes of a profile a person defines.
Steel profiles: area, mass per meter and sizes profiles.js64-bit- DetailCraft
-
A part's solid
Builds the side faces and end caps of one steel part.
USD export of the steel model usd-detailcraft.js64-bit- DetailCraft
-
Millimeters to meters
Converts a world point for the USD file.
(x, y, z) m = (x, y, z) mm ÷ 1000
USD export of the steel model usd-detailcraft.js64-bit- DetailCraft
-
Length and weight attributes
The length in meters and the weight in kilograms written on each part.
length m = length mm ÷ 1000
USD export of the steel model usd-detailcraft.js64-bit- DetailCraft
-
Stock figure from text
Reads a stock cell such as 1,200 or Out of stock as a number, or as in stock or not.
Supplier stock and lead-time check lib-supply/supply.js64-bit- TakeoffCraft
- DetailCraft
-
Lead time in days
Reads a lead time such as 2-3 weeks or 5 business days as a number of days.
weeks × 7; months × 30; business days → ⌈n × 7 ÷ 5⌉; result rounded to 0.1 day
Supplier stock and lead-time check lib-supply/supply.js64-bit- TakeoffCraft
- DetailCraft
-
Price from text
Reads a price cell as a whole number of 1/10000 dollar.
price = round(n × 10000)
Supplier stock and lead-time check lib-supply/supply.js64-bit- TakeoffCraft
- DetailCraft
-
A need in the supplier's unit
The needed quantity in the unit the supplier's row uses.
tonnes = kilograms ÷ 1000
Supplier stock and lead-time check lib-supply/supply.js64-bit- TakeoffCraft
- DetailCraft
-
Short, late or in stock
For each need: the matching supplier row, the shortfall and the status.
short = max(0, need − stock); late: no stock figure and lead > limit
Supplier stock and lead-time check lib-supply/supply.js64-bit- TakeoffCraft
- DetailCraft
-
Values in the reported problems
The required and found values of a shortage or a long lead time in the problems list.
Supplier stock and lead-time check lib-supply/supply.js64-bit- TakeoffCraft
- DetailCraft
-
Stock figure from text
Reads a stock cell such as 1,200 or Out of stock as a number, or as in stock or not.
Supplier stock and lead-time check supply.js64-bit- TakeoffCraft
- DetailCraft
-
Lead time in days
Reads a lead time such as 2-3 weeks or 5 business days as a number of days.
weeks × 7; months × 30; business days → ⌈n × 7 ÷ 5⌉; result rounded to 0.1 day
Supplier stock and lead-time check supply.js64-bit- TakeoffCraft
- DetailCraft
-
Price from text
Reads a price cell as a whole number of 1/10000 dollar, the unit the takeoff's rates use.
price = round(n × 10000)
Supplier stock and lead-time check supply.js64-bit- TakeoffCraft
- DetailCraft
-
Short, late or in stock
For each estimate row with a quantity: the matching supplier row, the shortfall and the status.
short = max(0, need − stock); late: no stock figure and lead > limit
Supplier stock and lead-time check supply.js64-bit- TakeoffCraft
- DetailCraft
-
Values in the reported problems
The required and found values of a shortage or a long lead time in the problems list.
Supplier stock and lead-time check supply.js64-bit- TakeoffCraft
- DetailCraft
-
Supplier prices into the price library
Sets a library entry's material rate to the matching supplier row's price.
Supplier stock and lead-time check supply.js64-bit- TakeoffCraft
- DetailCraft
-
Value of a number row
The number handed to the app when a person changes a number box.
v = min(max, max(min, typed value))
Numbers typed into the property grid app-propgrid.js Every app64-bit -
Rounding of a slider value
Removes binary noise such as 0.30000000000000004 from a slider's value.
v = round to (decimals of the step + 2) decimals, at most 8
Numbers typed into the property grid app-propgrid.js Every app64-bit -
Value of a slider row
The number handed to the app while a slider is dragged or its box is changed.
v = fix(clamp(value, min, max), step)
Numbers typed into the property grid app-propgrid.js Every app64-bit -
Integer or float
Decides how a number is written.
Numbers sent between people editing together live-client.js Every app64-bit -
Writing a float
Writes a number as 8 bytes.
Numbers sent between people editing together live-client.js Every app64-bit -
Writing an integer
Writes a whole number in the shortest integer form that holds it.
Numbers sent between people editing together live-client.js Every appExact -
Reading a float
Reads a 4-byte or an 8-byte float from a message.
Numbers sent between people editing together live-client.js Every app64-bit -
Reading a 64-bit integer
Reads an unsigned or signed 64-bit integer.
Numbers sent between people editing together live-client.js Every appExact -
Cost of one call
The cost of a call from its token counts and the model's prices.
cost = (in × price in + out × price out) ÷ 1,000,000
Spending on a person's own AI model ai-byok.js Every app64-bit -
Spending today and this month
The cost, tokens and number of calls for the current day and month, and the calls in the last hour.
amount = Σ cost of the calls in the period
Spending on a person's own AI model ai-byok.js Every app64-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.