Hi friends,

Are there any resources that you can recommend me that explain relative coordinate systems in Dynamo in greater depth than the Primer?

I am not understanding the mechanics that control the geometry.transform node when extracting the context coordinate systems of specified geometry.

In the example of my screenshot, I am taking two rectangles (1), moving and rotating the larger rectangle (2), and am trying to use the Geometry.Transform node in tandem with the Geometry.ContextCoordinateSystem nodes to acquire the existing and new coordinate systems of the larger rectangle and move the smaller rectangle to the new coordinate system position.

I would expect the smaller rectangle to correctly position, but it looks like the context coordinate system is derived from the 0,0,0 origin rather than the centroid of the larger rectangle. So it positions relative to that 0,0,0 point in the original rectangle rather than its center. The centroid point of the original rectangle also gives me a context coordinate system of 0,0,0.

I cannot see enough of your script to help you.

whether the rectangles came from Revit geometry, or did you create the rectangles in Dynamo.

Maybe this also helps:

2 Likes

Marcel, thanks for sharing the link!

As for the graph, it is purely dealing with Dynamo geometry. I have an excel document that generates a series of rectilinear shapes and leverages the refinery toolkit PackRectangles to configure the shapes in a more efficient layout.

As I continue to investigate this, I think my problem lies in my coordinate systems not capturing the rotation of elements. Note the axes of the different coordinate systems are not consistently oriented to match the parent geometry:

See what you can do with this

1 Like

Marcel, thanks for pointing me in the right direction. There might be a more efficient way to do this, but I landed on a solution that uses the Plane.Normal node to compare the direction of the original and new geometry, then rotate the coordinate system at the geometry center:

Glad to be of help.

You found one way to do this

Can you find another?