Open source · macOS / Linux / Windows

Leave SOLIDWORKS.
Keep your feature trees.

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.

Plate with a hole · recorded with anvilcad-agent · real time How it was made ↗

v0.1 early release macOS / Linux / Windows MIT OR Apache-2.0 No SOLIDWORKS required

Migration / anvil-migrate

Bring your feature trees.
Not just the shape.

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.

  1. 01

    Read in tree order.

    Sketches keep their geometry, relations and driving dimensions. Sketches on faces stay attached to the matching AnvilCAD face.

  2. 02

    Checked feature by feature.

    After each solid feature, SOLIDWORKS is rolled back to that point and its exact volume is compared with AnvilCAD's rebuild.

  3. 03

    Nothing is lost on the way.

    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.

Every file gets a statusmigration-report.csv
ParametricEvery geometric feature was rebuilt as an editable AnvilCAD feature.
HybridSome features came across as imported geometry; the report lists which and why.
FailedThe file could not be read.
SkippedAssemblies and drawings, not migrated yet.

verified means the migrated part's volume matches SOLIDWORKS within 1%.

The report, one row per fileillustrative rows, real columns
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

Move the whole archive,
not one file.

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.

  • Deduplicated. Files are hashed, so copies of the same part become one job.
  • Resumable on any number of machines. Each job is claimed with an atomic file creation and done exactly once. Stop a run and start it again; finished jobs are never redone.
  • No SOLIDWORKS needed. Geometry comes from STEP exports. While your licences last, the optional --with-anvil-migrate plug-in recovers feature trees too.
  • Edits are safe. Parts already in the output are kept, so nothing anyone changed is overwritten.
migration
# 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
files.csvproperties.csvsummary.csvsummary.json

Familiar on day one

You already know
how to use it.

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.

  1. 01

    Name the numbers that matter.

    Global variables and equations, such as depth = width / 2. Type =width into any dimension to link it.

  2. 02

    Change one, rebuild the rest.

    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.

  3. 03

    Keep variants in one file.

    Configurations with suppression, dimensions, variables and material per configuration, and a table that edits them all.

width 80 → 110 · boss_d 24 → 34 · thickness 10 → 6 mmScript ↗

Modelling tools

Sketch, model and check.

Everything that works today
  • 01

    Sketches and relations.

    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.

  • 02

    Solid features.

    Extrudes and revolves with every end condition, sweeps, lofts, shells, ribs, drafts, domes, holes sized from ISO and ANSI tables, mirrors and patterns.

  • 03

    Fillets and chamfers.

    Constant radius with circular, conic or curvature-continuous profiles, tangent propagation, and exact rounds on any edge between two faces.

  • 04

    Multibody and reference geometry.

    Combine, split, move, copy and scale bodies. Reference planes, axes, points and coordinate systems.

  • 05

    Evaluate and DFM.

    Measure, section views, mass properties with 26 materials, and design checks for CNC machining and sheet metal.

  • 06

    Files you own.

    Native .anvprt parts are versioned JSON. STEP AP203, AP214 and AP242 in; exact STEP AP214, STL and OBJ out.

Boundary representation of a plate with a hole An isometric plate with a through hole. One face, one edge and one vertex are highlighted in turn and labelled. FACE · plane EDGE · line VERTEX
B-rep · faces, edges and vertices bound the solid, each on an exact curve or surface. Explanatory illustration.

anvil-brep / geometry kernel

Its own exact kernel.
Written in Rust.

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.

  • Never panics on bad input. The kernel and STEP crates forbid unsafe and deny unwrap; malformed files return errors.
  • Every solid is checked. Closed, consistently oriented, valid Euler characteristic, before it is used.
  • Never built worse. A faceted kernel takes over at the first feature the exact one cannot build, and is never worse than building faceted alone.

Agents and scripts / anvilcad-agent

Drive the real app
without a window.

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.

Read the harness guide
anvilcad-agent
> {"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

Made with AnvilCAD.

Example scripts

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%.

Recorded script · real time

Plate with rounded corners.

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

No subscription. No licence server.

  • Free

    Open source, for good.

    MIT OR Apache-2.0. No accounts, no seats, no cloud lock-in, and no feature held back for a paid tier.

  • Local

    Your files, on your disk.

    Parts are versioned JSON written atomically, so they diff, back up and outlive any vendor.

  • Native

    No SOLIDWORKS, ever.

    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

CAD now.
Then the whole stack.

The goal is a complete, free engineering stack. Nothing here has a date attached.

Read the roadmap
  1. now

    Parametric parts

    Sketches, features, configurations, exact kernel, STEP, and migration of SOLIDWORKS parts.

  2. now

    CAM

    2.5D milling exists as a library: adaptive clearing, facing, profiling, drilling, simulation and verified post processors.

  3. next

    Assemblies and drawings

    Parts positioned with mates, 2D drawings made from them, and migration of both.

  4. then

    PDM

    A versioned vault with check-in, check-out, metadata, life-cycle states and an open API.

  5. later

    PLM

    Bills of materials, change management and quality records, through open standards.

Latest release

AnvilCAD v0.1

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 changes

Contribute

Help build AnvilCAD.

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 guide

Get AnvilCAD

Build it in one command.

With a Rust toolchain on macOS, Linux or Windows:

git clone https://github.com/swperb/anvilcad && cd anvilcad && cargo run --release -p anvil-app