Skip to main content

OpenVCAD

PyPI version License

Volumetric, Multi-Material, Programmable CAD for Additive Manufacturing

Hero Image

OpenVCAD is an open-source volumetric geometry compiler for the design and fabrication of functionally graded, multi-material objects. It brings advanced implicit modeling and programmable parametric design into the world of additive manufacturing.

Quick Start

pip install OpenVCAD

Wheels are published for Python 3.12–3.14 on 64-bit Windows, Linux (glibc 2.39+), and macOS 15+ on Apple silicon. The install includes pyvcad, pyvcad_compilers, pyvcad_rendering, pyvcad_medical, pyvcad_attribute_resolver, and pyvcad_metamaterials.

import pyvcad as pv
import pyvcad_metamaterials as mm
import pyvcad_rendering as viz

# Define a 30x30x30 mm block
block = 30.0

# Create a cell map for a 3x3x3 lattice
cell_map = mm.rectangular_cell_map(
    (
        pv.Vec3(-block / 2.0, -block / 2.0, -block / 2.0),
        pv.Vec3(block / 2.0, block / 2.0, block / 2.0),
    ),
    cells=(3, 3, 3),
)

# Build a bcc strut lattice
root = mm.graph_lattice(cell_map, "bcc", beam_radius=1.0)

# Apply a modulus gradient in MPa from 10 MPa (soft) to 2000 MPa (stiff)
# mapped across the Z axis from -15 to +15.
modulus_expr = "10.0 + (z + 15.0) * (2000.0 - 10.0) / 30.0"
modulus = pv.FloatAttribute(modulus_expr)
root.set_attribute(pv.DefaultAttributes.MODULUS, modulus)

viz.Render(root)

Example Output

Resources

Documentation matterassembly.org/OpenVCAD-Docs
Project Website matterassembly.org/openvcad
Examples examples/ in this repo
Bug Reports Issues
Community Discussions
Source Code Access Request Form

Examples

Clone this repo to get runnable example scripts:

git clone https://github.com/MacCurdyLab/OpenVCAD-Public.git
cd OpenVCAD-Public/examples

See the Getting Started tutorial in the documentation for a walkthrough.

License

OpenVCAD is released under a non-commercial open-source license. See the LICENSE file for details.

Citing OpenVCAD

If you use OpenVCAD in your research, please cite the relevant papers below.

@article{wade2026gradingslicing,
  title = {Functionally Grading the Slicing Process by Compiling Design Intent into Slicer Projects},
  author = {Wade, Charles and Beck, Devon and MacCurdy, Robert},
  journal = {arXiv Pre-print},
  year = {2026},
  doi = {10.48550/arXiv.2607.25326},
}
@article{wade2026attributemodeling,
  title = {Design-Intent Compilation for Heterogeneous Fabrication},
  author = {Wade, Charles and Beck, Devon and MacCurdy, Robert},
  journal = {arXiv Pre-print},
  year = {2026},
  doi = {10.48550/arXiv.2607.22741},
}
@article{wade2025pyvcad,
  title = {Implicit Modeling for 3D-printed Multi-material Computational Object Design via Python},
  author = {Wade, Charles and Beck, Devon and MacCurdy, Robert},
  journal = {Proceedings of the 10th ACM Symposium on Computational Fabrication},
  year = {2025},
  doi = {10.48550/arXiv.2509.15562},
}
@article{wade2025implicit,
  title = {Implicit Toolpath Generation for Functionally Graded Additive Manufacturing via Gradient-Aware Slicing},
  author = {Wade, Charles and Beck, Devon and MacCurdy, Robert},
  journal = {Additive Manufacturing},
  year = {2025},
  doi = {10.1016/j.addma.2025.104963},
}
@article{wade2024openvcad,
  title={OpenVCAD: An open source volumetric multi-material geometry compiler},
  author={Wade, Charles and Williams, Graham and Connelly, Sean and Kopec, Braden and MacCurdy, Robert},
  journal={Additive Manufacturing},
  volume={79},
  pages={103912},
  year={2024},
  publisher={Elsevier}
}

See the publications page in the documentation for a short summary of each paper.

Metadata

Release files for OpenVCAD 3.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for OpenVCAD 3.2.0
File Actions
openvcad-3.2.0-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details for openvcad-3.2.0-cp314-cp314-win_amd64.whl
openvcad-3.2.0-cp314-cp314-manylinux_2_39_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.39+ x86-64 Details for openvcad-3.2.0-cp314-cp314-manylinux_2_39_x86_64.whl
openvcad-3.2.0-cp314-cp314-macosx_15_0_arm64.whl CPython 3.14 CPython 3.14 macOS 15.0+ ARM64 Details for openvcad-3.2.0-cp314-cp314-macosx_15_0_arm64.whl
openvcad-3.2.0-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details for openvcad-3.2.0-cp313-cp313-win_amd64.whl
openvcad-3.2.0-cp313-cp313-manylinux_2_39_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.39+ x86-64 Details for openvcad-3.2.0-cp313-cp313-manylinux_2_39_x86_64.whl
openvcad-3.2.0-cp313-cp313-macosx_15_0_arm64.whl CPython 3.13 CPython 3.13 macOS 15.0+ ARM64 Details for openvcad-3.2.0-cp313-cp313-macosx_15_0_arm64.whl
openvcad-3.2.0-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details for openvcad-3.2.0-cp312-cp312-win_amd64.whl
openvcad-3.2.0-cp312-cp312-manylinux_2_39_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.39+ x86-64 Details for openvcad-3.2.0-cp312-cp312-manylinux_2_39_x86_64.whl
openvcad-3.2.0-cp312-cp312-macosx_15_0_arm64.whl CPython 3.12 CPython 3.12 macOS 15.0+ ARM64 Details for openvcad-3.2.0-cp312-cp312-macosx_15_0_arm64.whl

