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
-
Inline values
A value that the file stores inside its 32-bit payload word.
Floats read from USD files usd/usdc-read.js32-bit in part- CadCraft
- BimCraft
- ModelCraft
- TakeoffCraft
- CivilCraft
- DetailCraft
- PartCraft
-
Raw arrays
A packed array of numbers of one type.
Floats read from USD files usd/usdc-read.js32-bit in part- CadCraft
- BimCraft
- ModelCraft
- TakeoffCraft
- CivilCraft
- DetailCraft
- PartCraft
-
Compressed float arrays
An array stored as whole numbers or as a lookup table and indexes.
Floats read from USD files usd/usdc-read.js32-bit in part- CadCraft
- BimCraft
- ModelCraft
- TakeoffCraft
- CivilCraft
- DetailCraft
- PartCraft
-
Float text rounding
A float or half value read from .usda text.
Floats read from USD files usd/usda-read.js32-bit in part- CadCraft
- BimCraft
- ModelCraft
- TakeoffCraft
- CivilCraft
- DetailCraft
- PartCraft
-
Arrays from text
A list of parsed numbers as a typed array of the right type.
Floats read from USD files usd/usda-read.js32-bit in part- CadCraft
- BimCraft
- ModelCraft
- TakeoffCraft
- CivilCraft
- DetailCraft
- PartCraft
-
Half to float
The value of a 16-bit half float.
v = ± (1 + m ÷ 1024) × 2^(e − 15)
Half floats in USD usd/util.js32-bit in part- CadCraft
- BimCraft
- ModelCraft
- TakeoffCraft
- CivilCraft
- DetailCraft
- PartCraft
-
Float to half
The 16-bit half closest to a number.
Half floats in USD usd/util.js32-bit in part- CadCraft
- BimCraft
- ModelCraft
- TakeoffCraft
- CivilCraft
- DetailCraft
- PartCraft
-
Measure to SI
A property value in meters, square meters or cubic meters.
area = v × L²; volume = v × L³
IFC measures in SI for USD usd/ifc.js64-bit- CadCraft
- BimCraft
- ModelCraft
- TakeoffCraft
- CivilCraft
- DetailCraft
- PartCraft
-
Factor from text
A factor from a plain number, a percent of the size, or a percent change.
f = n; n ÷ 100; 1 ± n ÷ 100
Typed scale factors and shrinkage allowance scale-factors.js64-bit- ModelCraft
- PartCraft
-
Shrinkage allowance
The pattern factor for a casting that shrinks by a percentage.
add: 1 + s ÷ 100; exact: 1 ÷ (1 − s ÷ 100)
Typed scale factors and shrinkage allowance scale-factors.js64-bit- ModelCraft
- PartCraft
-
Meters per file unit
The conversion factor for each unit system a 3DM file can name.
meters = file value × factor
Units and tolerance read from a 3DM file io/3dm/read.js64-bit- ModelCraft
- PartCraft
-
Units and tolerance from the file settings
Reads the unit system, custom meters-per-unit and the tolerance from a file's settings record.
Units and tolerance read from a 3DM file io/3dm/read.js64-bit- ModelCraft
- PartCraft
-
Density to tonnes per cubic millimeter
Converts a density in kg/m³ to t/mm³ for the solver.
ρ(t/mm³) = ρ(kg/m³) × 10⁻¹²
Material units, gravity and custom material limits materials.jsExact- PartCraft
-
Gravity constant
The default gravity used for self-weight, in millimeters per second squared.
g = 9810 mm/s²
Material units, gravity and custom material limits materials.js64-bit- PartCraft
-
Custom material check
Checks a material from a file or a person and fills in a library material's thermal values.
Material units, gravity and custom material limits materials.js64-bit- PartCraft
-
Four significant digits
Prints a result with 4 significant digits.
toPrecision(4); toExponential(3) when |v| ≥ 1e5 or 0 < |v| < 1e-3
Simulation numbers shown as text sim-ui.js64-bit- PartCraft
-
Fixed decimals
Prints a number with a set number of decimals, and fills number boxes with 6 decimals.
toFixed(dp), trailing zeros removed
Simulation numbers shown as text sim-ui.js64-bit- PartCraft
-
Normalized mode shapes
Samples each mode at the plot vertices and scales it to a largest displacement of 1.
uᵥ = sample(modeᵥ) ÷ max |u|
Mode shapes returned by the simulation worker sim-worker.js32-bit in part- PartCraft
-
Temperature range of the plot
The lowest and highest temperature used for the plot scale and its tick labels.
lo = min T, hi = max T over all vertices (all frames when transient)
Thermal window temperature range and balance read-outs sim-thermal-ui.js32-bit in part- PartCraft
-
Probed temperature and flux
The temperature and flux text shown when a point is probed.
Thermal window temperature range and balance read-outs sim-thermal-ui.js32-bit in part- PartCraft
-
Heat balance imbalance
The unbalanced heat in watts and as a percent of the larger of inflow and outflow.
percent = 100 × |imbalance| ÷ max(inflow, outflow, 1e-300)
Thermal window temperature range and balance read-outs sim-thermal-ui.js64-bit- PartCraft
-
Scalar from a field
One number per node or element from a vector or stress field.
|u| = √(ux² + uy² + uz²); σvm as above
Script result fields and meshes shown in the window cs-ui.js64-bit- PartCraft
-
Range of the plotted values
The lowest and highest value that set the color scale.
hi ≤ lo → hi = lo + max(|lo|, 1) × 1e-6
Script result fields and meshes shown in the window cs-ui.js64-bit- PartCraft
-
Deformation scale
A round scale that makes the largest displacement about 8 percent of the model size.
raw = 0.08 × diagonal ÷ max |u|, rounded up to 1, 2, 5 or 10 × 10ᵉ
Script result fields and meshes shown in the window cs-ui.js32-bit, display only- PartCraft
-
Outer surface of a mesh
The outer surface of a solid or surface mesh as triangles for the view.
Script result fields and meshes shown in the window cs-ui.js32-bit, display only- PartCraft
-
Mass from volume and density
The mass of a part in grams.
m = V × ρ ÷ 1000
Part and assembly mass in the bill of materials, measure panel and assistant bom.js64-bit- PartCraft
-
Rounding of the exported bill
The numbers written into the bill of materials CSV.
value = round to 3 decimals
Part and assembly mass in the bill of materials, measure panel and assistant bom.js64-bit- PartCraft
-
Mass properties reported to the assistant
Volume, area, center, mass and inertia of the built solid.
mass = V × ρ ÷ 1000; inertia = tensor × ρ ÷ 1000
Part and assembly mass in the bill of materials, measure panel and assistant agents.js32-bit in part- PartCraft
-
Mass properties in the measure panel
Where the measure panel gets a body's mass properties, exact or from the mesh.
Part and assembly mass in the bill of materials, measure panel and assistant measure-ui.js32-bit in part- PartCraft
-
Number format in the measure panel
Rounds a measure value to a number of decimals for the panel.
toFixed(dp); |v| < 1e-12 shown as 0
Part and assembly mass in the bill of materials, measure panel and assistant measure-ui.js64-bit- PartCraft
-
Default tangent modulus and its check
Sets the slope after yield when none is given and flags one that is not below E.
Et = E ÷ 100 when not given
Nonlinear study fields and thermal stress history nlstudy.js64-bit- PartCraft
-
Contact penetration problem
Flags a contact penetration over 1 percent of the element size, with the values it reports.
problem when max penetration > 0.01 × h; pct = 100 × pen ÷ h
Nonlinear study fields and thermal stress history nlstudy.js64-bit- PartCraft
-
Time steps solved for stress
Chooses which time steps of the heat run get a stress solve.
stepᵢ = round(i × steps ÷ (n − 1)), i = 0…n−1
Nonlinear study fields and thermal stress history thermal-history.jsExact- PartCraft
-
Thermal load per step
The load vector of each stress step and the temperature range of the worst step.
ΔT = T − Tref; f = f_mech + ft(ΔT)
Nonlinear study fields and thermal stress history thermal-history.js64-bit- PartCraft
-
Solid cubes from a distance grid
Marks each cube solid or not from its corner values.
solid when Σ₈ corner values < 0; origin = lo × h
Voxel grid and lattice struts field/voxels.js64-bit- PartCraft
-
Lattice struts in a box
The strut list of a lattice that fills a box.
cells = ⌈(extent ÷ cell) − 1e-9⌉; end = corner + (i + a) × cell
Voxel grid and lattice struts field/lattice.js64-bit- PartCraft
-
Sewing tolerance from model size
The tolerance with which patch edges are joined.
tol = max(1e-7, 1e-7 × max |coordinate|)
Form cage to exact solid: sewing and volume form-brep.js64-bit- PartCraft
-
Sewn solid and its volume
Sews the faces, makes a solid, and measures its volume.
Form cage to exact solid: sewing and volume form-brep.js64-bit- PartCraft
-
Triangle normals, areas and boxes
The unit normal, area and bounding box of every triangle, and the size of the whole mesh.
n = (b − a) × (c − a); area = |n| ÷ 2; unit normal = n ÷ |n|
Rays and distances on a printer mesh print-geom.js64-bit- ModelCraft
- PartCraft
-
Nearest face along a ray
The distance to the first triangle a ray meets between two limits, and whether it meets it from behind.
det = e₁·(d × e₂); u = (s·(d × e₂)) ÷ det; v = (d·(s × e₁)) ÷ det; t = (e₂·(s × e₁)) ÷ det
Rays and distances on a printer mesh print-geom.js64-bit- ModelCraft
- PartCraft
-
Ray and box
Whether a ray passes through a box within the current distance limits.
t_near = (min − o) × (1 ÷ d); t_far = (max − o) × (1 ÷ d), per axis
Rays and distances on a printer mesh print-geom.js64-bit- ModelCraft
- PartCraft
-
Point to triangle distance
The squared distance from a point to the closest point of one triangle.
closest point q by the corner, edge and face regions; d² = |p − q|²
Rays and distances on a printer mesh print-geom.js64-bit- ModelCraft
- PartCraft
-
Distance to the nearest face
The distance from a point to the nearest triangle within a search radius.
d = √(min over triangles of d²), limited to r
Rays and distances on a printer mesh print-geom.js64-bit- ModelCraft
- PartCraft
-
Fewest cells that fit the bed
How many equal cells along x, y and z make every piece fit the printer bed, allowing a piece to lie on its side.
start: nₖ = ⌈sizeₖ ÷ largest bed side − 10⁻⁹⌉; cellₖ = sizeₖ ÷ nₖ (+ extra on a cut axis); fits if cellₖ ≤ bed_p(k) + 10⁻⁹
Splitting a model into printable pieces print-split.js64-bit- ModelCraft
- PartCraft
-
Cut planes of the grid
The planes that cut the model's box into the chosen number of cells.
d = lo + (hi − lo) × i ÷ n
Splitting a model into printable pieces print-split.js64-bit- ModelCraft
- PartCraft
-
Planes and triangles about the model's middle
Normalizes the given planes and moves planes and triangles to coordinates measured from the middle of the model's box.
n̂ = n ÷ |n|; d = d ÷ |n|; d_local = d − n̂·org; p_local = p − org
Splitting a model into printable pieces print-split.js64-bit- ModelCraft
- PartCraft
-
Model into the boolean library
Hands the model's corners to manifold-3d, measured from the middle of its box.
q = p − org; corners welded where round(q × 10⁵) agree; stored as 32-bit
Splitting a model into printable pieces print-split.js32-bit in part- ModelCraft
- PartCraft
-
Pieces back from the boolean library
Reads a piece's corners from manifold-3d and returns them to world coordinates.
world = org + 32-bit local corner
Splitting a model into printable pieces print-split.js32-bit in part- ModelCraft
- PartCraft
-
Cutting by each plane
Splits every cell by the next plane and keeps the parts that have volume.
Splitting a model into printable pieces print-split.js32-bit in part- ModelCraft
- PartCraft
-
Outline of a cut through the model
The line segments where a plane crosses the model's triangles, in the plane's own two axes.
sᵢ = n·pᵢ − d; k = sᵢ ÷ (sᵢ − sⱼ); point = pᵢ + (pⱼ − pᵢ) × k
Splitting a model into printable pieces print-split.js64-bit- ModelCraft
- PartCraft
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.