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
-
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
-
Millimeters per PDF point
The size of one PDF point in millimeters, the base of every preset scale.
MM_PER_PT = 25.4 ÷ 72
Sheet scale, typed lengths and measured values units.js64-bit- MarkupCraft
-
Calibration from a preset scale
Real millimeters per point for a scale chosen from the list, such as 1/4 inch = 1 foot or 1:100.
mmPerPt = (25.4 ÷ 72) × ratio
Sheet scale, typed lengths and measured values units.js64-bit- MarkupCraft
-
Calibration from two picked points
Real millimeters per point from a distance picked on the sheet and the real length typed for it.
mmPerPt = real length (mm) ÷ picked distance (pt)
Sheet scale, typed lengths and measured values units.js64-bit- MarkupCraft
-
Fractions and mixed numbers
Reads 1/2, 6 1/2 or 12.5 as a number.
a/b → a ÷ b; n a/b → n + a ÷ b
Sheet scale, typed lengths and measured values units.js64-bit- MarkupCraft
-
A typed length in millimeters
Reads what a person types for a length (24'-0", 12' 6 1/2", 3.5 m, 900 mm, or a bare number in the chosen unit) as millimeters.
mm = feet × 304.8 + inches × 25.4; metric: value × 1, 10 or 1000
Sheet scale, typed lengths and measured values units.js64-bit- MarkupCraft
-
A typed length with arithmetic
Reads entries such as 12'6" + 3/4" or 2*450mm as one length in millimeters.
Sheet scale, typed lengths and measured values units.js64-bit- MarkupCraft
-
Length as text
Writes a length in millimeters in the sheet's unit: feet and inches, feet, inches, meters or millimeters.
ft-in: round(mm ÷ 25.4 × 16) sixteenths; ft: mm ÷ 304.8; in: mm ÷ 25.4; m: mm ÷ 1000
Sheet scale, typed lengths and measured values units.js64-bit- MarkupCraft
-
Area as text
Writes an area in square millimeters in the area unit that goes with the sheet's length unit.
sq ft = mm² ÷ 92903.04; sq in = mm² ÷ 645.16; m² = mm² ÷ 1e6
Sheet scale, typed lengths and measured values units.js64-bit- MarkupCraft
-
Area and perimeter of an outline
The area and the perimeter of a closed outline, in points² and points.
area = |Σ (xᵢ·yᵢ₊₁ − xᵢ₊₁·yᵢ)| ÷ 2; perimeter = Σ hypot(Δx, Δy)
Sheet scale, typed lengths and measured values units.js64-bit- MarkupCraft
-
Area measurement with cut-outs
The area and perimeter text of an area markup: the outline less its cut-outs, in real units.
area = (A_outline − Σ A_cut-out) × mmPerPt²; perimeter = (P_outline + Σ P_cut-out) × mmPerPt
Sheet scale, typed lengths and measured values units.js64-bit- MarkupCraft
-
Length under a calibration
A distance in points as a real length in the sheet's unit.
length = points × mmPerPt
Sheet scale, typed lengths and measured values units.js64-bit- MarkupCraft
-
Measured values of a markup
The length, area and perimeter, count, angle or arc length listed for a markup in the Properties panel and, through valueOf, in lists, CSV and BCF.
length = hypot(Δx, Δy) × mmPerPt; arc = r × |sweep| × mmPerPt; count = number of marks
Sheet scale, typed lengths and measured values markupcraft.js64-bit- MarkupCraft
-
Pointer position on the paper
The pointer's position on the sheet in the status line, in millimeters or inches of paper.
mm = pt ÷ 72 × 25.4; in = pt ÷ 72
Sheet scale, typed lengths and measured values markupcraft.js64-bit- MarkupCraft
-
Scale carried to a replacement sheet
When markups are carried to a new revision of a sheet, the old sheet's calibration is given to the new one if it has none.
|w_old − w_new| ≤ 1 pt and |h_old − h_new| ≤ 1 pt
Sheet scale, typed lengths and measured values markupcraft.js64-bit- MarkupCraft
-
Size of a pasted area
The size on the sheet of a copied area pasted as a picture: the same size on paper, or the same real size when both sheets have a scale.
k = mmPerPx ÷ mmPerPt (both scaled), else ptPerPx; w = px_w × k; h = px_h × k
Sheet scale, typed lengths and measured values markupcraft.js64-bit- MarkupCraft
-
Arc through three points
The center, radius, start angle and signed sweep of the arc from the first point through the second to the third.
d = 2·(aₓ(m_y − b_y) + mₓ(b_y − a_y) + bₓ(a_y − m_y)); cₓ = Σ (x² + y²)·Δy ÷ d; r = hypot(a − c)
Arc through three points and angle measurement arcs.js64-bit- MarkupCraft
-
Arc as Bézier pieces
The arc as cubic Bézier segments of at most 90° each, for drawing and for the saved appearance.
n = ⌈|sweep| ÷ (π ÷ 2) − 1e-9⌉; k = (4 ÷ 3)·tan(step ÷ 4)
Arc through three points and angle measurement arcs.js64-bit- MarkupCraft
-
Arc length
The length of an arc markup in points.
length = r × |sweep|
Arc through three points and angle measurement arcs.js64-bit- MarkupCraft
-
Angle between two legs
The angle at a vertex between the directions to two other points, from 0° to 180°.
θ = acos((u·w) ÷ (|u|·|w|)) × 180 ÷ π
Arc through three points and angle measurement arcs.js64-bit- MarkupCraft
-
Angle as text
Writes the angle with a degree sign.
round(deg × 10ᵖ) ÷ 10ᵖ, p = 1 by default
Arc through three points and angle measurement arcs.js64-bit- MarkupCraft
-
Snap to 45°
Moves a point onto the nearest 45° direction from the point before it, keeping its distance.
a = round(atan2(dy, dx) ÷ (π ÷ 4)) × (π ÷ 4); p = from + (cos a, sin a) × hypot(dx, dy)
Markup geometry while drawing and editing geom.js64-bit- MarkupCraft
-
Square from a corner
Makes the box from a fixed corner to the pointer square.
s = max(|dx|, |dy|); p = a + (sign dx, sign dy) × s
Markup geometry while drawing and editing geom.js64-bit- MarkupCraft
-
Resize by a grip
The new box or points when a grip of a markup is dragged.
box: dragged edges = pointer; stroke: x′ = x₀ + (x − box x₀) ÷ box width × new width
Markup geometry while drawing and editing geom.js64-bit- MarkupCraft
-
Move a markup
Shifts a markup's points, box and cut-outs by a distance.
x′ = x + dx; y′ = y + dy
Markup geometry while drawing and editing geom.js64-bit- MarkupCraft
-
Simplify a freehand stroke
Drops the points of a pen or highlighter stroke that lie within a tolerance of the line through their neighbors.
d = |dy·pₓ − dx·p_y + bₓ·a_y − b_y·aₓ| ÷ L
Markup geometry while drawing and editing geom.js64-bit- MarkupCraft
-
Inverse of a transform
The inverse of a 2-D affine transform.
det = a·d − b·c; inverse = adjugate ÷ det
Markup geometry while drawing and editing geom.js64-bit- MarkupCraft
-
Line-up through two pairs of points
The move, turn and uniform scale that carries two picked points on one sheet onto two picked points on another.
s = |b| ÷ |a|; θ = atan2(b) − atan2(a); M = [s·cos θ, s·sin θ, −s·sin θ, s·cos θ, e, f]
Markup geometry while drawing and editing geom.js64-bit- MarkupCraft
-
Next point from a typed length and angle
Places the next point of a line or outline at a typed real length, along a typed angle or toward the pointer.
len = mm ÷ mmPerPt; a = (deg + page turn) × π ÷ 180; p = from + (cos a, sin a) × len
Markup geometry while drawing and editing sketch.js64-bit- MarkupCraft
-
Cleaned pen stroke to a markup
Turns what the stroke cleaner recognized (line, circle, arc, outline) into the points or box of a line, ellipse, arc, rectangle, polyline or polygon markup.
circle → box (c − r, c + r); arc → points at a₀, a₀ + sweep ÷ 2, a₁ on the circle
Markup geometry while drawing and editing pen-clean.js64-bit- MarkupCraft
-
Finished freehand stroke
What is stored when a pen or highlighter stroke is finished.
tolerance = 0.6 ÷ zoom (points)
Markup geometry while drawing and editing markupcraft.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.