Voussoir is a Grasshopper plugin for Rhinoceros 3D that enables the generation of stereotomic vault geometries from user-defined inputs. Developed as a tool for digital exploration of stone vault construction, it combines parametric modeling with geometric logic inspired by traditional masonry techniques.
The plugin is conceived with a modular architecture, allowing future integration of additional stereotomic approaches and ensuring that all components can seamlessly interact. Stay tuned for upcoming developments.
Preferred Installation: Open Rhino’s PackageManager, search for “voussoir” and install.
Features
- Generate voussoir-based vault systems from curves or surfaces.
- Control key geometric parameters, such as springer lines and intrados curvature.
- Automatically subdivide vault surfaces into voussoirs with customizable dimensions.
- Export vault elements as BREPs for further analysis, fabrication, or visualization.
- Designed to integrate seamlessly within parametric workflows in Rhino and Grasshopper.
Use Cases
- Historical reconstruction and digital archaeology.
- Architectural design inspired by stereotomy and stone vaulting.
- Educational applications in architectural geometry and design computation.
Technical Information
- Compatible with Rhino 8 and Grasshopper.
- Outputs clean and organized data trees for downstream use.
- Requires no external dependencies.
Disclaimer: This plugin is intended solely for geometric design exploration. It does not perform structural analysis or validation, and results should not be used for engineering assessment.






