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
-
Opening text in the BCF
The insulation, gap and position written into the BCF description.
MEP openings and clearances shown and exported mep/structure-ui.js64-bit- BimCraft
-
Gap and need shown for a soft clash
The gap and the needed clearance shown in the list in the display unit.
MEP openings and clearances shown and exported mep/structure-ui.js64-bit- BimCraft
-
Array position from the coordinate system
The latitude and longitude of the middle of the array's region.
c = mean of corners; (lon, lat) = toLonLat(c); rounded to 1e-5°
Solar array site and saved summary solar-run.js64-bit- CivilCraft
-
Saved plan summary
The counts, kWp and yearly kWh the file keeps for an array.
kWh = round(annual AC kWh)
Solar array site and saved summary solar-run.js64-bit- CivilCraft
-
Area read-out
Prints an area in the project's area unit.
text = round to 0 decimals, grouped
Massing window read-outs and typed height massing-ui.js64-bit- CivilCraft
-
Typed height to floors
Turns a height the person types into a whole number of floors.
floors = clamp(round(H ÷ floor height), 1, max floors)
Massing window read-outs and typed height massing-ui.js64-bit- CivilCraft
-
Zoning coverage percent
Turns the percent a person types for building coverage into the stored fraction.
coverage = n ÷ 100
Massing window read-outs and typed height massing-ui.js64-bit- CivilCraft
-
Content stream number writer
Formats one number for a PDF content stream.
text = toFixed(v, 4) without trailing zeros
Numbers written into edited PDF page content base-lex.js64-bit- MarkupCraft
-
Round to 3 decimals
The rounding applied to every coordinate in the package.
round(v × 1000) ÷ 1000
Redline package coordinates redline.js64-bit- MarkupCraft
-
Position as a fraction of the sheet
A markup's box and points as fractions of the sheet's width and height.
fx = (x − x₀) ÷ w; fy = (y − y₀) ÷ h
Redline package coordinates redline.js64-bit- MarkupCraft
-
Character advance
The advance width of one character in 1/1000 em.
Text width from built-in font metrics font.js64-bit- MarkupCraft
-
String width
The width of a string at a font size.
width = (Σ advance ÷ 1000) × size
Text width from built-in font metrics font.js64-bit- MarkupCraft
-
Key time of a baked frame
The timeline time given to each baked frame.
t = round((from + f ÷ fps) × 1000) ÷ 1000
Baked physics key times anim/bake.js64-bit- ModelCraft
-
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
-
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
-
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
-
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
-
A number in an appearance stream
Turns a number into the text written in a PDF appearance stream.
text = v rounded to 3 decimals, trailing zeros removed; |v| < 1e-6 → 0
Numbers written to the saved PDF pdf-write.js64-bit- MarkupCraft
-
Appearance stream of a markup
The drawing operators that show a markup in any PDF viewer.
Numbers written to the saved PDF pdf-write.js64-bit- MarkupCraft
-
Private copy of a markup
The JSON kept with each annotation so it reopens exactly: points, box, cut-outs, style and the rest.
ar = round(rect × 1000) ÷ 1000
Numbers written to the saved PDF pdf-write.js64-bit- MarkupCraft
-
Annotation rectangle
The /Rect of a markup's annotation, which is also the bounding box of its appearance.
rect = bounds ± 1 pt; each side ≥ 2 × line width + 2 pt
Numbers written to the saved PDF pdf-write.js64-bit- MarkupCraft
-
Bounds of a display list
The box round everything a markup draws, used for its annotation rectangle.
Numbers written to the saved PDF pdf-write.js64-bit- MarkupCraft
-
Rectangle differences of a box or ellipse
The /RD entry: how far the shape's outer edge sits inside the annotation rectangle on each side.
RD = [left, top, right, bottom] gaps between rect and box ± half line width, each ≥ 0
Numbers written to the saved PDF pdf-write.js64-bit- MarkupCraft
-
Count marks as ink rings
Writes a count group as one Ink annotation with a small ring round each mark.
ring: 13 points at 30° steps, radius max(3, 0.8 × font size)
Numbers written to the saved PDF pdf-write.js64-bit- MarkupCraft
-
Arc exported as a PolyLine
Writes an arc markup's /Vertices as points along the arc, because PDF has no arc annotation.
n = max(8, ⌈|sweep| ÷ (π ÷ 32)⌉); vertex k = c + r × (cos, sin)(a₀ + sweep × k ÷ n)
Numbers written to the saved PDF pdf-write.js64-bit- MarkupCraft
-
Picture placement matrix
The matrix that paints a picture markup into its box, upright for the page's rotation.
cm = [u·W, −v·H, origin + v·H], each number to 4 decimals
Numbers written to the saved PDF pdf-write.js64-bit- MarkupCraft
-
Scale as a /Measure dictionary
The sheet's scale in the form other PDF programs read: the factor from points to the unit and the display precision.
X.C = mmPerPt ÷ 304.8 (ft), ÷ 25.4 (in), ÷ 1000 (m), or mmPerPt (mm)
Numbers written to the saved PDF pdf-write.js64-bit- MarkupCraft
-
Scale written on the page
Stores a sheet's calibration on its page in the saved PDF.
Numbers written to the saved PDF pdf-write.js64-bit- MarkupCraft
-
Measured text in /Contents
The text other PDF programs show for a measurement: the length, the area and perimeter, the angle or the count.
Numbers written to the saved PDF pdf-write.js64-bit- MarkupCraft
-
Flattened markup
Paints a markup into the page itself instead of saving it as an annotation.
Numbers written to the saved PDF pdf-write.js64-bit- MarkupCraft
-
A page's paths as segments
Every drawn path of a page as straight segments in page coordinates.
curve point = Bézier at t = j ÷ 8, j = 1…8; p′ = CTM × p
Drawing comparison by vector paths vecdiff.js64-bit- MarkupCraft
-
Distance from a point to a segment
How far a sample point is from one segment of the other sheet.
t = clamp((p − a)·d ÷ |d|², 0, 1); distance = hypot(p − (a + t·d))
Drawing comparison by vector paths vecdiff.js64-bit- MarkupCraft
-
Grid of segments
Files each segment under the grid cells its bounding box covers, to find nearby segments quickly.
cells = (⌊x_max ÷ cell⌋ − ⌊x_min ÷ cell⌋ + 1) × (same in y); more than 4000 → not in the grid
Drawing comparison by vector paths vecdiff.js64-bit- MarkupCraft
-
Parts of a sheet with no match
The pieces of one sheet's segments that have no segment of the other sheet within the tolerance.
n = max(1, ⌈length ÷ step⌉) samples; miss when no segment within tol
Drawing comparison by vector paths vecdiff.js64-bit- MarkupCraft
-
Removed and added lines
The lines of the old sheet that are not on the new one, and the other way round.
Drawing comparison by vector paths vecdiff.js64-bit- MarkupCraft
-
Boxes round groups of changes
Groups changed segments that are close together into boxes, for clouding and for the list of changes.
merge boxes closer than gap; keep groups with Σ length ≥ minLen
Drawing comparison by vector paths vecdiff.js64-bit- MarkupCraft
-
Size of a changed area in words
The size of a changed area as text: inches on the sheet and, on a calibrated sheet, the real size.
in = round(pt ÷ 72, 1 decimal); real = pt × mmPerPt, in m to 1 decimal from 1000 mm, else whole mm
Drawing comparison by vector paths changes.js64-bit- MarkupCraft
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.