Cylindrical Polygon

Generate printpaths for cylindrical and polygonal shapes using parametric controls.

Overview

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.

Accessing Cylindrical Polygon

Navigate to the script using either:

  • The Cylindrical Polygon card on the Parametric Scripts page.
  • The sidebar menu → Parametric Scripts → Cylindrical Polygon.

A default model is generated immediately upon entering the page.

Interface

The page is divided into two panels:

  • Left panel: Parameter sidebar with all configurable values and action buttons.
  • Right panel: 3D canvas displaying a real-time preview of the generated design, including dimension annotations (length, width, and height in mm).

Workflow

1. Adjust Parameters

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.

2. Preview

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.

3. Randomize (Optional)

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.

4. Name and Save

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.

How the Script Works

The script constructs geometry in the following sequence:

  1. Polygon base: A regular polygon with the specified number of sides is created on the XY plane at the given base radius.
  2. Vertical extrusion: The polygon is replicated upward for the defined number of layers, spaced by the layer height.
  3. Curvature: A sine wave is applied along the vertical axis, displacing each layer's radius by the curvature amplitude. The curvature frequency controls how many sine wave cycles occur across the total height, and the curvature shift offsets the wave vertically.
  4. Twist: A separate sine-based displacement rotates the polygon vertices around the vertical axis, controlled by twist amplitude and frequency.
  5. Pattern: If enabled, radial offsets are applied to polygon vertices on each layer (see Pattern section below).
  6. Base: If enabled, an inner wall is generated on the first layer, spiraling inward from the polygon perimeter toward the center, closing the bottom while keeping the center open.

Parameters

Shape

ParameterNameDefaultMinMaxUnitDescription
radiusBase Radius30010600mmRadius of the base polygon, measured from center to vertex.
num_sidesNumber of Sides503100Number of sides of the polygon cross-section. Low values produce angular shapes (3 = triangle, 4 = square, 6 = hexagon). High values approach a circle.

Layers

ParameterNameDefaultMinMaxUnitDescription
layer_heightLayer Height10130mmVertical distance between consecutive layers.
num_layersNumber of Layers1001300Total number of layers extruded from the base.

Curvature

Curvature applies a sine wave along the height of the model, expanding or contracting the radius of each layer.

ParameterNameDefaultMinMaxUnitDescription
amplitudeCurvature50-100100mmAmplitude of the sine wave. Positive values expand outward, negative values contract inward.
frequencyCurvature Frequency3020Number of sine wave cycles across the total height. Higher values produce more undulations. Setting this to 0 disables curvature.
mid_heightCurvature Shift0-2020Vertical offset of the sine wave along the model height. Shifts the curvature profile up or down.

Twist

Twist rotates the polygon vertices progressively along the vertical axis using a sine-based function.

ParameterNameDefaultMinMaxUnitDescription
shift_amplitudeTwist2-55Amplitude of the twist rotation.
shift_frequencyTwist Frequency5020Number of twist oscillation cycles across the total height.

Base

ParameterNameDefaultDescription
include_baseBasefalseWhen 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.

Pattern

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.

ParameterNameDefaultMinMaxUnitConditionDescription
has_patternPatterntrueEnables or disables the pattern system.
pattern_a_1Pattern A.1 offset0-5050mmPattern = onRadial offset for the 1st point in each 4-point cycle.
pattern_a_2Pattern A.2 offset10-5050mmPattern = onRadial offset for the 2nd point in each 4-point cycle.
pattern_a_3Pattern A.3 offset15-5050mmPattern = onRadial offset for the 3rd point in each 4-point cycle.
pattern_a_4Pattern A.4 offset0-5050mmPattern = onRadial offset for the 4th point in each 4-point cycle.
alternate_patternAlternating PatternfalsePattern = onWhen enabled, Pattern B replaces Pattern A on every other layer, creating an alternating surface effect.
pattern_b_1Pattern B.1 offset0-5050mmAlternating = onRadial offset for the 1st point in each 4-point cycle (odd layers).
pattern_b_2Pattern B.2 offset0-5050mmAlternating = onRadial offset for the 2nd point in each 4-point cycle (odd layers).
pattern_b_3Pattern B.3 offset0-5050mmAlternating = onRadial offset for the 3rd point in each 4-point cycle (odd layers).
pattern_b_4Pattern B.4 offset0-5050mmAlternating = onRadial 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.

Printability Considerations

When configuring parameters, keep the following in mind for 3D concrete printing:

  • Curvature amplitude: High absolute values combined with high frequency can produce steep overhangs between layers that may not be structurally printable without support.
  • Twist: Aggressive twist values rotate vertices significantly between layers, which can create overhangs at the polygon corners.
  • Pattern offsets: Large inward/outward offsets shift the material path away from the layer below, potentially causing unsupported extrusion.

Always verify the preview visually before saving, paying attention to how much each layer deviates from the one below it.

Quick Reference

ActionResult
Adjust parametersModify the design geometry
Update PreviewRefresh the 3D canvas (or wait ~10s for auto-update)
RandomizeApply random values within parameter ranges to all parameters
Save DesignGenerate the final printpath and add the design to your library