Development setup and source layout
Implementation snapshot · 2026-10-12 · Sources & update notes
The application is a Windows SolidWorks add-in with external Python workers. The documentation is an independent static website.
Software license
Section titled “Software license”Original BeamNG.cad software uses GPL-3.0-or-later with a scoped exception allowing integration with SOLIDWORKS and BeamNG.drive. Distributed modifications must comply with the GPL, including its source requirements. The exception applies only to original project software; external dependencies retain their own terms.
This grant covers software, including documentation-site code, but excludes documentation prose, the Mochi team’s model and derived meshes, vehicle/calibration datasets, screenshots, renders and other non-software assets unless separately licensed. Generated geometry does not automatically become GPL; copied runtime software in a generated vehicle package retains its license and applicable host exception.
Read the license scope in the repository, the GNU GPL text, the host-linking exception, and the third-party notices before redistributing software or assets.
Application layout
Section titled “Application layout”| Area | Responsibility |
|---|---|
beamng.cad/MainSwAddIn.cs | Native commands and add-in entry point |
beamng.cad/UI/ | WinForms workflow, selection, materials, joints and mod management |
beamng.cad/Preparation/ | Persistent CAD state, native mates, appearance and companion assembly handling |
beamng.cad/FramePipeline/ | Worker orchestration, geometry, templates, packaging and numerical models |
dependencies/cad-calibration/ | Integrated Test Harness and Vehicle Wizard sources |
tests/, tools/ | Regression tests, native fixtures, diagnostics and maintenance helpers |
website/ | Maintained handbook, selected public assets and website tooling |
The add-in targets .NET Framework 4.7.2, C# 8 and xCAD 0.8.0. Follow installation for build and registration. Refresh registration only when appropriate, and restart the native host after replacing managed assemblies.
Python environment
Section titled “Python environment”Use Python 3.11+ for the harness and numerical workers. From the project root:
py -3.11 -m venv .venv& .\.venv\Scripts\python.exe -m pip install -e 'dependencies/cad-calibration/Test Harness' -e 'dependencies/cad-calibration/Vehicle Wizard'& .\.venv\Scripts\python.exe beamng.cad/FramePipeline/calibration_worker.py doctorCGAL bindings and Blender are separate preparation requirements; configure their paths in Settings. Do not assume that installing the numerical harness supplies either.
Boundaries to preserve
Section titled “Boundaries to preserve”Native references and assembly-space capture belong to the CAD thread. Python workers consume saved snapshots. Ownership must be explicit, and independent moving parts need independent physical owners.
Preserve sealed calibration and package provenance. Changes to physical inputs need fresh generations; appearance revisions must leave the full physical snapshot unchanged.
Use Testing to choose checks that match the changed subsystem. Updating website prose alone does not require launching SolidWorks or the game.