Scale multiple surfaces from their own origin

Hi guys,

I want to scale multiple surfaces by 0.9, like in this picture:

The problem is that I dont know how to do this in Dynamo.
Could anyone help?

Thanks in advance!

Hello,

Here’s how you can do it (there are always several potential solutions)

The assumption is that you already have your surfaces in a list.

1/ Add volume to your surface (Surface.Thicken node)
2/ Get the centroids of the solids (Node Solid.centroid)
3/ Create a marker on these said nodes (Node CoordinateSystem.ByOrigin)
4/ Create 2 Points (x=1 and x=Math.Sqrt(0.9)) in these markers
(Node Point.ByCartesianCoordinate and Math.Sqrt)
5/ Create the transformation
(Node Geometry.Scale)
Geometry = Surface
Point of origin: centroid
from Point x=1
to Point x=Math.Sqrt(0.9)

edit:
I had forgotten that a surface is of dimension2 (correction of the message) @bhall
Cordially
christian.stan

Thanks for your sugestion. I will try!

1 Like

I selected the nodes you sugested. How should I connect them to each other?

with this nodes it will be more practical


image

Cordially
christian.stan