Bundled sample · built exactly
Mounting plate with a boss.
Extrudes, cuts, a linear pattern of slots and filleted boss rims, rebuilt on the exact kernel from start to finish. Its volume matches the faceted-only build to 0.013%.
Open source · macOS / Linux / Windows
AnvilCAD is free, open-source parametric CAD written in Rust. Your parts come across as editable features, each one checked against SOLIDWORKS' own volume, in a workflow your engineers already know.
Migration / anvil-migrate
Other free CAD gets geometry out of a SOLIDWORKS file at best. anvil-migrate drives your own licensed SOLIDWORKS through its published API and rebuilds each part as editable AnvilCAD features: sketches with their relations and dimensions, extrudes, cuts, revolves, patterns, reference planes, global variables and equations, material and custom properties.
Sketches keep their geometry, relations and driving dimensions. Sketches on faces stay attached to the matching AnvilCAD face.
After each solid feature, SOLIDWORKS is rolled back to that point and its exact volume is compared with AnvilCAD's rebuild.
A feature that cannot be rebuilt yet comes across as SOLIDWORKS' own geometry at that point in the tree, and the features after it stay parametric.
Files are opened read-only and never saved. Parts only today, in their active configuration; assemblies and drawings are recorded in the report and are next on the roadmap.
| Parametric | Every geometric feature was rebuilt as an editable AnvilCAD feature. |
|---|---|
| Hybrid | Some features came across as imported geometry; the report lists which and why. |
| Failed | The file could not be read. |
| Skipped | Assemblies and drawings, not migrated yet. |
verified means the migrated part's volume matches SOLIDWORKS within 1%.
source,status,verified,volume_error_pct,parametric_features,imported_features,skipped_features,seconds,output,notes
bracket.sldprt,Parametric,true,0.0021,14,0,1,6.2,bracket.anvprt,
housing.sldprt,Hybrid,true,0.0870,22,1,0,11.4,housing.anvprt,"Sweep1: sweeps are not rebuilt yet"
> anvil-migrate -o D:\migrated D:\vault\projects
Whole organisations / anvil-bulk
Twenty years of parts across a dozen shares is a job for many machines, not one engineer. anvil-bulk inventories, deduplicates and converts an organisation's SOLIDWORKS files, and never writes to the originals.
--with-anvil-migrate plug-in recovers feature trees too.# 1. Find every file, hash it, pair each part with its STEP export
> anvil-bulk scan --project \\server\migration --step-root \\server\step-exports \\server\eng \\server\archive
# 2. On each worker machine
> anvil-bulk run --project \\server\migration
# 3. Watch progress
> anvil-bulk status --project \\server\migration --workers 20
# 4. One .anvprt per original part, at the same relative path
> anvil-bulk export --project \\server\migration --out \\server\anvilcad
Familiar on day one
A feature tree, sketches on planes or faces, fully defined sketches, relations, smart dimensions, equations, configurations and custom properties. The workflow follows the conventions your team was trained on, under AnvilCAD's own names.
Global variables and equations, such as depth = width / 2. Type =width into any dimension to link it.
In the recording, the sample part's width goes from 80 to 110 mm, its boss from 24 to 34 mm and its base from 10 to 6 mm.
Configurations with suppression, dimensions, variables and material per configuration, and a table that edits them all.
Modelling tools
Lines, arcs, circles, rectangles, polygons and slots, with trim, offset, fillet and sketch patterns; coincident, tangent, concentric and the rest; one Dimension tool that infers what you meant. Degrees of freedom are reported as you go.
Extrudes and revolves with every end condition, sweeps, lofts, shells, ribs, drafts, domes, holes sized from ISO and ANSI tables, mirrors and patterns.
Constant radius with circular, conic or curvature-continuous profiles, tangent propagation, and exact rounds on any edge between two faces.
Combine, split, move, copy and scale bodies. Reference planes, axes, points and coordinate systems.
Measure, section views, mass properties with 26 materials, and design checks for CNC machining and sheet metal.
Native .anvprt parts are versioned JSON. STEP AP203, AP214 and AP242 in; exact STEP AP214, STL and OBJ out.
anvil-brep / geometry kernel
AnvilCAD does not borrow a kernel. anvil-brep works on exact lines, circles, ellipses and B-splines on planes, cylinders, cones, spheres, tori and B-spline surfaces, with exact booleans whose intersection curves are found in closed form or traced to 1e-7 mm.
unsafe and deny unwrap; malformed files return errors.Agents and scripts / anvilcad-agent
anvilcad-agent runs the real AnvilCAD interface headlessly. An AI agent, a script or a test sends JSON commands, clicks through the app, reads its state and takes screenshots. It never takes focus or touches your mouse, and the same script gives the same pixels every run.
Every recording on this page was made this way, from the scripts in scripts/site. AI is optional; AnvilCAD works without it.
> {"cmd":"click","label":"Front Plane"}
> {"cmd":"click","label":"Rectangle"}
> {"cmd":"click","sketch":[-20,-10]}
> {"cmd":"click","sketch":[20,10]}
> {"cmd":"click","label":"Circle"}
> {"cmd":"click","sketch":[0,0]}
> {"cmd":"click","sketch":[5,0]}
> {"cmd":"click","label":"Exit Sketch"}
> {"cmd":"click","label":"Extruded Boss/Base"}
> {"cmd":"click","label":"OK","role":"Button"}
> {"cmd":"state"}
< {"ok":true,"state":{"status":"Rebuild OK",
"features":["Sketch1","Boss-Extrude1"],
"body":{"exact":true,"volume":7215.60,...}}}
> {"cmd":"screenshot","path":"target/plate.png"}
< {"ok":true,"adapter":"Apple M5 Pro (Metal)",...}
Example models
Bundled sample · built exactly
Extrudes, cuts, a linear pattern of slots and filleted boss rims, rebuilt on the exact kernel from start to finish. Its volume matches the faceted-only build to 0.013%.
Recorded script · real time
A 60 × 36 × 16 mm plate with a Ø18 mm hole, its four corners filleted at 6 mm. 30 494 mm³ before the fillet, 29 997 mm³ after.
Yours to keep
MIT OR Apache-2.0. No accounts, no seats, no cloud lock-in, and no feature held back for a paid tier.
Parts are versioned JSON written atomically, so they diff, back up and outlive any vendor.
Everything works on a machine that never had SOLIDWORKS. A licence only adds fidelity while you still have one.
Clean-room interoperability: SOLIDWORKS behaviour is studied from published documentation and lawfully held files, never from its binaries, and written up as 16 public specifications before any code. See INTEROPERABILITY.md.
Roadmap
The goal is a complete, free engineering stack. Nothing here has a date attached.
Read the roadmapSketches, features, configurations, exact kernel, STEP, and migration of SOLIDWORKS parts.
2.5D milling exists as a library: adaptive clearing, facing, profiling, drilling, simulation and verified post processors.
Parts positioned with mates, 2D drawings made from them, and migration of both.
A versioned vault with check-in, check-out, metadata, life-cycle states and an open API.
Bills of materials, change management and quality records, through open standards.
Latest release
An early release: the core modelling loop works end to end, and large parts of a full CAD system are still ahead. There are no prebuilt downloads yet.
Recent changesContribute
Report bugs, write a specification, improve the documentation or contribute code. Tests drive the real interface, so a change can be checked without opening a window.
Contribution guideGet AnvilCAD
With a Rust toolchain on macOS, Linux or Windows:
git clone https://github.com/swperb/anvilcad && cd anvilcad && cargo run --release -p anvil-app