OpenVCAD Python documentation
Note
Learn more about the OpenVCAD project at matterassembly.org/openvcad.
OpenVCAD is an open-source volumetric multi-material geometry compiler that bridges the gap between modern multi-material 3D printing capabilities and computer-aided design (CAD) tools. OpenVCAD offers a novel workflow for designing objects with complex material distributions, enabling applications in fields like lattices, meta-materials, medical image printing, and robotics.
How OpenVCAD works
OpenVCAD integrates a parametric modeling Python package with compilers to articulate and generate volumetric designs. Its core workflow involves the following steps:
Modeling: Designers use the
pyvcad
library to create models defined as a hierarchical tree structure of geometry and material nodes.Compilation: The model scripts are processed by an OpenVCAD compiler module, which generates volumetric output formats.
Export: The output can be exported to formats like PNG stacks for Inkjet 3D printing, FEA meshes for simulation, or meshes for FFF.
The hierarchical tree structure enables efficient and complex designs, supporting features like:
Material Transitions: Gradual transitions between different material properties within the same object.
Fully Implicit Representation: Both geometry and material can be represented implicitly, enabling OpenVCAD to scale to printing systems that require the definition of hundreds of billions of voxels.
Digital Alloying: Combining materials at a low level for intricate compositions.
Blending: Blend (via convolution) across complex multi-material interfaces to create smooth gradations.
Image-Based Processing: Using image inputs for spatial material distributions (e.g., medical image processing).
What OpenVCAD is Not
OpenVCAD is not a voxel design tool. Although OpenVCAD can be used to generate voxel-based outputs, it is an implicit modeling system that allows for the creation of complex geometries and material distributions without the need to explicitly define every voxel. OpenVCAD expresses multi-material gradients using math expressions, allowing for high-level design that scales to printing systems that require hundreds of billions of voxels.
Supported Inputs in OpenVCAD
OpenVCAD is designed to handle a wide range of input types, enabling versatile workflows for complex multi-material designs.
Category |
Supported Inputs |
---|---|
Geometry |
|
Materials |
|
Supported Design Outputs in OpenVCAD
OpenVCAD provides a variety of output formats tailored for different workflows, ranging from 3D printing to simulation and rendering.
Category |
Output Types |
---|---|
3D Printing |
PNG stacks (suitable for inkjet systems) |
Simulation Preparation |
FEA Simulation Input Files with material assignments (compatible with ABAQUS) |
Voxel-based Outputs |
Voxel Grids (OpenVDB and NanoVDB) |
Visualization |
Rendering/Preview (supports both surface and volumetric representations) |
Academic Papers
OpenVCAD: An open source volumetric multi-material geometry compiler DOI: 10.1016/j.addma.2023.103912 | Pre-print PDF
Implicit Toolpath Generation for Functionally Graded Additive Manufacturing via Gradient-Aware Slicing Pre-print
Python Documentation:
- pyvcad Module
Arrangement2
BBoxUnion
Binary
Blend
CAD
Convolution
Cylinder
Difference
FGrade
FontAspect
Function
GraphLattice
HexahedralMesh
HorizontalAlignment
Intersection
LatticeType
Leaf
MaterialDefs
Mesh
NAry
Node
Offset
Point2
PointMap
Polygon2
Polyline2
RectPrism
Rotate
Scale
Segment2
Shell
Sphere
Strut
Sum
TetrahedralMesh
Text
Tile
Translate
Unary
Union
Vec2
Vec3
Vec4
VerticalAlignment
Voxels
evaluate_fill()
parse_vcad_text()
resources_path()
version()
- pyvcad_compilers Module
- pyvcadviz Module