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
-
Design moments of the slab's bar layers
The moment each of the four bar layers must carry so that bending and twisting are both covered.
M*x = Mx + |Mxy|, M*y = My + |Mxy|; if one is negative: 0, and the other raised by Mxy² ÷ |that moment|
Concrete member and slab checks on a solved frame frame/slab-design.js64-bit- CadCraft
- BimCraft
- DetailCraft
-
Slab reinforcement and shear
The steel required and provided per meter in each layer, and the one-way shear check of a slab.
d = h − cover − bar ÷ 2 (outer layer); provided = (π d_b² ÷ 4) × 1000 ÷ s; need = max(required, ρ_min × 1000 × h); ratio = need ÷ provided
Concrete member and slab checks on a solved frame frame/slab-design.js64-bit- CadCraft
- BimCraft
- DetailCraft
-
Concrete stiffness for the analysis
The elastic modulus, shear modulus and density given to concrete members.
E = 4700 √f′c; G = E ÷ 2.4; ρ = 2400 kg/m³
Concrete member and slab checks on a solved frame frame/frame-concrete.js64-bit- CadCraft
- BimCraft
- DetailCraft
-
Cracked stiffness factor
The share of the gross stiffness used for cracked members.
0.70 columns; 0.35 beams; 1 when not cracked
Concrete member and slab checks on a solved frame frame/frame-concrete.jsExact- CadCraft
- BimCraft
- DetailCraft
-
Area of a bar
The cross-section area of a reinforcing bar from its diameter.
A = π d² ÷ 4
Concrete member and slab checks on a solved frame frame/frame-concrete.js64-bit- CadCraft
- BimCraft
- DetailCraft
-
Approximate period
The building's approximate fundamental period from its height and structural system.
Ta = Ct × (hn ÷ 1000)^x, hn in mm
Seismic loads and story drift to ASCE 7-22 frame/loads-asce7.js64-bit- CadCraft
- BimCraft
- DetailCraft
-
Upper limit factor on the period
The factor Cu that caps a period taken from analysis.
table of SD1 against Cu, straight lines between rows
Seismic loads and story drift to ASCE 7-22 frame/loads-asce7.js64-bit- CadCraft
- BimCraft
- DetailCraft
-
Seismic response coefficient
The coefficient Cs that multiplies the building's weight to give the base shear.
Cs = SDS ÷ (R ÷ Ie), at most SD1 ÷ (T R ÷ Ie) or SD1 TL ÷ (T² R ÷ Ie), at least max(0.044 SDS Ie, 0.01) and 0.5 S1 ÷ (R ÷ Ie) where S1 ≥ 0.6
Seismic loads and story drift to ASCE 7-22 frame/loads-asce7.js64-bit- CadCraft
- BimCraft
- DetailCraft
-
Height exponent
The exponent k of the vertical distribution of the story forces.
k = 1 for T ≤ 0.5 s; 2 for T ≥ 2.5 s; 1 + (T − 0.5) ÷ 2 between
Seismic loads and story drift to ASCE 7-22 frame/loads-asce7.js64-bit- CadCraft
- BimCraft
- DetailCraft
-
Base shear and story forces
The base shear, the force on each floor and the shear in each story.
V = Cs W; Cvx = wx hx^k ÷ Σ wi hi^k; Fx = Cvx V; Vx = Σ F from the top down
Seismic loads and story drift to ASCE 7-22 frame/loads-asce7.js64-bit- CadCraft
- BimCraft
- DetailCraft
-
Story force on a rigid floor
Puts a story force on a floor at its master point, with the accidental torsion.
Mz = −((x₀ − x_m) Fy − (y₀ − y_m) Fx) ± 0.05 × plan size × F
Seismic loads and story drift to ASCE 7-22 frame/loads-asce7.js64-bit- CadCraft
- BimCraft
- DetailCraft
-
Design drift against the allowable
The design story drift and its ratio to the allowable drift.
δ = Cd δ_e ÷ Ie; allowed = 0.020, 0.015 or 0.010 × story height; ratio = δ ÷ allowed
Seismic loads and story drift to ASCE 7-22 frame/loads-asce7.js64-bit- CadCraft
- BimCraft
- DetailCraft
-
Suggested floor levels
The heights at which level members meet, offered as the building's floors.
z = (z_a + z_b) ÷ 2 of a level member; levels within 1 mm are one; stored z rounded to 0.1 mm
Seismic loads and story drift to ASCE 7-22 frame/frame-concrete.js64-bit- CadCraft
- BimCraft
- DetailCraft
-
Floor weights into newtons
Turns the floor weights typed in kN into the N the procedure works in.
w (N) = w (kN) × 1000
Seismic loads and story drift to ASCE 7-22 frame/frame-concrete.js64-bit- CadCraft
- BimCraft
- DetailCraft
-
Period of the analyzed frame
The fundamental period in each direction from the floor weights and the frame's displacements under the seismic forces.
T = 2π √(Σ wᵢ δᵢ² ÷ (g Σ fᵢ δᵢ))
Seismic loads and story drift to ASCE 7-22 frame/frame-concrete.js64-bit- CadCraft
- BimCraft
- DetailCraft
-
Weight of each floor from the loads
The vertical load of chosen load cases gathered at each floor, as its seismic weight.
node load = node forces + member equivalent loads + plate corner loads; each node's load goes to the floor at or above it
Seismic loads and story drift to ASCE 7-22 frame/frame-concrete.js64-bit- CadCraft
- BimCraft
- DetailCraft
-
Arcs into chords
Replaces each bulge arc of a path by straight chords that stay within a tolerance of the arc.
θ = 4 atan(b); r = chord ÷ (2 sin(|θ| ÷ 2)); steps = ⌈|θ| ÷ (2 acos(1 − min(tol, r) ÷ r))⌉
Laser job paths, fill lines and run estimate laser/laser-geom.js64-bit- CadCraft
- PartCraft
-
Signed area of a loop
The area of a closed path, used to tell which loop is the larger when one lies in another.
A = ½ Σ (xᵢ yᵢ₊₁ − xᵢ₊₁ yᵢ)
Laser job paths, fill lines and run estimate laser/laser-geom.js64-bit- CadCraft
- PartCraft
-
Length of a path
The total length of a flattened path.
L = Σ √(Δx² + Δy²)
Laser job paths, fill lines and run estimate laser/laser-geom.js64-bit- CadCraft
- PartCraft
-
Which loop lies in which
Counts how many other loops contain each loop, so inner shapes are cut first.
two edge midpoints inside the other loop, and the other loop larger in area
Laser job paths, fill lines and run estimate laser/laser-geom.js64-bit- CadCraft
- PartCraft
-
Turn into and out of the fill direction
Rotates a point by the fill angle so the fill lines are horizontal, and back.
x′ = x cos a − y sin a; y′ = x sin a + y cos a; a in degrees × π ÷ 180
Laser job paths, fill lines and run estimate laser/laser-geom.js64-bit- CadCraft
- PartCraft
-
Fill lines of a closed shape
The scan lines that fill the even–odd region of the loops, with the spans to burn on each line.
y_k = (k + 0.5) × interval + offset; x = a_x + (b_x − a_x)(y − a_y) ÷ (b_y − a_y)
Laser job paths, fill lines and run estimate laser/laser-geom.js64-bit- CadCraft
- PartCraft
-
Machine coordinates
Moves every point so the job's lower left corner is the machine's 0, 0.
x_machine = x − x_origin; y_machine = y − y_origin
Laser job paths, fill lines and run estimate laser/laser-plan.js64-bit- CadCraft
- PartCraft
-
Burn length, travel and time
The length burned, the length traveled with the laser off, and the time of the job.
burn = Σ d × passes; time = Σ (d ÷ speed) × 60 × passes
Laser job paths, fill lines and run estimate laser/laser-plan.js64-bit- CadCraft
- PartCraft
-
Fill lines into moves
Turns the fill lines back to drawing coordinates and adds the overscan before and after each line.
start = first − dir × overscan; end = last + dir × overscan
Laser job paths, fill lines and run estimate laser/laser-plan.js64-bit- CadCraft
- PartCraft
-
Picture rows into moves
Lays a picture's burn levels on its rectangle as rows of moves with a power for each run.
cols = round(w ÷ interval); dx = w ÷ cols; y = y₀ + h − (r + 0.5) dy; power = min + (max − min) × level ÷ 255
Laser job paths, fill lines and run estimate laser/laser-plan.js64-bit- CadCraft
- PartCraft
-
Points written to a file
Each point's northing, easting and elevation as text.
text = v.toFixed(3); 0 when |v| < 0.0005
Layout point files and as-built comparison layout/layout-points.js64-bit- CadCraft
- BimCraft
-
Points read from a file
Turns the northing, easting and elevation text of a row into numbers.
x = Number(E); y = Number(N); z = Number(Z) or none
Layout point files and as-built comparison layout/layout-points.js64-bit- CadCraft
- BimCraft
-
Difference between a design and an as-built point
The offsets in x, y and height, the horizontal and 3D distance, and whether the point is within tolerance.
dh = √(dx² + dy²); d3 = √(dh² + dz²); out when dh > tol or |dz| > tolZ
Layout point files and as-built comparison layout/layout-points.js64-bit- CadCraft
- BimCraft
-
Matching points by nearness
Pairs each design point with the closest unused as-built point within a radius.
pairs sorted by horizontal distance, taken closest first; radius = 10 × tol by default
Layout point files and as-built comparison layout/layout-points.js64-bit- CadCraft
- BimCraft
-
Summary of the comparison
The counts, the largest horizontal and height differences and the root mean square of the horizontal differences.
rms = √(Σ dh² ÷ n)
Layout point files and as-built comparison layout/layout-points.js64-bit- CadCraft
- BimCraft
-
Comparison table
The rows of the comparison as text for the page and the CSV.
text = v.toFixed(3)
Layout point files and as-built comparison layout/layout-points.js64-bit- CadCraft
- BimCraft
-
Corners of a circle or polygon
The corner points of a circle or regular polygon with a given number of sides.
pᵢ = c + u·r·cos aᵢ + v·r·sin aᵢ, aᵢ = (i ÷ sides) × 2π
Arcs, circles, smooth curves, divide and offset m3d/model.js64-bit- CadCraft
- ModelCraft
-
Corners of an arc
The corner points of an arc from its center, radius, sweep and segment count.
pᵢ = c + u·r·cos aᵢ + v·r·sin aᵢ, aᵢ = sweep × i ÷ segs
Arcs, circles, smooth curves, divide and offset m3d/model.js64-bit- CadCraft
- ModelCraft
-
What a curve is
The length, radius, center, normal and sweep reported for an arc, circle, polygon or smooth curve.
length = Σ |segment|; center = circle through three corners; sweep = |Σ atan2((u₁ × u₂) · n, u₁ · u₂)|
Arcs, circles, smooth curves, divide and offset m3d/model.js64-bit- CadCraft
- ModelCraft
-
Give a curve a new radius
Moves the corners of an arc, circle or polygon to a typed radius about its center.
p′ = c + (p − c) × r ÷ r_old
Arcs, circles, smooth curves, divide and offset m3d/model.js64-bit- CadCraft
- ModelCraft
-
Equal division points
Where the parts of an edge or curve divided into n equal parts meet.
straight edge: a + (b − a) × (i + 1) ÷ n; arc: new corners at equal angles; other curve: equal lengths along its segments
Arcs, circles, smooth curves, divide and offset m3d/model.js64-bit- CadCraft
- ModelCraft
-
Dividing an edge or curve
Adds the corners that divide an edge or curve into n equal parts.
Arcs, circles, smooth curves, divide and offset m3d/model.js64-bit- CadCraft
- ModelCraft
-
Points of a smooth curve
The points of the smooth curve drawn through clicked points.
centripetal Catmull–Rom: knot step = √|pᵢ₊₁ − pᵢ|, evaluated at k ÷ segs of each span
Arcs, circles, smooth curves, divide and offset m3d/model.js64-bit- CadCraft
- ModelCraft
-
Offset of a 2D outline
The corners of an outline moved sideways by a distance.
each segment line moved d along its left unit normal; corner = intersection of neighboring lines
Arcs, circles, smooth curves, divide and offset m3d/model.js64-bit- CadCraft
- ModelCraft
-
Do two outline segments cross
The test that refuses an offset whose loops cross themselves or each other.
Arcs, circles, smooth curves, divide and offset m3d/model.js64-bit- CadCraft
- ModelCraft
-
Offset of a face's loops
The offset outline of a face, back in 3D.
p = u·x + v·y + n·h, h = p₀ · n
Arcs, circles, smooth curves, divide and offset m3d/model.js64-bit- CadCraft
- ModelCraft
-
Offset of a chain of edges
The offset of a connected run of edges lying in one plane.
Arcs, circles, smooth curves, divide and offset m3d/model.js64-bit- CadCraft
- ModelCraft
-
Faces from imported polygons
Builds faces from the polygons of an imported file, sharing vertices between them.
key = round(x × 1e5), round(y × 1e5), round(z × 1e5)
Welding of imported geometry m3d/model.js64-bit- CadCraft
- ModelCraft
-
Edges from imported segments
Builds plain edges from the line segments of an imported drawing.
key = round(x × 1e5), round(y × 1e5), round(z × 1e5)
Welding of imported geometry m3d/model.js64-bit- CadCraft
- ModelCraft
-
OBJ number format
How every coordinate and normal component is written in an OBJ file.
text = x rounded to 6 decimals
Export to OBJ and Collada m3d/io.js64-bit- CadCraft
- ModelCraft
-
OBJ vertex
A vertex of the model as it goes into the OBJ file.
(x, y, z) → M · p → (x, z, −y)
Export to OBJ and Collada m3d/io.js64-bit- CadCraft
- ModelCraft
-
OBJ face normal
The flat normal written for a face.
N = Σ pᵢ × pᵢ₊₁, normalized
Export to OBJ and Collada m3d/io.js64-bit- CadCraft
- ModelCraft
-
OBJ vertex and normal lines
The lines that carry the numbers.
Export to OBJ and Collada m3d/io.js64-bit- CadCraft
- ModelCraft
-
Collada number format
How every number is written in a Collada file.
text = x rounded to 12 significant digits
Export to OBJ and Collada m3d/io.js64-bit- CadCraft
- ModelCraft
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.