Is there a book with basics of the logic?

The logic of the construction of this software escapes me. There is no real help with getting to the very heart of how to use the components. Everything I have looked at, or read as a resource always assumes you would know why to choose one component over another. This is ridiculous, since there are no real descriptions available as to what the component will do, only statements of what they are and the parameters that need to be entered. And sometimes the names of the parameters are not very clear as to what should be entered.

IS THERE A RESOURCE OUT THERE TO UNDERSTAND THIS PROGRAM (like Grasshopper for Dummies)? I have spent innumerable hours trying to figure this thing out to the detriment of completing assignments for class. If my professor didn’t require it, and it was on a cd, I would take it out and use it as a pigeon for target practice.

1 Like

Hey Jan,
I remember getting started with Grasshopper being daunting. There’s quite a lot of resources out there though:

Grasshopper Primer by ModeLab: Grasshopper Primer — Mode Lab (might be your best bet at a “book”)
There’s also: Algorithms Aided Design which is more formal look at Grasshopper from memory
TU Delft has some good info/tutorials: Grasshopper - TOI-Pedia
& parametrichouse for tutorials: https://parametrichouse.com/
This blog post by ShapeDiver on Data Trees is also good (pretty sure the Primer covers data trees though).
Google is also so your best friend, as there are lot of old blog posts, youtube videos and other resources laying around the internet.

The best way I found is to follow along with a few tutorials to see how other people use components, and then try to solve your own problem. Most of the basic components are pretty self-explanatory. People on the discourse forum are very helpful if you ask nicely as well!

Good luck ~

3 Likes

I also recommend AAD by @Arturo_Tedeschi It explains the design philosophy of it and gives you a really nice variety of exercises.
https://www.amazon.com/Algorithms-Aided-Design-Parametric-strategies-Grasshopper/dp/8895315308

2 Likes

Luke,
Thank you for your suggestions; however, I have already looked at most all of what you suggested. My professor is even doing some script writing for us to follow along to as you suggested. My problem is though, that if I don’t know what which component is supposed to do what, and why, then just following along (as in with my professor, etc.) I find no logic to make decisions on. I have more than 40 years of learning different CAD programs (both architectural and graphic), and prior to now I had no problem understanding the logics; except for Microstation. And I have to say that this software is on par with it. What I am really looking for is getting deep into the roots of decision making about the components to use and why. Otherwise, the next coding question will garner the same results: getting stymied about what to do.

Hey again @Jan8,

The problem of what component to use and when isn’t an easy thing to teach; experience plays a large part of it. If you’re trying to understand the logic behind your professors component choice, then you should understand that, as with anything to do with Grasshopper (and coding/logic in general) there is usually more than one way to achieve a result. Usually whether one component is better than another will depend on what you’re trying to achieve. Your professor’s grasshopper definitions might be shite for all we know!

That said, generally I would say that any definition that uses the least amount of components, and achieves the result with the most performance (fast) and robustly (doesn’t break when you change the inputs to something unexpected), is the best. If you can do that then you’re making the right component choices!

Sorry if that isn’t very helpful


4 Likes

Perhaps the reason why you find it hard do find the “logic” of a component is that there (usually) IS NO (generic) LOGICAL path to find it.

The components in many (most?) cases are abstract (“generic”) approaches to multiple more specific problems which can look very different from each other (but still belong to the same type or category of problem)

EXAMPLE
An example to illustrate why there’s “no logic” between an abstraction and one (of many possible) implementation of an abstraction, think of a list of household utensils (in Swedish there is a single word representing this abstraction, “husgerĂ„d”), which can be a:

  1. Cup.
  2. Plate.

Now, lets pause for a second and try to find the “logic” between a Cup and a Plate. There is none.
But we can continue adding to the list:

  1. Can.
  2. Spoon.
  3. Pot.

And there’s still no “logic” between the items in the list (they are related, but the relation is not “logical”). Like, from saying “spoon” doesn’t follow “pot”, aso.

WRONG WAY
But if insisting on trying to find the “logic” for finding a “spoon” or “pot” without starting from what problem/use case you have, then you are probably approaching the problem from the wrong direction (bottom-up).

