Learning functional engineering context from CAD assemblies
Assembly2Intent is an early research prototype exploring whether machine-learning systems can move beyond recognizing CAD geometry toward reasoning about how and why components interact.
The prototype uses B-Rep topology, face/edge geometry, assembly occurrence context, contact relationships, and joint labels to study three progressively harder questions:
- Can assembly context identify physical interfaces better than isolated geometry?
- Can interface geometry carry signal about mechanical semantics such as rigid vs revolute?
- Does that semantic signal transfer to a completely unseen mechanical design?
Status: v0.1 outreach research freeze. Three experimental phases are complete. Phase 4+ are explicit research hypotheses, not completed capabilities.
Open index.html or publish the repository with GitHub Pages.
The site includes interactive experiment dashboards, an evidence-vs-hypothesis
roadmap, limitations, future phases, and direct links to reproducibility artifacts.
| Phase | Question | Evaluation | Result |
|---|---|---|---|
| 1 | Identify physical contact faces | Leave-One-Body-Out | PR-AUC 0.996, F1 0.960 |
| 1 baseline | Geometry only | Leave-One-Body-Out | PR-AUC 0.781 (best geometry-only RF) |
| 2 | Rigid vs revolute within one design | Group-held-out | Macro-F1 0.723, balanced accuracy 0.768 |
| 3 | Rigid vs revolute on unseen designs | Leave-One-Assembly-Out | Best mean balanced accuracy 0.619 |
The Phase 3 performance drop is a central result, not something hidden. It suggests that immediate contact-patch geometry is insufficient for general engineering-intent transfer. The next representation should include a wider functional neighborhood: neighboring B-Rep topology, bores/shafts/pins/holes, nearby non-contact features, and an assembly graph.
CAD assembly
│
├── B-Rep geometry / topology
├── occurrence transforms
└── inter-component context
│
▼
physical interfaces
│
▼
contact ≠ constraint ≠ motion semantics
│
▼
functional neighborhood (planned)
│
▼
drawing priorities / verification (planned)
On a real Autodesk assembly with 111 visible B-Rep faces, adding assembly context to geometry improved contact-face ranking from a best geometry-only PR-AUC of 0.781 to 0.996, with F1 0.960.
Important limitation: Autodesk contact labels are proximity-based. This validates physical-interface reconstruction, not general engineering-intent understanding.
→ docs/EXPERIMENT_001_CONTACT_FACE_BASELINE.md
A second assembly contained 34 distinct contacting occurrence pairs. Only 18 were also explicitly jointed, establishing a useful representation distinction:
physical contact ≠ explicit constraint ≠ motion semantics
For rigid-vs-revolute classification, the strongest grouped within-design model reached balanced accuracy 0.768 and macro-F1 0.723, recovering 3/4 revolute interfaces.
→ docs/EXPERIMENT_002_INTERFACE_SEMANTICS.md
The strict test trained on two complete assemblies and tested on a third assembly never seen during training, rotating the held-out assembly.
Cross-design performance dropped substantially. The best mean rigid-vs-revolute balanced accuracy was 0.619. Inspection showed why: the same semantic joint class can be expressed with very different immediate contact geometry across designs.
This motivates Phase 4 rather than a claim that the problem is solved.
→ docs/EXPERIMENT_003_CROSS_ASSEMBLY_GENERALIZATION.md
Move from the immediate contact patch to a graph containing neighboring B-Rep features, nearby bores/shafts/pins/holes, repeated geometry, and assembly-level relationships. Compare directly against the Phase 3 contact-only baseline.
Test whether functional-context representations improve ranking of manufacturing drawing decisions such as view selection, section/detail priorities, and which mating dimensions should be surfaced first.
Explore confidence-aware suggestions for datum candidates, critical geometric relations, and a generate → verify → correct loop. This phase is explicitly human-in-the-loop; the current project makes no autonomous GD&T or tolerance assignment claim.
.
├── index.html
├── README.md
├── PROJECT_PLAN.md
├── src/assembly2intent/ # geometry/topology + baseline code
├── scripts/ # dataset and experiment pipelines
├── tests/ # unit + optional real-data integration tests
├── data/
│ ├── synthetic/ # distributable synthetic fixture
│ └── README.md # how to obtain real Autodesk data
├── results/ # aggregate experiment summaries / plots
├── docs/ # experiment reports + reproducibility
└── research/SOURCES.md # upstream sources and attribution
Create an environment and install dependencies:
python -m venv .venv
# Windows: .venv\Scripts\activate
# macOS/Linux: source .venv/bin/activate
pip install -r requirements.txtRun the distributable synthetic tests:
python -m unittest discover -s tests -vReal-data integration tests are skipped automatically until the Autodesk data is
present locally. For the complete real-data workflow, see
docs/REPRODUCIBILITY.md.
The real CAD experiments use selected assemblies from the Autodesk Fusion 360 Gallery Assembly Dataset. This repository intentionally does not redistribute the Autodesk CAD files. Obtain them from the official source and follow Autodesk's Dataset License.
See:
The original Assembly2Intent source is published for research demonstration and
technical review. No open-source license is granted in this repository at this
time. See LICENSE_STATUS.md.
See CITATION.cff.
Mohammed Ali
Research prototype prepared independently for technical exploration and discussion. It is not affiliated with or endorsed by Autodesk or DraftAid.