Quasicrystal tiling generation


I am researching on the potentialities of aperiodic three-dimensional tiling systems in architecture, in particular, quasicrystals (but also Danzer tiling). I managed to shape the basic tiles of this system(obtuse and acute rhombohedrons) by hand on rhino, and I tried a possible configuration.
I would like to automatise this process of generation with grasshopper, which is easier with periodic tile systems, as they repeat themselves.
In this case, each tile can’t be just copied but needs to adapt to the tiles that already exists.
I have tried to find ways to do this, but I am not a pro in grasshopper (yet :wink: ), still, I feel there could be a way.
I was wondering if anybody did something similar, or has an idea on the direction to take to solve this.

construction drawings for basic 2 tiles, and first clusters
construction quasicrystal 2
‘seed’ composed by 20 tiles of type 1


adding adding adding… by hand!

thanks in advance!

There is a whole field of study dealing with tilings.
As a starting point have a look at the “parakeet” download, under food for rhino, by Esmaeil mottaghi and Arman KhalilBeigi. There are some pretty good example files there, and you can build on those


There’s a new grasshopper plugin called Wasp that might be able to do this very easily.

The creator of the plugin has done some very good tutorials: https://www.youtube.com/watch?v=IqH2xH_W4Y4&list=PLCn3-_9Z4-E5A0EFluiMldlEbDufMiN1g


Exactly what I needed, thankyou so much.

1 Like

I tride the wasp plugin for quasiconsole.I needed created pattern to be subtracted from a box, but I couldn’t use mesh boolean difference because boolean mesh union didn’t work on pattern generated by wasp plugin. Could anyone help me please?


boolean operation success rate depends very much on the solids you are trying to operate on
can you please attach the GH file you are having problems with? (please internalize relevant geometries)

1 Like

wasp1.gh (28.9 KB)

Thank you so much. When I union or different them, the result isn’t what I need.

I’ve only approached this problem by converting mesh to nurbs and running a script that deletes the abutting faces of the nurbs polyhedra.

There’s a whole thread about that method here: Cull duplicate mesh faces and originals - #13 by Max3

1 Like

Thanks for your answer,It’s great but unfortunately It’s not my answer.

As I watched your file again, I could create a solid nurbs and used solid difference that I had thought would solve my problem.but after converting,the problem is the same as in thd mesh difference. I send photos of my work and will be thankful if you have a solution.
These are my 2 shapes

After using solid difference this time, I have this output

Though I expected something like this

booleans are tricky. Sometimes they don’t work for various reasons. In this case, non-manifold edges might be the issue? I’m not sure.

Have you any suggestion? Of course any suggestion can be good for me, i can’t solve it.

don’t know it this might be relevant for the updated definition you have worked on in the meanwhile

one of the curves that defines the Connection plane does not lie on the face of the Hexagon

1 Like

That would definitely break the script I shared in that thread. It relies on spotting coplanar faces, deleting them, and re-joining what’s left.

I did it exactly like wasp tutorial video, when I delete this curve,pattern becomes 2dimension🤔

Fist I thought my problem is related to mesh and nurbs converting but it wasn’t, the results were the same. Now I should doubt on first geometry and points and curves?!I don’t know how to change the curves!

the guide curves need to be planar to the hexagonal prism’s faces. it appears it isn’t. you don’t need to delete it, you need to place it accurately on the face of the hexagonal prism.

from the looks of the image inno posted, the hexagon is mis-aligned or moved slightly somehow, and the line is maybe in the right place?

1 Like

What a bad mistake!!! I hope it works

Wasp is tricky like this. Any tiny error gets amplified.

Because of this, I try to generate all of my inputs to Wasp in grasshopper, to avoid human error that can happen when drawing the input in Rhino manually.

1 Like