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
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:

@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}
}
@article{wade2025toolpaths,
  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 = {https://doi.org/10.1016/j.addma.2025.104963},
}
@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 = {https://doi.org/10.48550/arXiv.2509.15562},
}

See the full list of publications for additional citations.

Release files for OpenVCAD 3.1.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.1.0
File
openvcad-3.1.0-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details
openvcad-3.1.0-cp314-cp314-manylinux_2_39_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.39+ x86-64 Details
openvcad-3.1.0-cp314-cp314-macosx_26_0_arm64.whl CPython 3.14 CPython 3.14 macOS 26.0+ ARM64 Details
openvcad-3.1.0-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
openvcad-3.1.0-cp313-cp313-manylinux_2_39_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.39+ x86-64 Details
openvcad-3.1.0-cp313-cp313-macosx_26_0_arm64.whl CPython 3.13 CPython 3.13 macOS 26.0+ ARM64 Details
openvcad-3.1.0-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
openvcad-3.1.0-cp312-cp312-manylinux_2_39_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.39+ x86-64 Details
openvcad-3.1.0-cp312-cp312-macosx_26_0_arm64.whl CPython 3.12 CPython 3.12 macOS 26.0+ ARM64 Details

Total release size: 601.6 MB

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

Download URL openvcad-3.1.0-cp314-cp314-win_amd64.whl
Size 56.5 MB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
0753712906e554f774c5888f3a9a57d71a9f83cbeda5e9b2eeeea73ea24d29e5
BLAKE2b-256 checksum
How to use checksums
95fcf474cf2c895de3b17624585ce9c44e9e66cd97edb621f8bbd03357a5a1d4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.2

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

Download URL openvcad-3.1.0-cp314-cp314-manylinux_2_39_x86_64.whl
Size 72.1 MB
Tags CPython 3.14 Linux glibc 2.39+ x86-64
SHA-256 checksum
How to use checksums
5c6a183f1d0760e2094f1bfef6d3370a9e29bfaa129b640f3aa1599ef29f34f8
BLAKE2b-256 checksum
How to use checksums
139fba2c6e17ef098daca4afb91cb4956fe5f20bbe4c43d95012d6cd25092e6d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.2

Release files / openvcad-3.1.0-cp314-cp314-macosx_26_0_arm64.whl

Download URL openvcad-3.1.0-cp314-cp314-macosx_26_0_arm64.whl
Size 72.8 MB
Tags CPython 3.14 macOS 26.0+ ARM64
SHA-256 checksum
How to use checksums
f1a9bac6df46da5fce9d564e5d8a3c3bc28b3389fb732996908625781e3787c5
BLAKE2b-256 checksum
How to use checksums
64126d51538b7231ced8fdc8994a31fb8f43de91d441fc150bdc15e9bbf87459
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.2

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

Download URL openvcad-3.1.0-cp313-cp313-win_amd64.whl
Size 55.1 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
78a1cf1e3004af449e7b579f68ff40376f98c2872e1208634f97b6b2f1cc6d16
BLAKE2b-256 checksum
How to use checksums
60d920ef7f155b2bfc8172545758c649440adddcb5398f5c2f5d4db21337b999
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.2

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

Download URL openvcad-3.1.0-cp313-cp313-manylinux_2_39_x86_64.whl
Size 72.1 MB
Tags CPython 3.13 Linux glibc 2.39+ x86-64
SHA-256 checksum
How to use checksums
a5359b6d55ce04fd339284e7e44d6d3e54984bb8ef832fb263cd0ef1bed8b2dd
BLAKE2b-256 checksum
How to use checksums
5d010b43f7f88c22b270117ccc5206c9b57416ed28b3940d144b41b594858be3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.2

Release files / openvcad-3.1.0-cp313-cp313-macosx_26_0_arm64.whl

Download URL openvcad-3.1.0-cp313-cp313-macosx_26_0_arm64.whl
Size 72.8 MB
Tags CPython 3.13 macOS 26.0+ ARM64
SHA-256 checksum
How to use checksums
028ec23fe441d8bf655d9ac10906f3bf5ceabaf80faef93f865c383a6a9b1f0a
BLAKE2b-256 checksum
How to use checksums
f5300f7a4c7183d0cf26f0c68249db2843cd6719cb31d616797a5ed5a6e044f9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.2

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

Download URL openvcad-3.1.0-cp312-cp312-win_amd64.whl
Size 55.1 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
531a35a6c67804d9048a7b087178f6b9154407abf499107de6fbfe1ac4c9569a
BLAKE2b-256 checksum
How to use checksums
46669ea523caeef5dd14069ae072bec4c92d9d47c6d1b58b8116ea77624e2572
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.2

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

Download URL openvcad-3.1.0-cp312-cp312-manylinux_2_39_x86_64.whl
Size 72.1 MB
Tags CPython 3.12 Linux glibc 2.39+ x86-64
SHA-256 checksum
How to use checksums
8b2ac9e22b7b7114da8979f280107b07ad6a87f2600e40db8353f9b4da360d90
BLAKE2b-256 checksum
How to use checksums
4f6472539897e565622838b9b35685d941cdb72deb44fcf7aa73446e166e4ff1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.2

Release files / openvcad-3.1.0-cp312-cp312-macosx_26_0_arm64.whl

Download URL openvcad-3.1.0-cp312-cp312-macosx_26_0_arm64.whl
Size 72.8 MB
Tags CPython 3.12 macOS 26.0+ ARM64
SHA-256 checksum
How to use checksums
5ec89b7961900927b392832b1970439d36ae5c4890cfd42538bf5a274137c2d6
BLAKE2b-256 checksum
How to use checksums
360bd71263da97499d19d7e16bb910f4e4f0f367fd7639cd49331605bff9cf02
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.2

Release history Release notifications | RSS feed

This release

3.1.0 This release

9 release files

3.0.2

9 release files

3.0.1

9 release files

3.0.0

9 release files

2.3.8

12 release files

2.3.7

16 release files

2.3.6

16 release files

2.3.3

12 release files

2.3.2

12 release files

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