Therefore, lets instead flip the problem the other way around (top down) and try from another angle. I have a problem, namely I want to cook a meal and serve it to my family. What (“components”) do I need in order to do that?

CONCEPT ANALYSIS
Lets not start with mentioning and endless list of
 (all those possible tools or utensils) for making this meal. Lets instead be smart and simply say that we need a number of “household utensils” (the abstraction of a wide variety of “typical things used in a kitchen”).

Understanding the smartness in lumping together a variety of things into “higher abstractions” (abstracter terms) yakes some concept analysis, which means that you truly and actually understand WHAT the different utensils ARE, and what they are useful for, and thus why they belong together in this list.

SOLVING ON A HIGHER LEVEL
Now, Grasshopper went for NOT creating every kind of specific “household utensil” thinkable, instead it aimed at finding a more (the most?) abstract solution (component) which can solve entire GROUPS OF PROBLEMS. For comparison with the kitchen tools example, the designer of Grasshopper would skip creating very specific solutions (components) like various Knifes, different size Spoons and a plethora of different forms and sizes of Pots when the more generic term (term/component) “household utensil” would do the job.

Summary: Think in more generic terms about your problem. Solve it on a “higher level of abstraction”

EXAMPLE
An example again: If you need to rotate something to the Left, DO NOT look for a “left-rotator”, only look for the common concept for rotating stuff in ANY direction, namely “Rotate” (although there actually exist different ways/components for defining rotations, but searching for “Rotate” in Grasshopper will list them for you )this would resemble searching for “household utensils” in the example above), and with the list of potential specific tools for your problem you can then to try the different tools to find which specific one fits your problem the best.

DEFINING KNOWLEDGE
Generally speaking, knowing the meaning of an abstraction (or an abstract term, or concept), essentially means understanding why “a group of more specific variants lumped together” (of whatever kind).

Capability to deal with abstractions (high level concepts) comes touches on the definition of what knowledge actually “is” (about something), in the sense of true and deep “understanding of concepts” (like what spoons and plates and pots are good for, in a kitchen, that is). Even the definition of knowledge itself has an abstract term lumping the field of “understanding knowledge” together(
), namely “epistemology” (Wikipedia: Epistemology - Wikipedia).

PHILOSOPHY & ANALYSIS PARALYSIS
Sorry for a long post, but if you want to know all about a component’s background reasoning, a component which you don’t even know a category name for (or can guesstimate that should probably exist for your type of problem), then you may need to ponder also upon why your bottom-up approach doesn’t work. Try top-down instead. Guesstimate what kind of GENERIC concept a potential component would belong to, and you gradually learn how to find a suitable one.

Is the problem of finding the right tool (component) for the job related to philosophy? Yes it is. And with that comes the risk for getting trapped in “analysis paralysis”. Hands on experimenting will probably be a faster way forward.

//Rolf

7 Likes

Not sure the post by @RIL is all that useful pertaining to this topic, although in theory it could be interesting on a meta level.

Anyway, Grasshopper you can look at as a way to put the actions on a canvas, a bit like you’d do them in Rhino. So the first question should be: are you familiar with Rhino? If not, then it may be a bit harder to get your head wrapped around Grasshopper; although it is not a strict requirement it will be a huge help.

Creation and manipulation of geometry will follow quite closely the Rhino commands and concepts, with the added benefit that you can add number sliders to control aspects.

When I teach I find it helps to guide students to first think about how they would create some geometry manually, then use those realizations and redo each step with components.

3 Likes

Or, if a similar approach is used when looking for components, it will not end up being useful. My post is trying to illustrate why. :wink:

In short, take another approach.

// Rolf

Hi,

there is a bit of a chicken-egg problem with Grasshopper.

Grasshopper is a visual scripting tool which allows you to automate CAD. It’s essentially a way to do programming in an approachable way. Instead of writing code, you connect pre-written code pieces together with all its advantages and disadvantages


