Coordinates, identity and CAD mass
Implementation snapshot · 2026-10-12 · Sources & update notes
Reference illustrations
Section titled “Reference illustrations”publish-reference-skeleton.py (local source: tools/publish-reference-skeleton.py) reads the
two tested manifests and verifies each source DAE hash before extracting its
positions and triangle edges. It welds positions to micrometre precision for
display, removes coplanar tessellation diagonals, and keeps creases and principal
view silhouette edges. These are visible CAD outlines, not structural helper
beams or collision triangles. Original manifest and mesh hashes accompany the
bundled assets; there is no dependency on the old test folders at runtime.
Catalog hardpoint names map explicitly to the template’s suspension declarations,
fixed mounts and shaft joints. A hub_axis is a second point relative to hub
in this schema, not a direction vector. Unspecified housing axes remain missing.
ReferenceSkeleton (local source: beamng.cad/UI/ReferenceSkeleton.cs) projects the illustration
with an orbitable orthographic camera, draws the chosen part last for visibility,
and overlays the requested markers and labels. The transparent wire illustration
does not perform occlusion or physics simulation. Its controls have no CAD or
project-write boundary, so reference browsing cannot apply example geometry.
Selection, coordinates and material intake
Section titled “Selection, coordinates and material intake”SelectionNormalizer (local source: beamng.cad/Preparation/SelectionNormalizer.cs) resolves
component instances and persistent body references, deduplicates overlapping
selections, and rejects stale or ambiguous references. A selected face resolves
to its body. Whole-component expansion is explicit. Assembly transforms apply
to each instance before converting SolidWorks (x,y,z) to BeamNG (x,-z,y).
Metres and the assembly origin are preserved; the conversion occurs once.
The native material snapshot reads body assignments with part-level fallback.
Solid mass comes from SolidWorks. Closed-mesh volume integrals supply COM and
inertia, scaled to the native mass, for older exports. New native-property exports
carry the body’s unit-density inertia and assembly transform separately from its
display tessellation. Those exact CAD moments take precedence, so a coarse visual
mesh does not change mass or inertia. Surface bodies use the exact triangle lamina
moments plus symmetric thickness inertia: mass is CAD area × thickness × density.
The tessellated surface area must agree with CAD within 1%. Combining bodies uses
the parallel-axis theorem. See component geometry (local source: beamng.cad/FramePipeline/components.py).