Total release size: 612.0 MB

Release files / openvcad-3.2.0-cp314-cp314-win_amd64.whl

Download URL openvcad-3.2.0-cp314-cp314-win_amd64.whl
Size 58.0 MB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
dac5a656b8eaa01da056a61686fef06688203deccb14212d1a0574937c063289
BLAKE2b-256 checksum
How to use checksums
dd0cda6e2148f08e0df2aaab803e13c9a581bf54f8a4c3b6fb39b9b00312abdb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.10

Release files / openvcad-3.2.0-cp314-cp314-manylinux_2_39_x86_64.whl

Download URL openvcad-3.2.0-cp314-cp314-manylinux_2_39_x86_64.whl
Size 74.1 MB
Tags CPython 3.14 Linux glibc 2.39+ x86-64
SHA-256 checksum
How to use checksums
5f314835f6a86b041c3eefaaed61abd521895586f1b980f4b1b389c96163da84
BLAKE2b-256 checksum
How to use checksums
bac164be5cfd6a4cf57eabc663753769ed483df9f2a4d1aa05cd63d0b86c520f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.10

Release files / openvcad-3.2.0-cp314-cp314-macosx_15_0_arm64.whl

Download URL openvcad-3.2.0-cp314-cp314-macosx_15_0_arm64.whl
Size 72.9 MB
Tags CPython 3.14 macOS 15.0+ ARM64
SHA-256 checksum
How to use checksums
f638be9b312e1eb42ad2fa2162fb27e7b46f941138d2f4136a94334d7d1e4c28
BLAKE2b-256 checksum
How to use checksums
60703824dfaa2ec510b4a0bbee31f57621471d4cca46f92106b1318238bae15e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.10

Release files / openvcad-3.2.0-cp313-cp313-win_amd64.whl

Download URL openvcad-3.2.0-cp313-cp313-win_amd64.whl
Size 56.5 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
37bd457d7477029e9d6b4c92737e701a9dc77133d245543cb7f1e3a3a4902b6b
BLAKE2b-256 checksum
How to use checksums
ce336d03e239c1a4a4ba2f12e6d26f33e025f743e18ec636476a58cc3ab378f3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.10

Release files / openvcad-3.2.0-cp313-cp313-manylinux_2_39_x86_64.whl

Download URL openvcad-3.2.0-cp313-cp313-manylinux_2_39_x86_64.whl
Size 74.1 MB
Tags CPython 3.13 Linux glibc 2.39+ x86-64
SHA-256 checksum
How to use checksums
9fce9c8a6b93f6620d6dd5588d8eff0ac9282e61e6d099aa6cfdd5e10223eabc
BLAKE2b-256 checksum
How to use checksums
f72ed0b5c6d818ce1a992757bf37358df639fc6097421fce2b8882e592ea295d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.10

Release files / openvcad-3.2.0-cp313-cp313-macosx_15_0_arm64.whl

Download URL openvcad-3.2.0-cp313-cp313-macosx_15_0_arm64.whl
Size 72.9 MB
Tags CPython 3.13 macOS 15.0+ ARM64
SHA-256 checksum
How to use checksums
b6621eca19273101137708d9388629e9483b4e53bcc9a7b0294457e3d9402937
BLAKE2b-256 checksum
How to use checksums
1bb4c2077b1176e725320967f321f4e4031f32568c270f81dd0e673de7035f79
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.10

Release files / openvcad-3.2.0-cp312-cp312-win_amd64.whl

Download URL openvcad-3.2.0-cp312-cp312-win_amd64.whl
Size 56.5 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
606fa3218767bafb317d7c668c3d4a6a29a6f6452f219f190f0787adebf22fc2
BLAKE2b-256 checksum
How to use checksums
dc302d55344cd2fca46a8e0da809783db23fed945ed840eac714622b8e2fd211
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.10

Release files / openvcad-3.2.0-cp312-cp312-manylinux_2_39_x86_64.whl

Download URL openvcad-3.2.0-cp312-cp312-manylinux_2_39_x86_64.whl
Size 74.1 MB
Tags CPython 3.12 Linux glibc 2.39+ x86-64
SHA-256 checksum
How to use checksums
aa7b45041d62af35a114f8da6cab02048868011c9678dada2ef09bfc3beb6278
BLAKE2b-256 checksum
How to use checksums
6c942b4279f0f81dad6df05bc33d410f61eedd974ba0976d3c23ab9d3ddf8fb0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.10

Release files / openvcad-3.2.0-cp312-cp312-macosx_15_0_arm64.whl

Download URL openvcad-3.2.0-cp312-cp312-macosx_15_0_arm64.whl
Size 72.9 MB
Tags CPython 3.12 macOS 15.0+ ARM64
SHA-256 checksum
How to use checksums
0b63449251f7d2d3fac85a50580042c84e88a1b4e368a66fefbfff3fb1ff0818
BLAKE2b-256 checksum
How to use checksums
28a330cbc2b4ab4c3f2852e07bddd27b6262e5fe2ace39d17e664972b2d5a643
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.10

Security for OpenVCAD 3.2.0

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.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page