So you can achieve quite a lot without any background knowledge, but at some point you also need to know basic concepts of programming. That knowledge is what you need to recombine pieces efficiently.
On top of that, you deal with a lot of math and 3d modelling. Again, Grasshopper gives you an approachable way to learn math and modelling, but you also need to understand math and modelling to solve real world problems.

This is also why these tutorials won’t help you much. If you want to learn quickly and solve issues efficiently, learn to code, learn that math involved and get better in modelling. It can best be learned within an office from experienced professionals and by solving practical problems. In any case, it takes time and there is no shortcut.

4 Likes

Thank you for using a kitchen utensil analogy, that is my forte, as I am a chef level of cook, so I can talk from experience of how to teach someone to cook. So here is my analogy of what I am trying to accomplish; I don’t start someone off by saying pour a cup of water in a pan to boil. If the person has never been in a kitchen before, they would not know where to look, what to use, or how to get it to boil; they may know water and where to get it, but that is it. These are the steps I would take:

  1. I would show the person where to find the pan. I would also show them that there are several kinds and sizes of pans, but indicate the which is the best and why. that is, for a cup of water a small 1 quart pot, not a cast iron frying pan; both will do, but the pot works better if you are needing to retain as close as a volume as possible, because the surface area is smaller so therefore, less evaporation. Additionally, boiling water in cast iron is not the best idea, because it can take off the cooking patina which would allow the pan to rust.
  2. I would show them where to find a measuring cup, so that they know how much water they are actually putting in the pot and not just guessing (important in recipes!). I would also show them the difference between a dry measure cup and a liquid measure cup. Both will give you a cup, but if you need to know by liquid weight then you would need the liquid measure. The converse of this is that a liquid measure cup will not give you accurate weight for dry ingredients.
  3. Because I have a professional range, I would show them how it operates. How to turn the gas on by turning the knob just to ‘light’ and then once the burner is lit, then you turn it to the temperature that you want. I would also tell them that what different temperatures will do. ‘High’ will get the water boiling quickly, medium will take much longer, simmer won’t get it to boil at all. Secondly, I have 4 different burners: 2 large pot quick boilers, a medium and small cooking burner and a removable grill burner that can be used as an extremely large pan (like for cooking gravy in a roasting pan). Any of the first four burners will do, but for safety’s sake with a small pan, the small cooking burner is the best.
  4. I would stand with my student and indicate the different stages the water goes through and what is happening to the water during them. If they don’t know what ‘to boil’ means, then they won’t understand what it means to boil for the next time.
    Again, taking this analogy against the logic of the software; there are several avenues to take to accomplish the task. The only non-variable is the water, and boiling it is the end game. This is the logic process that I am looking for. What you and others are suggesting is to have the student just do something after I have done (it without explanation during the process). However, with a different non variable (like heating a cup of milk until just simmering - the milk is the non variable, simmering is the end result). Without understanding the logic of cooking, it is probable that the student would burn the milk, rendering it unusable.
    As you said, it is simplified, but when you get into involved recipes, not having the basic logic of cooking, it is lucky if the person cooking ends up with the desired result. But, once the logic is known, then it can be applied to completely new dishes without much trouble or having it end in disaster.
    This is what I am looking for when I say logic: the very basic concepts of what is what, what it does, and why I would choose one thing over another.
1 Like

Much of the logic will become clear when you know how Rhino works. A good place to start would be Rhino Training Guides (English) [McNeel Wiki] . You can regard these guides as the chef who helps the student that has never heard of a kitchen.

As you already noticed there can be several ways to achieve a certain goal in Rhino, best is to get started with familiarising oneself with Rhino. It is this knowlegde that will help you understand the components and logic of Grasshopper much better.

1 Like

