CADVERT
Turn CAD files into something an AI can actually read.
A STEP file is a boundary representation — dense surface equations and topology built for CAD kernels, not for language models. Paste one into an LLM and it chokes; show it a screenshot and the model can see the shape but can't tell you the wall is exactly 11.000 mm thick. In engineering, the number is the point.
CADVERT reads the CAD file directly and extracts the exact geometry the engineer authored — dimensions, holes, fillets, wall thicknesses, tolerances — as clean, structured text (and other representations) any model can reason over. Geometry is analytical, straight from the B-REP — never tessellated or approximated.
pip install cadvert
Quick start
import cadvert
result = cadvert.analyze("bracket.step")
print(result.to_text()) # LLM-ready structured document (the flagship)
result.to_dict() # JSON-safe analysis for quoting / CI / DBs
result.to_json()
result.to_graph() # networkx face-adjacency graph (GNN / UV-Net)
result.to_points(2048) # (N,3) surface point cloud (PointNet / 3D-CNN)
Example to_text() output:
PART: bracket
[GLOBAL PROPERTIES]
Bodies: 1 | Faces: 8 | Edges: 18
Bbox: X[0,60] Y[0,40] Z[0,20]
[FEATURES]
hole_1: THROUGH HOLE d=8.000mm depth=20.000mm [5/16"]
pattern_1: PATTERN 2× through hole d=8.000mm
[SPATIAL RELATIONSHIPS]
Wall thickness: hole_1 bore → outer surface = 11.000 mm
Supported formats
| Extension | Pipeline | Notes |
|---|---|---|
.step .stp |
Full B-REP | Features, spatial, GD&T (AP242) |
.iges .igs |
Full B-REP | Features, spatial |
.brep |
Full B-REP | Features, spatial |
.stl .obj |
Mesh | Global properties + point cloud |
.dxf |
2D drawing | Entities, layers, dimensions, text |
Representations
| Method | Output | For |
|---|---|---|
.to_text() |
Structured text | Prompting an LLM (Claude, GPT) |
.to_dict() / .to_json() |
JSON | Quoting engines, CI checks, databases |
.to_graph() |
networkx graph |
Graph neural networks |
.to_points(n) |
(N,3) array |
PointNet, 3D CNNs |
Optional extras
pip install cadvert[graph] # networkx → .to_graph()
pip install cadvert[mesh] # trimesh → area-weighted .to_points(), OBJ
pip install cadvert[dxf] # ezdxf → .dxf drawings
pip install cadvert[server] # FastAPI REST server + web UI
pip install cadvert[llm] # OpenAI semantic enrichment
pip install cadvert[full] # everything
CLI
cadvert part.step -o out.hsd.txt # convert to an HSD document
cadvert-server # REST API on http://localhost:8000
Building an AI CAD tool
Register analyze as a tool in your LLM framework and the model can answer
questions about real parts using real dimensions:
def analyze_cad(file_path: str) -> str:
return cadvert.analyze(file_path).to_text()
Requires Python 3.10+. Core install ships cadquery-ocp (OCCT bindings) and
numpy — no other heavy dependencies.
Metadata
Release files for cadvert 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| cadvert-0.2.0.tar.gz | 103.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| cadvert-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 208.3 kB
Release files / cadvert-0.2.0.tar.gz
| Download URL | cadvert-0.2.0.tar.gz |
|---|---|
| Size | 103.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
476aeab32aba4f4609cbd91f7a3be282353c0ba1cd2b3bec5bc2a719d75ab8b0
|
|
BLAKE2b-256 checksum How to use checksums |
1237a8f4c9b7c893aef5330899bc41430db6891e7481529a6197812d70ac1750
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 21, 2026.
Transparency logRelease files / cadvert-0.2.0-py3-none-any.whl
| Download URL | cadvert-0.2.0-py3-none-any.whl |
|---|---|
| Size | 104.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
08073f564464145c4a6d6c3bf4bbc2cdeb8a9ea3304af0c935071156a6211d75
|
|
BLAKE2b-256 checksum How to use checksums |
e16e78f51383dc9c60783160fcfdc15ca2b0626d7fb605a6769d7176661f913f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 21, 2026.
Transparency log