Get Transform Data from Morph Components?

I am wondering if it is possible at all to get an Xform from any of the morph classes in Rhinocommon? I wonder the same thing about BoxMorph… My intuition tells me it’s not possible because Morph has its own namespace (Rhino.Geometry.Morphs), which is separate from the Transform class. There are no properties that give Xform data from any of the morph classes. Perhaps these do not use transforms, but rather deal with geometric control points in their own way? It seems like this is the reason there is no “X” output for any of the morph components.

I recreated a simple version of the “Sporph” component to try and see if I could get anything like an Xform out of it. But I suspect this either isn’t straightforward, or isn’t possible in the way that the Morph classes are written. SurfaceMorphTest.gh (23.8 KB)

The reason I want to get Transforms out of this is so I can bake custom Rhino blocks using morphs without dealing with the geometry of the block. I know Elefront allows for morphing block geometry, but I would like to do this so it isn’t so geometrically heavy. The Human “PlaceBlock” component allows for a block definition to be baked given a Transform data type, so it would be super useful to morph a simple surface to another curved surface, and use this transformation to bake a block.

Technically a Morph has a different transform associated with every location, so you cannot get a single transform which entirely represents a morph. Except if that morph has been set up in such a way that it doesn’t in fact bend any lines, which is possible, but pointless.

2 Likes

Ahh, I see, thanks! Just so I understand clearly, technically does that mean that because they have multiple transformations describing each part of a morph, they cannot be compounded?

And would I essentially need to recreate the functionality of a morph class in order to extract any transformations out of it?