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
-
Faces in the cutting plane
Finds the faces created by the cut, whose outlines bound the hatched area.
||n · d| − 1| ≤ 1e-9 and |(p − o) · d| ≤ 1e-6 × diagonal
Drawing views of the exact solid brep-draw.js64-bit- PartCraft
-
Cutting-plane line in the neighboring view
The point and direction of the line that shows where the section was cut.
along = unit(d_section × d_view); p = (o · right, o · up); dir = (along · right, along · up)
Drawing views of the exact solid brep-draw.js64-bit- PartCraft
-
Number of steps round a circle
How many interpolation points a round direction gets, from its effective radius.
h = (384 × DEV ÷ R)^¼; n = ceil(2π ÷ h) rounded up to a multiple of 4, between 32 and 720
Non-uniform scale of an exact body brep-gtrsf.js64-bit- PartCraft
-
Cubic spline through the unit circle
The poles of a periodic cubic B-spline that passes through the circle at every knot.
pole i = k × (cos((i − 1)h), sin((i − 1)h)), k = 6 ÷ (4 + 2 cos h), err = h⁴ ÷ 384
Non-uniform scale of an exact body brep-gtrsf.js64-bit- PartCraft
-
Largest stretch of the map
The largest factor by which the scale lengthens any direction, used to size the deviation.
σ = |M x| after 60 power iterations of x ← unit(Mᵀ M x)
Non-uniform scale of an exact body brep-gtrsf.js64-bit- PartCraft
-
Image of a curve
A line, circle, ellipse, Bézier or B-spline curve after the scale, as a B-spline in the same parameter.
line, Bézier, B-spline: poles ↦ T × pole (exact); circle, ellipse: T × (c + r₁ x cos + r₂ y sin) at the spline's poles
Non-uniform scale of an exact body brep-gtrsf.js64-bit- PartCraft
-
Image of a surface
A plane, cylinder, cone, sphere, torus, extrusion, revolution or spline surface after the scale.
plane ↦ plane with frame from T x, T x × T y; cylinder, cone: ring(u) × (R + v sin α) + v cos α Z; sphere, torus: ring(u) × (R₁ + R₂ cos v) + R₂ sin v Z
Non-uniform scale of an exact body brep-gtrsf.js64-bit- PartCraft
-
Inverse of a placement
Inverts a 3 × 4 placement matrix found in the shape.
M⁻¹ = adj(M) ÷ det(M); t⁻¹ = −M⁻¹ t
Non-uniform scale of an exact body brep-gtrsf.js64-bit- PartCraft
-
Parameter range of straight directions
How far a line or the straight direction of a surface must extend to cover the body.
t₀ = ((center − o) · d) ÷ |d|²; range = t₀ ± (1.02 × D ÷ |d| + 1)
Non-uniform scale of an exact body brep-gtrsf.js64-bit- PartCraft
-
Raised shape tolerances
The tolerance written on every vertex, edge and face of the scaled body.
tol = max(old, max(1e-7, 3 × largest deviation + 1e-9))
Non-uniform scale of an exact body brep-gtrsf.js64-bit- PartCraft
-
Numbers written to the shape text
Turns each coordinate, weight and knot into the text OpenCascade reads back.
text = String(v); −0 → 0
Non-uniform scale of an exact body brep-gtrsf.js64-bit- PartCraft
-
Matching equal placements
Decides when two uses of the same curve or surface share one mapped copy.
key = entries rounded to 1e-12, joined
Non-uniform scale of an exact body brep-gtrsf.js64-bit- PartCraft
-
Rib slab outline
The flat region the rib is cut from: the sketch chain carried past both ends and offset to one side.
E = 4 × max(1, diagonal + |box center − sketch origin|); ends ± E along the end directions; far side = + E × D
Rib feature brep-rib.js64-bit- PartCraft
-
Choosing the rib piece
Picks the piece of the trimmed slab that lies beside the sketch line and checks it is closed off by the body.
distance(probe, piece) < 1e-6 × max(1, t); open when reach > 0.5 × E
Rib feature brep-rib.js64-bit- PartCraft
-
Edge flange frame
The axes a flange is built in: along the edge, out of the sheet's face, and out of its side.
e = unit(B − A); square when |n_big · n_side| ≤ 1e-6; P = (A + B) ÷ 2 − v × t ÷ 2 must lie on the side face
Sheet metal base and edge flanges brep-sheet.js64-bit- PartCraft
-
Flange cross-section
The corner points of the bend and the leg in the plane square to the edge.
C = (0, r); point(ρ, φ) = C + ρ (cos φ, sin φ); φ from −π ÷ 2 to −π ÷ 2 + θ; leg end = arc end + length × (−sin φ₁, cos φ₁)
Sheet metal base and edge flanges brep-sheet.js64-bit- PartCraft
-
Bend relief slot
The box cut beside an offset flange end so the bend can form.
depth into the sheet = r + t; box length along u = (r + t) + 1e-3 × max(1, r + t); through 2 × t
Sheet metal base and edge flanges brep-sheet.js64-bit- PartCraft
-
Side of the first bend
Which side of an open profile the sheet's thickness goes on.
turn = sign((p₁ − p₀) × (p₂ − p₁))
Sheet metal base and edge flanges brep-sheet.js64-bit- PartCraft
-
Cone from its derivatives
A cone's axis point, axis direction, radius and slope from the surface's derivatives at one point.
ρ = |P_uu|; e = −P_uu ÷ ρ; z = P_v − (P_v · e) e; axis point = P − ρ e; slope k = (P_v · e) ÷ |z|
Exact surface records for meshing brep-surf.js64-bit- PartCraft
-
Torus from its derivatives
A torus's center, axis and two radii from the surface's derivatives at one point.
ρ = |P_uu|; A = P − ρ e; d = unit(e × P_u); tube center M = P + P_vv; c = A + ((M − A) · d) d; R = |M − c|; r = |P_vv|
Exact surface records for meshing brep-surf.js64-bit- PartCraft
-
Check against the kernel's face
Confirms the record describes the same surface as the kernel's face before it is used.
25 points on a 5 × 5 grid (2 % to 98 % of the parameter box); each within 1e-9 × size of the record's surface
Exact surface records for meshing brep-surf.js64-bit- PartCraft
-
Closed loops with their curves
Collects a sketch's curves into closed loops, keeping each curve's exact definition.
tol = 1e-6 × max(1, extent); ends within 10 × tol share a node; arc mid = c + r (cos, sin)(a₀ + sweep ÷ 2)
Sketch profiles for exact solids brep.js64-bit- PartCraft
-
Arc edge through three points
Builds an arc of the profile in the kernel.
arc through a (start node), mid, b (end node)
Sketch profiles for exact solids brep.js64-bit- PartCraft
-
Loop orientation
Whether a loop runs counterclockwise, from the sign of its area.
A = ½ Σ (x_j y_i − x_i y_j)
Sketch profiles for exact solids brep.js64-bit- PartCraft
-
Point just inside a loop
A test point a small step inside the loop's longest edge, used to decide nesting.
p = midpoint of longest edge + normal × 1e-6 × max(1, edge length)
Sketch profiles for exact solids brep.js64-bit- PartCraft
-
Which loops are holes
Counts how many other loops contain each loop; odd depth is a hole.
depth_i = number of loops whose polygon contains innerPoint(loop_i); face when depth is even
Sketch profiles for exact solids brep.js64-bit- PartCraft
-
Stored edge and face reference points
The point saved with a picked edge or face so it can be found again after a rebuild.
at = coordinates rounded to 6 decimals
Sketch profiles for exact solids brep.js64-bit- PartCraft
-
Extrude depth and start
Where an extrude starts and how far it runs for blind, mid-plane and through-all ends.
blind: z₀ = 0 or −h; mid: z₀ = −h ÷ 2; through: h = far side + 1 + 0.01 × body range
Exact-kernel feature dimensions brep.js64-bit- PartCraft
-
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
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.