Random iterations of objects according to certain rules

Hello, I am trying to use grasshopper to create different geometric shapes based on one object, with an underlying grammar. This object can have a range of number of steps and also vary slightly in scale and extrusion. I have created the object and am now wondering, how I can iterate it along arrays and attractor points, possibly, to intersect it in different rotations, movements and number of repetitions.

What is the best way to go about this? I know Wasp is a helpful tool but I would also like them to intersect each other and find a more controlled way for grouping them.

I attached some examples of what I would like to achieve, using this formula that I want to create.


Carlo Scarpa Fragments.gh (30.1 KB)

Manual. Period.

But if on the other hand you want to walk a walk that has no end (nor start to be honest) you can try/attempt to write some sort of “custom Space Syntax - so to speak” thingy [this means code obviously] - or to fake things and do a random recursive subdivision if the rules are simple.

See for instance a simple box creation (used for creating random boxy trusses/LBS systems) based primarily on the proximity probability of the center VS some “attractor” point (or points) and some random/push/pull mode and some density control factor and some shape control factor (a bit slow, mind). This - if heavily modified - could(?) yield some “similar”(?) results(?) with what you are after.

Best advise: do it by hand (or wait until the computer becomes “smart” and can do it for you just by pressing the big red button).

1 Like

Hi Peter,
Thanks for your advice. The random subdivision seems like a possible solution but I am not sure as to the results that it would yield. Of course, by hand would make it simpler (for now), however this is for a short computation exercise and I will try my best with Wasp, it looks like it might be worth it.
Thank you!

Well … another way could be a recursive (random or “regular”) subdivision of a collection of GeometryBase (lines, curves, meshes, breps, cats, dogs etc) derived Boxes - preferably in proportional to their x/y/z sizes divisions in oder to get “equal” objects - like the one on display in the pics below … the only difference been a subdivision restriction (say along a given Box [in red] axis and not on the 3 ones as shown). If you combine this with an optional probability reduction in length (as exposed in the previous example) you may get … well … something :

But IMO is rather impossible to do this kind of stuff without code - otherwise you would be dependant on other people’s work (that’s anathema for an artist).


Thank you Peter, I appreciate the input. :slight_smile:

hi, I just wanted to point out that Wasp gives you a really high degree of control on how your geometry behaves and connects

it does not necessarily need to be a single geometry, it can also be a wider family of similar geometries with same underlying grammar, each of them with particular connection rules

the devil is in the -connection- detail: by creating smart and well-thought connection rules you can get really amazing results

Wasp author does also an outstanding job in explaining all the details of its creation with these youtube videos Temporary Autonomous Architecture - YouTube and has a dedicated Discord server (see youtube video descriptions)

good luck!

1 Like

Another question: Is it possible to iterate the same base geometry into a list of, let’s say, different scales of the object, to use those random iterations later on?

Hi Inno, Thank you for your advice on the matter. As you may have some experience with Wasp, is it possible to intersect objects too? For example, could I allow them to intersect each other in a 90 degree angle, or set the connection points on the inside of the object, so that the ends will meet each other within an intersection?

you’re welcome :slight_smile:

Wasp has an internal check to avoid collisions between parts, because for a “standard aggregation” you don’t want parts to intersect each other

but because it’s a very well designed tool, for each part it allows you to specify a custom collider-mesh: probably you can “tweak” the collider-mesh to make Wasp think they respective parts are not intersecting even if they are

for sure the developer could give you a more exhausting answer on this part-intersection topic :slight_smile:

were you thinking of designing you system in such a way it works with solids or with surfaces?

1 Like

Essentially solids. My idea is to create different versions of that object, varying by length and size, and then plug them into Wasp. Do you think I have to generate them separately or is there a way for me to iterate a random list (like through series) of different versions of that object that would work with Wasp? And thank you for specifying that, I looked into the collider-mesh and will have a go at it! :slight_smile:

Well … anything is possible (but via code).

BTW: the object(s) that you are after are in fact voxels united in some direction (that’s the reason that I replied with 2 “options” that are actually ways to deal with voxels).

So the workaround could be: (a) get a blob or something else that could act as a template (b) do the voxels [random or classic] (c) unite the voxels according some sort of logic. Done properly this could yield quite similar final results while nobody could tell if you are using a “smart syntactic” approach or is due to some other Method.

Anyway for such simple things avoid killing the mosquito with the bazooka. See for instance Plan C where you divide recursively and randomly something (int this case a Box but could be any GeometryBase) and then you can keep items according some sort of logic (yellows are the history of the recursion loops):

This could yield less Gothic results than the objects in the pics that you provited (a bit dystopic if you ask me [ideal for some Eric Arthur Blair [George Orwell] novel]).

Note: attempting to create artistic things with “good aesthetics” with a computer is the art of pointless (and a very dangerous path). The only thing that you can do is lie to yourself and accept some sort of solution as “a good one” - but if you buy this … you can buy anything.


Hm, I don’t about that.