Why do your GH files look so much better?!😿 (also batch processing?)

Hi yall,

First post on my first day with rhino/grasshopper!

I’m loving grasshopper SO much already, I forgot how much I enjoy flexing my linear algebra/geometry muscles :flexed_biceps:

This helix arch is my first practice project and I’m so happy with the results

Would any of yall have a moment to help with how I did it?

  • The file doesn’t look as elegant as the others I see on here (lots of wires coming out of the same block & overlapping wires), is there something I’m missing?
  • How would I make a bunch of different helices with different angle offsets instead of copy-pasting the whole thing like I did? Is there a way to input a list of Rod_Rotation_Offsets so the whole thing gets batch processed? Manually changing the value and baking it over and over sounds… wrong
  • Any other rookie mistakes I don’t know I’m doing? I get the feeling I’m brute forcing the maths since I don’t know what tools are available.

Any help is very much appreciated and I’m looking forward to working with yall!

spiral_arch1.gh (34.0 KB)

Hi Torben - welcome to the GH forum.

Actually your first GH script looks a lot better than my first one. I tweaked you top set of components to point out a few things:

  1. Each person has their own style, but I like to keep things as close together as possible. Doing this make it easier to end up with everything on one screen with no need for scrolling. (Note that I have a 4K monitor dedicated to GH, and a secondary one for Rhino.)
  2. The Pipe component will take the place of using a circle to transfor a curve into, well, a pipe.
  3. It pretty standard to enter values directly into GH component inputs by right-clicking on them. Ding this makes things slightly less ā€œparametricā€, but I’ve found that a lot of GH component values won’t change even though others are best handled with sliders of something else.
  4. It’s nice to avoid crossing GH wires, and I’ve often gone back to a finished GH file and simply moved things around in order to reduce the number of crossed wires.

About the helix pipes on the outside - I’d do this by starting with a vertically straight pipe and add the helix curves to it. Then use the GH Bend component to make the semi-circle.

spiral_arch1-bb1.gh (45.3 KB)

My interpretation.

spiral_arch1 a.gh (15.2 KB)

Most elegant - congrats. And thanks for posting.

Which of the three copies of code should I look at?

We don’t need to see your explorations. The file will be smaller and easier to understand if geometry (breps, curves, points, etc.) are shared (wired) instead of duplicated.

Good first effort!

Hi Birk,

Thank you so much for your feedback!

  1. Lol, I did this on my 14" laptop screen, I can so see how this would be 1000x better with multiple monitors

  2. Ooh, the pipe block is totally what I was looking for

  3. Are you talking about the ā€œExpressionā€ option for inputting values? Or something else?

I’ll play around with that bend option, I’m going to be escalating the complexity of the lattice and the arch shape, I’m sure this’ll come in handy!

Hi Leo,

Omg this is awesome!

I’m gonna have to spend some time reverse engineering your solution here, this is soooooo helpful!

Can’t thank you enough,

Hi Joseph,

Thanks for the feedback

Would it be better practice to include just the one coil and describe the duplication I’m looking for?
And when you’re talking about including the geometries are you saying that it would be more helpful if I included a Rhino file with the geometries in it and keep them referenced in the GH file (instead of extracting them)?

What I meant was to right-click on an input variable (like the D in IntCrv) move mouse pointer to ā€œSet Integerā€, move mouse pointer the the text box, and key in the value you want.

Fortunately this is a lot easier to do than it is to describe in words.

A small change to make the final part smoother.

spiral_arch1 b.gh (17.0 KB)

Oh gotcha thanks, I was tinkering around and found ā€œInternalize Dataā€ and thought that was just gravy
This is even better!

Weird to me there’s no visual indicator that there’s a locally defined value :thinking:

No. What I’m saying is that once internalized (as you have done), it’s better to wire them (from a single internalized instance) instead of duplicating them (multiple internalized instances) as you apparently did?

I didn’t study your code carefully, sorry.

P.S. I’ve looked again at your code and WOW :bangbang: I missed many important details :bangbang:

Am tempted to write a full demo of data trees (but I won’t) where the data (not replicated code fragments) determines how many ā€œcoilsā€ and their nature (other params) from one set of code to produce geometry as ā€œbranchesā€. Hope someone else on this thread can help.

Hi Leo,

I was wondering why you went with the mass add solution instead of the range, I was theorizing it was a runtime optimization thing.
Would you explain why you’d use mass add over range?

GH has lots of surprises that I call ā€œquirksā€. This is not surprising when you understand that one person developed the whole thing many years ago.

You’ll learn a lot from this forum - I suggest you visit here once a day.

Hey yall,

Thanks again for all your input, I’ve learned so much about GH from yall already

I’ve been playing around with @leopoldomonzani’s solution and here’s what I got!

spiral_arch2.gh (21.0 KB)

Pretty kick ass!
And god is PerpFrame perfect for this project!

I went with Point Polar for the coil rotation since the plane rotation on plane rotation started breaking my brain :exploding_head:

To @Joseph_Oster’s point on data trees, the Simplify/Graft rabbit hole I went down was such an important side quest!
Is it just me or are the tables/data structures in GH kinda fast and loose and a bit hard to visualize? Are there any data visualization tools I’m missing aside from Panel and ListItem?

A couple problems I haven’t figured out yet:

  • When I use a complicated starting curve, it looks like PerpFrame spaces the frames out closer together at tight curves. Is there a way to Reparameterize the curve so the Frames stay equally spaced?

  • Also when I set the # of Coils to an even number, Pipe wouldn’t render one of the coils…
    But now I can’t recreate the issue…:person_shrugging:

Next I’ll start checking out @Birk_Binnard’s Bend recommendation and see what’s up with that.

This thread is starting to drift from the original topic, though I’d love to keep this going here for simplicity of my records. Is that alright with yall?

Thanks a million​:growing_heart:

No particular reason.
With Mass Add the input defines the rotation angle of each individual plane. (e.g. 34°)
With Range the input defines the rotation angle of the last plane and, of course, calculates the angle of all planes.

For complex curves.

Got it, that makes a lot of sense
Thanks!