Geometric measurements
Every evaluated solid, part, and assembly exposesmeasure():
genus never uses a guessed value. A number is the exact sum of the genera of
the connected components in the backend representation; null means that the
backend or aggregate result cannot establish that quantity exactly. Manifold
decomposes the mesh and sums each validated component genus. Stock and owned
OCCT currently return null because their exposed native boundary lacks the
edge-degeneracy primitive needed for a correct bounded B-Rep computation.
Assemblies also return null: an occurrence mesh is an aggregate view, not a
Boolean-unioned closed boundary.
The inertia tensor uses the standard mechanics sign convention
∫((r · r)I - rrᵀ) dV about centerOfMass, expressed in world axes. It is a
volumetric tensor until scaled by density.
Principal inertia
Axis queries
Physical mass properties
Parts and assemblies require authored mass density:Assembly aggregation
Assembly physical properties transform each occurrence’s centroid and tensor, apply determinant volume scaling for affine placements, and combine them using the parallel-axis theorem. Mirrored occurrences remain positive mass; a nonuniform scale changes volume and inertia as geometry requires. Missing density is a diagnostic, not zero mass. A BOM may still report known mass andmassComplete: false while aggregate physical properties fail.
Combining external properties
combinePhysicalMassProperties combines already computed records after the
caller has expressed them in the same world frame; it does not accept or apply
placements itself. physicalMassProperties converts volumetric properties
plus density into a physical record. These helpers are useful for integrations
that combine InvariantCAD output with externally measured components.
Precision source
OCCT measures exact native shapes and verifies certain sweep volumes against analytic profile/path oracles, but does not currently report genus. Manifold provides native volume and surface-area measurements with mesh-based tensor integration and exact genus for its mesh representation. Checktolerance,
nullable capabilities, and backend representation when comparing results
across kernels; equality of authored intent does not promise byte-identical
floating-point output.