When I started, like you, I became frustrated. Something that was very useful to me in my ‘learning curve’, in addition to learning on my own, was taking one of the ‘intro’ courses offered by Mcneel and other. For an investment of a few days’ time, and whatever the course fee was, $50, $500, I don’t recall, it saved me much frustration. Initially I was resistant to taking a course, I thought, “I am a degreed engineer, I have multiple designs and US patents, I’ve been using CAD for 35+ years, I can figure this out without help”. I realized that, while I could indeed figure it out on my own, with some training I could get up and running in months, instead of years or decades. So, that is my $0.02: take some of the training. The pace, structure and sequence will help you immensely. No, I am not on sales commission from McNeel.
I started to learn Rhino about 15 years ago, when I realized that grasshopper would be available, even though I did not know how to use it, I could see it’s potential, and that taking a year or 2 to get up to speed in Rhino would be worthwhile.
So, remember the end goal: better design!

3 Likes

Throwing in my two cents;
At a super super simple level, the original name of Grasshopper is quite helpful; Explicit History (from a long long time ago) ie. on a basic level, it represents the order of events (the history) when drawing something.

Say you are modelling a handrail (a profile extruded along a rail). If you were doing it manually, you would draw the profile as a polyline, the rail as a curve, align the profile at the beginning of the curve, and use the Rail command to extrude it.

The sequence of actions is always the same, so if your rail changed you would go back a few steps, and re-do your work. Grasshopper is simply a way of stringing the functions together, so you can go back “in History”, change something, and have the same sequence happen again.

You say you need help understanding the components, but if you try to make this example, you will see it’s all self explanatory; a polyline will ask for points, the rail needs a profile and a rail, and so on. Just as if you were drawing it in Rhino, really.

Logically speaking, that’s my step one.

Once that’s clear, the next level is to understand you are “coding” - any Grasshopper script, insofar as it is a sequence of functions, is a function itself. So once you have a handrail maker, you can string it to other functions you might have made.

The problem you hit quite quickly by doing this, however, are the exceptions. Your handrail maker might be great, but one day you may need it to do closed loops, or split off in multiple directions, or whatever, and it will fail. To fix it you need to bring in some logic - if the rail is closed do this, if it isn’t do this other thing, etc.

It’s still a flow of functions, just getting smarter in the way they trigger each other.

If you keep going deeper, you can abstract away thinking about “the way I would model this in Rhino”, and start thinking about data trees, algorithms, etc, and really get into the nitty gritty of programming.

Or at least that’s how it went for me
Hope this helps

3 Likes

David’s old Rhinoscript 101 primer (which, technically was never finished?) was a great intro to both Rhino functions and programming.

Did someone do a scripting primer for Python? I can’t remember anymore


I guess that is part of the problem; I don’t know Rhino. My professor said it was just like using Autocad (It is not). We are really not even doing drawings as he wants us to learn to script the concepts so as to examine varying possibilities in relation to structural analysis.

It’s very similar to AutoCAD in terms of 2D drafting, but way superior when it comes to modelling.

1 Like

That is why I linked you to learning material for Rhino.

1 Like

You can find a lot of videos on this youtube channel

This brings back a lot of memories from teaching GH at university

You need a solid understanding of rhino before you can get into grasshopper. I used to run a compressed, 3 week, rhino refresher at the start of my 12 week GH course.
Next thing is like Nathan/Jopsa said above, starting with simple objects that you can first build in rhino and write down your process (each command you use) as you go. Then build the same object in GH replacing each step with the corresponding component (sometimes there are multiple options, same as in rhino).
At first this is infuriating because rhino is a lot faster, but if you want to make modifications to geometry or generate a bunch of different options, GH will be worth it.
I used to get students to build lots of objects with just polyline, box, move, extrude, rotate, and basic math operations. This builds an intuitive understanding of GH and gets you used to the differences in workflow.
It’s also worth doing a quick sketch to describe which dimensions (parameters) you want to control (with sliders etc) and which will be baked in or linked to other parameters. This is a design choice, getting the right balance between having enough control vs having too much is tricky.
I also noticed that many tutors get students to install 100 different plugins from Food4Rhino; again, gotta start with basics before getting to the ‘exciting’ stuff. Structural or environmental analysis plugins are the worst offenders
 terrible way to learn GH!

8 Likes

Really helpful. Thanks, makes a lot of sense. Reminds me of the old days of keystroke macros.
Thanks to others in the thread also
 I’m encouraged to dip my toes in the water at least . Good starting point by op !