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
-
Revolve axis checks
Checks that the axis lies in the sketch plane and that the profile stays on one side of it.
side s = −u_y (p_x − a_x) + u_x (p_y − a_y); crosses when some s > 1e-7 × scale and some s < −1e-7 × scale
Exact-kernel feature dimensions brep.js64-bit- PartCraft
-
Revolve angle
The sweep angle given to the kernel.
full turn when |angle − 360| < 1e-9; else angle × π ÷ 180
Exact-kernel feature dimensions brep.js64-bit- PartCraft
-
Through-hole depth
How deep a through hole is drilled.
depth = distance to the body's far side + 1 + 0.01 × body range
Exact-kernel feature dimensions brep.js64-bit- PartCraft
-
Countersink depth
How deep the cone of a countersunk hole goes.
h = (D_csink − d) ÷ 2 ÷ tan(angle × π ÷ 360)
Exact-kernel feature dimensions brep.js64-bit- PartCraft
-
Cosmetic thread radii
The major and minor radius recorded for a tapped hole's thread.
r₁ = D ÷ 2; r₀ = min(tap drill, D − 1.082532 × P) ÷ 2
Exact-kernel feature dimensions brep.js64-bit- PartCraft
-
Linear pattern positions
Where each copy of a linear pattern sits.
copy i moved by direction × spacing × i
Exact-kernel feature dimensions brep.js64-bit- PartCraft
-
Circular pattern angles
The angle of each copy of a circular pattern.
full circle: step = 360 ÷ count; otherwise step = angle ÷ (count − 1); copy i turned by step × i
Exact-kernel feature dimensions brep.js64-bit- PartCraft
-
Shell wall offset
Hollows a body to a wall thickness.
offset = +t (outward) or −t; kernel tolerance 1e-3
Exact-kernel feature dimensions brep.js64-bit- PartCraft
-
Fillet and chamfer sizes
The radius, distances or distance and angle given to the kernel for each picked edge.
two distances: (d, d₂); distance and angle: (d, angle × π ÷ 180); fillet: r, or (r, r₂) along the edge
Exact-kernel feature dimensions brep.js64-bit- PartCraft
-
Sewing an imported surface model
Joins the faces of a STEP file that has no solid into a closed shell.
sewing tolerance = 1e-6
Exact-kernel feature dimensions brep.js64-bit- PartCraft
-
Mesh tolerances
How closely the triangle mesh follows the exact faces.
linear = 2e-4 × bounding-box diagonal; angular = 2π ÷ max(16, resolution)
Exact solid: mesh, volume, area and tables brep.js64-bit- PartCraft
-
Mesh read from the kernel
Copies the mesh's vertices, normals and triangles out of the kernel's memory.
vertices and normals: Float32Array view of the WebAssembly buffer
Exact solid: mesh, volume, area and tables brep.js32-bit in part- PartCraft
-
Welding the mesh
Merges vertices that different faces share so the mesh is watertight.
same vertex when x, y and z are identical
Exact solid: mesh, volume, area and tables brep.js32-bit in part- PartCraft
-
Volume and surface area
The solid's volume and total surface area, from the exact faces.
V = ∭ dV (Gauss–Kronrod, tolerance 1e-12, when a non-line, non-circle edge exists); A = ∬ dA
Exact solid: mesh, volume, area and tables brep.js64-bit- PartCraft
-
Genus
The number of through holes (handles) of the solid, from the welded mesh.
χ = V − E + F; genus = round(bodies − χ ÷ 2)
Exact solid: mesh, volume, area and tables brep.js64-bit- PartCraft
-
Face area and center
Each face's area and center point, listed with the face.
area = ∬ dA over the face; center = its centroid
Exact solid: mesh, volume, area and tables brep.js64-bit- PartCraft
-
Edge length and points
Each edge's length, end points and middle point.
length = ∫ |C′(t)| dt; middle = C((t₀ + t₁) ÷ 2)
Exact solid: mesh, volume, area and tables brep.js64-bit- PartCraft
-
Bounding box
The smallest axis-aligned box around a shape.
min, max per axis from the kernel's optimal box
Exact solid: mesh, volume, area and tables brep.js64-bit- PartCraft
-
Facts about an imported STEP file
The solid count, face count, volume and bounding box shown when a STEP file is imported.
volume = ∭ dV (default integration)
Exact solid: mesh, volume, area and tables brep.js64-bit- PartCraft
-
Stress at the integration points
The six stress components at every integration point of every element, from the displacements.
σ = D (ε − α ΔT I) per point, by the element's own routine
Buckling load factors and thermal stress setup buckling.js64-bit- PartCraft
-
Geometric stiffness times a vector
Applies the stress-dependent stiffness Kσ to a vector, element by element.
y = s × Σ_elements G_e x_e on each of the three directions
Buckling load factors and thermal stress setup buckling.js64-bit- PartCraft
-
Buckling factors by subspace iteration
The lowest positive buckling load factors and their mode shapes.
Z = K⁻¹ G X; reduce (Zᵀ G Z, Zᵀ K Z); Kr = L Lᵀ; eig(L⁻¹ Gr L⁻ᵀ) = μ; λ = 1 ÷ μ
Buckling load factors and thermal stress setup buckling.js64-bit- PartCraft
-
Solver tolerances of a buckling study
How tightly the pre-stress solve and each inner solve are converged.
pre-stress: 1e-10; each K⁻¹ solve: 1e-9
Buckling load factors and thermal stress setup buckling.js64-bit- PartCraft
-
Temperature rise at each node
The temperature change that drives thermal stress: a uniform rise, or the temperature field minus the stress-free temperature.
ΔT = T − T_ref, T_ref = 20 when not given
Buckling load factors and thermal stress setup buckling.js64-bit- PartCraft
-
Time step for a transient thermal load
Which saved time step of a transient run is nearest the requested time.
step = round(time ÷ (t ÷ steps)), held in [0, steps]; time = step × dt
Buckling load factors and thermal stress setup buckling.js64-bit- PartCraft
-
Voxel model volume and mass
The volume and mass of the analysis model listed with the study.
volume = elements × h³; mass = volume × density (tonne/mm³) × 1000
Buckling load factors and thermal stress setup buckling.js64-bit- PartCraft
-
Numbers written to the deck
Formats every coordinate, material value, load and penalty for the input deck.
text = v.toExponential(10)
CalculiX deck export and result import calculix.js64-bit- PartCraft
-
Material cards
Writes elastic constants, density and the two-point plastic curve of each part's material.
density (tonne/mm³) = density (kg/m³) × 1e-12; plastic: (σ_y, 0) and (σ_y + H, 1)
CalculiX deck export and result import calculix.js64-bit- PartCraft
-
Support directions
Writes each held direction, and a local axis system for supports on slanted faces.
axis when ||v| − 1| < 1e-9; slanted: local x = n, local y = unit(t − (t · n) n)
CalculiX deck export and result import calculix.js64-bit- PartCraft
-
Nodal loads
Writes the nodal forces of the study as concentrated loads.
one line per non-zero force component
CalculiX deck export and result import calculix.js64-bit- PartCraft
-
Load increments
The first and smallest load increment given to the other program.
first = 1 ÷ steps; smallest = 1 ÷ (64 × steps); total and largest = 1
CalculiX deck export and result import calculix.js64-bit- PartCraft
-
Reading the result file
Reads node positions and result values from the text result file.
value = parseFloat(12-character field, D exponent read as E)
CalculiX deck export and result import calculix.js64-bit- PartCraft
-
Default penalty stiffness
The contact stiffness used when none is given.
kn = 20 × E ÷ h
Contact between parts in stress analysis contact.js64-bit- PartCraft
-
Closest point on a triangle
The point of a flat triangle nearest a given point, as weights of the three corners.
region tests on d₁ … d₆ = dot products of edges with corner-to-point vectors; inside: v = v_b ÷ (v_a + v_b + v_c)
Contact between parts in stress analysis contact.js64-bit- PartCraft
-
Closest point on a curved face
The nearest point of a six-node master face, in the face's own coordinates.
best of 4 flat sub-triangles (corners and midsides); (L₁, L₂) = weights × reference coordinates
Contact between parts in stress analysis contact.js64-bit- PartCraft
-
Point and normal on a face
The position and outward unit normal of a six-node face at given face coordinates.
x = Σ N_k x_k; n = unit(Σ ∂N_k/∂L₁ x_k × Σ ∂N_k/∂L₂ x_k)
Contact between parts in stress analysis contact.js64-bit- PartCraft
-
Integration weights on the slave face
The area each contact point on a slave face stands for.
w = w_q × |∂x/∂L₁ × ∂x/∂L₂| ÷ 2
Contact between parts in stress analysis contact.js64-bit- PartCraft
-
Pairing slave points with the master
Finds the master point each slave point faces, and reports whether the pairing changed.
paired when d² ≤ cutoff²; moved when the face changes or |ΔL| > 2e-3
Contact between parts in stress analysis contact.js64-bit- PartCraft
-
Gap, contact force and stiffness
The normal gap at a contact point and the force and stiffness it adds.
g = n · (x_s − x_m); force = kn × w × (−g) when g < 0; stiffness = kn × w × c cᵀ ⊗ n nᵀ; pressure = force ÷ w
Contact between parts in stress analysis contact.js64-bit- PartCraft
-
Bonded tie
Holds a slave point to the master point it started nearest to.
rel = (x_s − x_m) − (x_s − x_m) at the first call; force = −kt × w × rel
Contact between parts in stress analysis contact.js64-bit- PartCraft
-
Machined part: stock, cutting, holes, handling
The cost rows of a part cut from a block of stock.
stock = (size + 2 × allowance) per axis; stock cost = stock volume × density × 1e-9 × price per kg; cutting minutes = (stock volume − volume) ÷ removal rate × finishing; cost = minutes ÷ 60 × rate per hour
Manufacturing cost estimate cost.js64-bit- PartCraft
-
Printed part: filament and machine time
The cost rows of a 3D-printed part.
printed volume = volume × fill; filament = printed volume × density × 1e-9 × price per kg; hours = printed volume ÷ volume per hour
Manufacturing cost estimate cost.js64-bit- PartCraft
-
Cost per part and rounding
The cost of each part at the given quantity, the share of each row, and the rounded figures returned.
total = unit + setup ÷ quantity; share = row ÷ total; returned amounts = round to 0.01
Manufacturing cost estimate cost.js64-bit- PartCraft
-
Rounding to two decimals
Rounds an amount or a listed quantity to hundredths.
r2(v) = round(v × 100) ÷ 100
Manufacturing cost estimate cost.js64-bit- PartCraft
-
Number of holes
Counts the holes the part has, for the time per hole.
hole features + circles in cut sketches, each × (pattern count − 1) more for patterns
Manufacturing cost estimate cost.jsExact- PartCraft
-
Stock block
The size and position of the stock around the part.
offset mode: min = box min − (side, side, bottom), max = box max + (side, side, top); cylinder: r = ½ × box diagonal in XY + side
Part and stock in machine coordinates cam.js64-bit- PartCraft
-
Work origin and frame change
Moves points from model coordinates to the work frame (G54) and back.
work = (p · x, p · y, p · z) − origin
Part and stock in machine coordinates cam.js64-bit- PartCraft
-
Mesh in the work frame and snap tolerance
Copies the part's mesh into work coordinates and sets how close a mesh point must be to an exact edge to be taken as that edge.
tol = 1e-4 + 2e-6 × largest model dimension
Part and stock in machine coordinates cam.js32-bit in part- PartCraft
-
Where a vertical line meets the part
The heights at which a vertical line through (x, y) crosses the part's surface.
weights l₁, l₂, l₃ from the triangle's XY corners; z = l₁ z₁ + l₂ z₂ + l₃ z₃
Part and stock in machine coordinates cam.js32-bit in part- PartCraft
-
Top facet and its slope
The height and slope of the highest mesh triangle under a point, used by 3D finishing.
g_x = ((z₂ − z₁)(y₃ − y₁) − (z₃ − z₁)(y₂ − y₁)) ÷ d₂; g_y likewise
Part and stock in machine coordinates cam.js32-bit in part- 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.