Difficulties with Data Trees

So I am pretty new to Grasshopper, only been at it for a couple of months now, so please forgive my ignorance. I have been stuck on this problem for a couple of days now and just can’t seem to figure it out.

Basically what I am trying to do is recreate an expanding scissor truss structure based on a Chuck Hoberman idea


I have been able to create a singular arc, but am having difficulties now that I am trying to create a unit that I can be arrayed or used to generate a series at varying sizes and orientation.

I believe that the problem that I am experiencing is related to the way in which the data is grouped and matching up data after it has been put through certain components.

Chuck Hoberman Arc Component.gh (17.4 KB)

In particular there is a point at which the data stream goes from having 2 groups of 6 to just 12 groups.
I just don’t know how to solve this issue.

Looks very interesting, I’d love to see this when it’s done.

I added a Shift Paths component (yellow group) to get “the radius to relate to the correct arc” and removed ‘Graft’ from the X axis input of that Construct Plane component.

Hoberman_Arc_2020Aug21a.gh (19.2 KB)

It’s a good idea to disable preview on most components that interfere with a clear picture of your final result, once you understand how earlier components are producing the results you expect. The green ‘preview selected’ button can be very useful for examining intermediate results.


And text panels can be very informative about data tree structures, of course.

Hey Thanks a lot, that seems to have done the trick. I knew there must be a simple solution.

So let me get this straight. The shift path can sorta like suck the branches back into a previous stem. Is that right?

The offset has a value of -1, indicating that it goes back a step, and if it were 1 it would grow the branches longer and 0 would do keep it the same.

Here is basically what I was going for. I would still like to play with the plane of the arc, so that it is not always in the z direction. But that is great, so glad to get it figured out

Hoberman_Arc_Component.gh (20.8 KB)

Yes, that’s as good a description as any other I’ve heard.

I hesitate to mention my own play with scissor structures since you seem to have a good idea and are making progress toward your goals. Still, FYI:

And somewhat related:

Hey Thanks lots, this looks really interesting. I will have to spend some time picking it apart.

Let us know how you get on with it @cmennell42. It would be interesting to know how to do this mathematically.

I once tried to recreate this linkage in Kangaroo 2, inspired by the clock Solstice Clock by Matthew Gilbert (very nice btw):

It was modelled using a polar array of the ‘kinked leg’ bits. It kind of worked. although I probably need to tweak the strengths. If you’re interested in linkages (or anyone reading this), K2 gives an alternative approach in gh that gives a nice understanding of how these systems work - however as above, it would also be nice to know an analytical solution/equation. Maybe the polar array component might help you anyway, as in this definition.

K2Clock.gh (19.5 KB)

Best wishes,


1 Like

Just thought I would pop up the Grasshopper file at the point at which I have gotten to with it.

Hoberman_Arc_Component_2.gh (25.9 KB)

1 Like


Looks interesting but:

  • Hidden wires make it difficult to see how it works.
  • The “scissor action” from moving the “Main Slider” is mysterious to me. Instead of being fixed length, it looks like those segments get longer as the “Main Slider” value approaches zero?

My mistake, I looked at the length of the line segments and they don’t change.

So looking a little deeper, I find myself distracted about the scissor mechanism by several things:

  • The contortions you go through to manipulate the base points for the arcs. Semi-interesting for their own sake but not related to the method for creating the “scissors” (the part that interests me).
  • Your base curves are polylines where I expect to find interpolated curves? (minor)
  • Using lines as radius values. (minor)
  • Using Relay components, especially when they have only one output. (again, very minor but a personal pet peeve)

Please take these comments with a grain of salt, I’m impressed with your results, even if the scissor “magic” is a little buried in the weeds. :sunglasses:

Hey Thanks for all the help, and no worries about your comments.

I am new to Rhino so I am unfamiliar with efficient ways of doing certain tasks.
What do you mean by “Relay” Components

These are wire Relay components: