OpenVCAD
Volumetric, Multi-Material, Programmable CAD for Additive Manufacturing
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.
[!WARNING] OpenVCAD 3.0 Update We have recently moved to a non-backwards compatible version 3.0 that introduces attribute modeling. If you are migrating from an older version, please read the migration guide.
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)
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.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file openvcad-3.0.2-cp314-cp314-win_amd64.whl.
File metadata
- Download URL: openvcad-3.0.2-cp314-cp314-win_amd64.whl
- Upload date:
- Size: 56.4 MB
- Tags: CPython 3.14, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
41d9f9b3276459342cba2e3f47338fd2b761075fe436001fdc8f3ea6926a63a5
|
|
| MD5 |
e0e71443f08799de8f59f26cac03ccd4
|
|
| BLAKE2b-256 |
03c2cb10a695056ecd7e3c447797e101a517ad68229b99b1d2e0341956a2f208
|
File details
Details for the file openvcad-3.0.2-cp314-cp314-manylinux_2_39_x86_64.whl.
File metadata
- Download URL: openvcad-3.0.2-cp314-cp314-manylinux_2_39_x86_64.whl
- Upload date:
- Size: 72.0 MB
- Tags: CPython 3.14, manylinux: glibc 2.39+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a97b786983b43f0e7ed9441fb78d842480243763e9ceef4961611e5ec704b2cc
|
|
| MD5 |
fe5a4f8c237b1feaf6348f9c150bd8e5
|
|
| BLAKE2b-256 |
95ecbc28591e228d49ed9826b24b37d8f039fe1f206330192ab3e9815bb7b3b2
|
File details
Details for the file openvcad-3.0.2-cp314-cp314-macosx_26_0_arm64.whl.
File metadata
- Download URL: openvcad-3.0.2-cp314-cp314-macosx_26_0_arm64.whl
- Upload date:
- Size: 72.7 MB
- Tags: CPython 3.14, macOS 26.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
06f282361cb1d59333d434094d4dc6132762e0440910f8a56abddbe383684a0b
|
|
| MD5 |
c70266b80be86b6a0464373b86d98ae6
|
|
| BLAKE2b-256 |
51640ea5fe268baa7d5949fb2d28bd25de85b319280cc62328fc335b04e20230
|
File details
Details for the file openvcad-3.0.2-cp313-cp313-win_amd64.whl.
File metadata
- Download URL: openvcad-3.0.2-cp313-cp313-win_amd64.whl
- Upload date:
- Size: 55.0 MB
- Tags: CPython 3.13, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
04441b70ba5ca5baf839ed4698890231925e7c2338f627c934ac9c4b95aee09e
|
|
| MD5 |
8dbc3f792661abdf5fb831423fd819d4
|
|
| BLAKE2b-256 |
01cd6249cec71f5b56dac51d466a3fb8195b61910cf9d2a6b742c7d984026ec0
|
File details
Details for the file openvcad-3.0.2-cp313-cp313-manylinux_2_39_x86_64.whl.
File metadata
- Download URL: openvcad-3.0.2-cp313-cp313-manylinux_2_39_x86_64.whl
- Upload date:
- Size: 72.0 MB
- Tags: CPython 3.13, manylinux: glibc 2.39+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5fce75a874d639ccdf9d0062c20cd8789b1fdf2badee2e033eb17f8916659bab
|
|
| MD5 |
88031a9112a0e36082a6fcb89215b060
|
|
| BLAKE2b-256 |
c56c940f659ca56e53bbeea5e18a343211b2f33b9118dcfd670f10aed452ff9b
|
File details
Details for the file openvcad-3.0.2-cp313-cp313-macosx_26_0_arm64.whl.
File metadata
- Download URL: openvcad-3.0.2-cp313-cp313-macosx_26_0_arm64.whl
- Upload date:
- Size: 72.7 MB
- Tags: CPython 3.13, macOS 26.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7fe6df06cab62b0e51575ed3a26124a723df4d2fde50e4fa269be6c64734230e
|
|
| MD5 |
35b5e0a89149c53c6376eff4cc950a95
|
|
| BLAKE2b-256 |
e921c73f4f6179fa3c04aabb823137c4728a314cb1112b4475c6e7b78550e873
|
File details
Details for the file openvcad-3.0.2-cp312-cp312-win_amd64.whl.
File metadata
- Download URL: openvcad-3.0.2-cp312-cp312-win_amd64.whl
- Upload date:
- Size: 55.0 MB
- Tags: CPython 3.12, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9539de6982dcdda126393af23f6c1cc53dba5979cb74c29ba46a71b5236fce9d
|
|
| MD5 |
02f67442d2bd1da3e1a716ea53883fe2
|
|
| BLAKE2b-256 |
fe43db9985de480ecc6fc7e3838022dfe65a075cccd35fa0742fca623deb287b
|
File details
Details for the file openvcad-3.0.2-cp312-cp312-manylinux_2_39_x86_64.whl.
File metadata
- Download URL: openvcad-3.0.2-cp312-cp312-manylinux_2_39_x86_64.whl
- Upload date:
- Size: 72.0 MB
- Tags: CPython 3.12, manylinux: glibc 2.39+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3caadebdbcf72782cf0b48427c9c3c97036a017aafed6ce1e7fb8abb792b7737
|
|
| MD5 |
beedcfde638ae862c9175866830b83a8
|
|
| BLAKE2b-256 |
fd4f1154c25d3c1776ef5ff0f32f5fb816faca85b31f7239e67582804184f85d
|
File details
Details for the file openvcad-3.0.2-cp312-cp312-macosx_26_0_arm64.whl.
File metadata
- Download URL: openvcad-3.0.2-cp312-cp312-macosx_26_0_arm64.whl
- Upload date:
- Size: 72.7 MB
- Tags: CPython 3.12, macOS 26.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b8a63dcbbd8309d9273b665fc1ee321ea2ba7439b067d58331273fdb832ed6e7
|
|
| MD5 |
bcd22b7099c55c5d365876a3e3c3ff45
|
|
| BLAKE2b-256 |
066d73b16dfb618b158b16de92d9fe1ddb02c65cb92e26bd45d0032c34e26a5a
|