Core Geometry
| Barrel Vault Base Surface |
|---|
![]() |
| Nickname: BVSrf |
| Creates the base surface for the creation of a barrel vault |
| Input Name | ID | Description | Type | Default Values |
|---|---|---|---|---|
| Input Lines | SpringerLines | Two non intersecting lines | Curve | — |
| Vault Height | VaultHeight | Arc’s height. | Float | 2.00 |
| Arc Selection | VaultProfile | Right-click to select type of curve. 0: Parabola, 1: Arc, 2: Catenary. Or input one of the above integers | Integer | 2 |
| Output Name | ID | Description | Type |
|---|---|---|---|
| Vault Surface | VS | The vault surface created by lofting both arcs | Surface |
| Springer Lines | SL | The two horizontal lines (remaining sides). | Line |
| Vault Arcs | VA | The two generated arcs. | Curve |
| Barrel Vault Division – UV Grid |
|---|
![]() |
| Nickname: BVDivG |
| Divides a vault defined by two arcs into spanwise and lengthwise voussoirs. |
| Input Name | ID | Description | Type | Default Values |
|---|---|---|---|---|
| Vault Surface | VaultSurface | The vault surface created by lofting both arcs | Surface | — |
| Transversal Divisions | TransversalDivisions | Number of voussoirs in the vault’s span | Integer | 12 |
| Longitudinal divisions | LongitudinalDivisions | Number of voussoirs in the vault’s length | Integer | 8 |
| Output Name | ID | Description | Type |
|---|---|---|---|
| Intrados Planes | IP | Intrados planar vault panels | Plane |
| Division planes | DP | Planes of each Voussoir Contact Surface | Plane |
| Boundaries | B | Voussoir Boundaries (Indexes of Division Planes) | String |
| Transversal planes | TP | Planes at each length division | Plane |
| Longitudinal planes | LP | Planes at each span division | Plane |
| Create Voussoirs |
|---|
![]() |
| Nickname: BVouss |
| Creates Voussoirs defined by division planes |
| Input Name | ID | Description | Type | Default Values |
|---|---|---|---|---|
| Intrados Planes | IntradosPlanes | Intrados planar vault panels | Plane | — |
| Division planes | DivisionPlanes | Planes of each Voussoir Contact Surface | Plane | — |
| Boundaries | Boundaries | Voussoir Boundaries (Indexes of Division Planes) | String | — |
| Thickness | Thickness | Voussoir Thickness | Float | 0.25 |
| Output Name | ID | Description | Type |
|---|---|---|---|
| Voussoirs | V | Voussoir Blocks | Brep |
| Intrados | I | Intrados Surfaces | Surface |
| Extrados | E | Extrados Surfaces | Surface |
| Contact Surfaces | CS | Voussoir contact surfaces | Surface |
Springers
| Springer – Triangle |
|---|
![]() |
| Nickname: SprTri |
| Create a simple triangular Springer |
| Input Name | ID | Description | Type | Default Values |
|---|---|---|---|---|
| Vault Surface | VaultSurface | The vault surface created by lofting both arcs | Surface | — |
| Springer Line | SpringerLine | List of base lines to create vault springers | Curve | — |
| Voussoirs | Voussoirs | Voussoirs to analyse | Brep | — |
| Transversal Planes | TransversalPlanes | Planes at each span division | Plane | — |
| Output Name | ID | Description | Type |
|---|---|---|---|
| Springers | S | Finished Springers | Brep |
| Voussoirs | V | Non transformed voussoirs | Brep |
| Springer – Trapezoid |
|---|
![]() |
| Nickname: SprT |
| Create a simple trapezoid Springer |
| Input Name | ID | Description | Type | Default Values |
|---|---|---|---|---|
| Vault Surface | VaultSurface | The vault surface created by lofting both arcs | Surface | — |
| Springer Line | SpringerLine | List of base lines to create vault springers | Curve | — |
| Voussoirs | Voussoirs | Voussoirs to analyse | Brep | — |
| Transversal Planes | TransversalPlanes | Planes at each span division | Plane | — |
| Output Name | ID | Description | Type |
|---|---|---|---|
| Springers | S | Finished Springers | Brep |
| Voussoirs | V | Non transformed voussoirs | Brep |
| Springer – Wall |
|---|
![]() |
| Nickname: SprW |
| Creates a Springer based on the voussoirs closest to the springer line |
| Input Name | ID | Description | Type | Default Values |
|---|---|---|---|---|
| Vault Surface | VaultSurface | The vault surface created by lofting both arcs | Surface | — |
| Springer Line | SpringerLine | List of base lines to create vault springers | Curve | — |
| Voussoirs | Voussoirs | Voussoirs to analyse | Brep | — |
| Transversal Planes | TransversalPlanes | Planes at each span division | Plane | — |
| Springer Width | SpringerWidth | Distance perpendicular to springer line | Float | 0.25 |
| Output Name | ID | Description | Type |
|---|---|---|---|
| Springers | S | Finished Springers | Brep |
| Voussoirs | V | Non transformed voussoirs | Brep |
Wootils
| Arc by Height |
|---|
![]() |
| Nickname: ArcH |
| Create an upward arc between two points and a given height (max radius constrained by point distance) |
| Input Name | ID | Description | Type | Default Values |
|---|---|---|---|---|
| Start | A | Start point of the arc. | Point | — |
| End | B | End point of the arc. | Point | — |
| Height | H | Height of the arc. | Float | 2.00 |
| Output Name | ID | Description | Type |
|---|---|---|---|
| Arc | C | Arc curve | Curve |
| Catenary by Height |
|---|
![]() |
| Nickname: CatH |
| Create an upward catenary between two points and a given height |
| Input Name | ID | Description | Type | Default Values |
|---|---|---|---|---|
| Start | A | Start point of the catenary. | Point | — |
| End | B | End point of the catenary. | Point | — |
| Height | H | Rise (height) of the catenary. | Float | 2.00 |
| Output Name | ID | Description | Type |
|---|---|---|---|
| Catenary | C | Catenary curve | Curve |
| Parabola by Height |
|---|
![]() |
| Nickname: ParH |
| Create an upward parabola between two points and a given height |
| Input Name | ID | Description | Type | Default Values |
|---|---|---|---|---|
| Start | A | Start point of the parabola. | Point | — |
| End | B | End point of the parabola. | Point | — |
| Height | H | Height of the parabola. | Float | 2.00 |
| Output Name | ID | Description | Type |
|---|---|---|---|
| Parabola | C | Parabola curve | Curve |









