Generate printpaths for cylindrical and polygonal shapes using parametric controls.
Cylindrical Polygon is a parametric script that generates printpaths for cylindrical and polygonal shapes — such as vases, columns, planters, and other rotationally symmetric structures. The user defines a polygon cross-section and extrusion parameters, then applies curvature, twist, and surface patterns to produce a fully customized design in seconds.
This is a standalone design tool. It does not require any file upload (no Rhino, PDF, or 3D model input). The script generates a printpath entirely from its parameter set.
In short: Define a polygon, set your layers, shape it with curvature and patterns → printpath ready.
Navigate to the script using either:
A default model is generated immediately upon entering the page.
The page is divided into two panels:
Modify any combination of parameters in the sidebar (see the full parameter reference below). The parameters control the polygon shape, vertical extrusion, curvature profile, twist, surface patterns, and base.
Click Update Preview to refresh the 3D canvas with the current parameter values. If you do not click the button, the preview auto-updates approximately 10 seconds after the last parameter change.
Click the Randomize button to assign random values to all parameters. Each randomized value respects the defined min/max range of its parameter. This is useful for rapid exploration — generating unexpected starting points that you can then refine by manually adjusting individual parameters.
Note: Randomized designs are not guaranteed to be printable. Extreme combinations of curvature, twist, and pattern offsets may produce geometry with excessive overhangs or self-intersections. Use randomization as a creative starting point and adjust toward printability.
Enter a name for the design in the name field and click Save Design. This generates the final printpath and creates a new Design in your library. The design is then accessible in the main workspace, where you can view the simulation, edit metadata, adjust the transition point, and export G-code (a separate feature).
Note: After saving, you cannot return to the parametric script interface to modify parameters. To iterate on a design, re-enter the Cylindrical Polygon page and configure a new design.
The script constructs geometry in the following sequence:
| Parameter | Name | Default | Min | Max | Unit | Description |
|---|---|---|---|---|---|---|
radius | Base Radius | 300 | 10 | 600 | mm | Radius of the base polygon, measured from center to vertex. |
num_sides | Number of Sides | 50 | 3 | 100 | — | Number of sides of the polygon cross-section. Low values produce angular shapes (3 = triangle, 4 = square, 6 = hexagon). High values approach a circle. |
| Parameter | Name | Default | Min | Max | Unit | Description |
|---|---|---|---|---|---|---|
layer_height | Layer Height | 10 | 1 | 30 | mm | Vertical distance between consecutive layers. |
num_layers | Number of Layers | 100 | 1 | 300 | — | Total number of layers extruded from the base. |
Curvature applies a sine wave along the height of the model, expanding or contracting the radius of each layer.
| Parameter | Name | Default | Min | Max | Unit | Description |
|---|---|---|---|---|---|---|
amplitude | Curvature | 50 | -100 | 100 | mm | Amplitude of the sine wave. Positive values expand outward, negative values contract inward. |
frequency | Curvature Frequency | 3 | 0 | 20 | — | Number of sine wave cycles across the total height. Higher values produce more undulations. Setting this to 0 disables curvature. |
mid_height | Curvature Shift | 0 | -20 | 20 | — | Vertical offset of the sine wave along the model height. Shifts the curvature profile up or down. |
Twist rotates the polygon vertices progressively along the vertical axis using a sine-based function.
| Parameter | Name | Default | Min | Max | Unit | Description |
|---|---|---|---|---|---|---|
shift_amplitude | Twist | 2 | -5 | 5 | — | Amplitude of the twist rotation. |
shift_frequency | Twist Frequency | 5 | 0 | 20 | — | Number of twist oscillation cycles across the total height. |
| Parameter | Name | Default | Description |
|---|---|---|---|
include_base | Base | false | When enabled, generates an inner wall on the first layer that spirals inward from the polygon perimeter toward the center, partially closing the bottom. The center remains open. Useful for vase-type designs that require a floor. |
Patterns apply radial offsets to the polygon vertices on each layer, creating surface texture and relief. The offset values are applied in a repeating sequence of 4 points along the polygon perimeter: every set of 4 consecutive vertices receives the corresponding offset (A.1, A.2, A.3, A.4), and this cycle repeats around the full perimeter.
Each offset value moves the vertex radially toward the center of the layer by the specified distance in mm. Positive values push inward, negative values push outward.
| Parameter | Name | Default | Min | Max | Unit | Condition | Description |
|---|---|---|---|---|---|---|---|
has_pattern | Pattern | true | — | — | — | — | Enables or disables the pattern system. |
pattern_a_1 | Pattern A.1 offset | 0 | -50 | 50 | mm | Pattern = on | Radial offset for the 1st point in each 4-point cycle. |
pattern_a_2 | Pattern A.2 offset | 10 | -50 | 50 | mm | Pattern = on | Radial offset for the 2nd point in each 4-point cycle. |
pattern_a_3 | Pattern A.3 offset | 15 | -50 | 50 | mm | Pattern = on | Radial offset for the 3rd point in each 4-point cycle. |
pattern_a_4 | Pattern A.4 offset | 0 | -50 | 50 | mm | Pattern = on | Radial offset for the 4th point in each 4-point cycle. |
alternate_pattern | Alternating Pattern | false | — | — | — | Pattern = on | When enabled, Pattern B replaces Pattern A on every other layer, creating an alternating surface effect. |
pattern_b_1 | Pattern B.1 offset | 0 | -50 | 50 | mm | Alternating = on | Radial offset for the 1st point in each 4-point cycle (odd layers). |
pattern_b_2 | Pattern B.2 offset | 0 | -50 | 50 | mm | Alternating = on | Radial offset for the 2nd point in each 4-point cycle (odd layers). |
pattern_b_3 | Pattern B.3 offset | 0 | -50 | 50 | mm | Alternating = on | Radial offset for the 3rd point in each 4-point cycle (odd layers). |
pattern_b_4 | Pattern B.4 offset | 0 | -50 | 50 | mm | Alternating = on | Radial offset for the 4th point in each 4-point cycle (odd layers). |
Tip: To create a clean design with no surface pattern, disable the Pattern toggle. To create a faceted or textured surface, experiment with contrasting offset values across the A.1–A.4 slots. Enable Alternating Pattern with different B values for a woven or zigzag relief between layers.
When configuring parameters, keep the following in mind for 3D concrete printing:
Always verify the preview visually before saving, paying attention to how much each layer deviates from the one below it.
| Action | Result |
|---|---|
| Adjust parameters | Modify the design geometry |
| Update Preview | Refresh the 3D canvas (or wait ~10s for auto-update) |
| Randomize | Apply random values within parameter ranges to all parameters |
| Save Design | Generate the final printpath and add the design to your library |