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
-
Equality in post conditions
The == and != tests a post definition can make on two values.
G-code written by text post definitions cam-postdef.js64-bit- PartCraft
-
Stock size variables
The stock's diameter, side lengths and corners that a post can print in its header.
sx = maxₓ − minₓ; d = 2 × r
G-code written by text post definitions cam-postdef.js64-bit- PartCraft
-
Number and position text
How a number and a position are turned into text for the script.
number → 12 significant digits; position → 9 decimals, then 12 significant digits
Numbers in a PartCraft script file script.js64-bit- PartCraft
-
Sketch geometry and dimensions
Writes a sketch's points, circles, relations and dimension values.
Numbers in a PartCraft script file script.js64-bit- PartCraft
-
A feature value read from a script
Reads a setting such as a depth, given as a number or as an expression.
Numbers in a PartCraft script file script.js64-bit- PartCraft
-
Mesh points in meters, Z up
Converts the part's mesh vertices for the USD file.
(x, y, z) mm → (x, −z, y) ÷ 1000 m
USD export of a part or assembly usd-partcraft.js64-bit- PartCraft
-
Instance placement
Turns an assembly instance's placement matrix from millimeters, Y up, to meters, Z up.
M′ = A · M · A⁻¹; translation ÷ 1000
USD export of a part or assembly usd-partcraft.js64-bit- PartCraft
-
Volume and mass attributes
The volume in cubic meters and the mass in kilograms written on each part.
volume m³ = V mm³ × 10⁻⁹; mass kg = V mm³ × ρ g/cm³ × 10⁻⁶
USD export of a part or assembly usd-partcraft.js64-bit- PartCraft
-
Parameter values per variant
The value each driving parameter ends up with in each variant.
value = parameter to 12 significant digits
Variant pack: parameter table, sizes and library bodies variants.js64-bit- PartCraft
-
Numbers in variants.csv
How a table value is written into the CSV file.
Variant pack: parameter table, sizes and library bodies variants.js64-bit- PartCraft
-
Size of a variant
The width, depth and height of each variant written to variants.json.
size = max − min per axis, to 4 decimals
Variant pack: parameter table, sizes and library bodies variants.js64-bit- PartCraft
-
Volume written per variant
The volume_mm3 figure of each variant in variants.json.
volume to 9 significant digits
Variant pack: parameter table, sizes and library bodies variants.js64-bit- PartCraft
-
Variant body in library coordinates
Turns a variant's mesh to Z up, anchors it at the back middle bottom and rounds it for the library item.
(x, y, z) → (x, −z, y), shifted to the anchor, rounded to d decimals
Variant pack: parameter table, sizes and library bodies variants-item.js64-bit- PartCraft
-
Rounding helper
Rounds a value to a number of decimals for the library item.
r(v, d) = round(v × 10ᵈ) ÷ 10ᵈ
Variant pack: parameter table, sizes and library bodies variants-item.js64-bit- PartCraft
-
Preset figures
The gravity, pressure and temperature each world starts from.
Environment: gravity, ambient pressure and temperature env/env.js64-bit- PartCraft
-
Gravity in solver units
Gravity in mm/s² for a gravity load.
g mm/s² = g m/s² × 1000
Environment: gravity, ambient pressure and temperature env/env.js64-bit- PartCraft
-
Ambient pressure in MPa
The ambient pressure in the solvers' unit.
p MPa = p Pa ÷ 10⁶
Environment: gravity, ambient pressure and temperature env/env.js64-bit- PartCraft
-
Gauge pressure
The pressure that loads the wall of a sealed volume.
gauge = absolute − ambient
Environment: gravity, ambient pressure and temperature env/env.js64-bit- PartCraft
-
Weight of a mass
Weight in newtons from a mass in kilograms.
W = m × g
Environment: gravity, ambient pressure and temperature env/env.js64-bit- PartCraft
-
Loads filled in from the environment
Gives a solver job its gravity, gauge pressures and ambient temperatures.
Environment: gravity, ambient pressure and temperature env/env.js64-bit- PartCraft
-
Cache key
A short text that says whether the environment changed since a result was made.
Environment: gravity, ambient pressure and temperature env/env.js64-bit- PartCraft
-
Default thresholds
The heights the filter uses when the caller gives none.
h₀ = 0.3 × cell; h_max = 6 × cell; low noise = slope × cell × 3 + 3 × h₀
Ground points from an unclassified point cloud ground-classify.js64-bit- CivilCraft
-
Lowest point per cell
Sorts the points into grid cells and keeps the lowest of each.
column = ⌊(x − minₓ) ÷ cell⌋; row = ⌊(y − min_y) ÷ cell⌋
Ground points from an unclassified point cloud ground-classify.js64-bit- CivilCraft
-
Stray low points
Drops single points that lie far below their neighbors.
stray when median(neighbors) − z > low-noise limit
Ground points from an unclassified point cloud ground-classify.js64-bit- CivilCraft
-
Opening with growing windows
Marks cells that stand above the opened surface as objects, round by round.
wₖ = 2ᵏ + 1; dhₖ = min(h_max, slope × (wₖ − wₖ₋₁) × cell + h₀); object when z − opened > dhₖ
Ground points from an unclassified point cloud ground-classify.js64-bit- CivilCraft
-
Morphological opening
The minimum, then the maximum, over a square window around each cell.
Ground points from an unclassified point cloud ground-classify.js64-bit- CivilCraft
-
Coordinates read from a row
Takes the northing, easting and elevation of one line of a point file.
Survey point files: reading and writing points.js64-bit- CivilCraft
-
Points written as a PNEZD file
Writes point number, northing, easting, elevation and description, comma separated.
N, E and Z written with dec decimals (3 by default)
Survey point files: reading and writing points.js64-bit- CivilCraft
-
Point count per group
Counts the points of each description group.
Survey point files: reading and writing points.jsExact- CivilCraft
-
Stand-in ground for a road with no survey
The elevation and extent of the flat ground a corridor is drawn on when the project has no surface.
z = mean of the PVI elevations, rounded to 0.01; margin = (60 m or 200 ft) + 6 × (z_max − z_min)
Project: stand-in ground, volumes and saved points project.js64-bit- CivilCraft
-
Cut and fill inside the daylight lines
The total cut and fill and the figures per graded item.
Project: stand-in ground, volumes and saved points project.js64-bit- CivilCraft
-
Points in the project file
Writes each survey point to the .civilcraft.json file.
Project: stand-in ground, volumes and saved points project.js64-bit- CivilCraft
-
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
-
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
-
Paper length of a notation in inches
Reads a fraction, a mixed number or a decimal as inches.
1-1/2 → 1 + 1 ÷ 2; 1/4 → 1 ÷ 4
Sheet scale read from the sheet's text scaletext.js64-bit- TakeoffCraft
-
Ratio of a notation and its listed scale
Every scale notation in the text, each matched to a listed scale.
ratio = (feet × 12 + inches) ÷ paper inches, rounded to 3 decimals
Sheet scale read from the sheet's text scaletext.js64-bit- TakeoffCraft
-
Which scale a sheet gets
The most frequent scale on the sheet, and the other scales found.
Sheet scale read from the sheet's text scaletext.jsExact- TakeoffCraft
-
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
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.