How To Vertically Offset Polygons

Hello. Does anyone know how to offset polygons (curves) vertically? I need to make a stacked structure, but I can’t figure out how to get my multi-sided shapes to move up. I know how to vertically offset the planes and circles, though. What I’ve got so far is in this screenshot.

Any help would be appreciated.

There are a lot of ways to do this…

  • Polygon.RegularPolygon lets you create a regular n-sided polygon inscribed within a circle.
  • Curve.PullOntoPlane lets you pull existing geometry onto a plane in the normal direction.
  • Geometry.Translate lets you shift geometry along a vector.
2 Likes

Hey, thanks a lot! Curve.PullOntoPlane is a big help when you have a Plane.Offset to match. If you’ll help me out again, though, I would also like to know how you rig it so the polygons steadily shrink as they go up.

Maybe make a coordinate system with a decreasing X, Y, and Z magnitude and use a single Geometry.Transform on each. Not sure that works as scaling via transforms can be very inconsistent.

Alternatively make many circles of varying radius - IE 20..5..#5; in a code block to control the radius. Then use a regular polygon creation method (https://dictionary.dynamobim.com/#/Geometry/Polygon/Create/RegularPolygon) to generate a polygon in each circle. Then use a Geometry.Translate node to move each polygon by 0..n..#5; where n is your maximum distance.