I have previously discussed (in my idea called "surface connectors") a toy called Rhombo which are rhombohedral blocks with magnetic faces.
I am considering making my own, but with an improvement.
Although the magnets in the Rhombo blocks ensured the faces of two blocks would align, this did not
account for the greater structure of the blocks eventually leading to positions where blocks could no longer be placed.
To use a 2D analogy, Penrose tiles randomly placed edge-to-edge will eventually lead to configurations where there will be gaps that cannot be filled with another tile. To avoid this 'matching rules' need to be followed (link).
There are also matching rules for rhombohedron 3D tiling. So my idea is a configuration of magnets embedded in each face to enforce these matching rules.
The matching rules for rhombohedron 3D tiling was described in the paper:
"Theory of Matching Rules for the 3-Dimensional Penrose Tilings" A. Katz, Commun. Math. Phys. 118, 263-288 (1988)
Each face of the rhombohedron has to one of 8 possible matching configurations. Each one of the 8 matching configurations matches with one other of the matching configurations. So, there 4 types match with the 4 other types.
An acute rhombohedron has 6 faces, so there are 8^6 (262,144) possible rhombohedron designs; an obtuse rhombohedron also has 8^6 possible designs.
In the Katz paper, it was shown that if a small subset of these possible designs is chosen, then the rhomohedron blocks will comply with the matching rules and always assemble together properly. This subset is 8 of the obtuse rhomohedrons and 14 of the acute rhombohedron designs (see figure 4 of the Katz paper).
Multiple magnets in the face of each rhombohedron would act like a code to ensure the correct faces are connected. A North pole of a magnet represented as a 1, the South pole represented as a 0.
To get 8 distinct codes you could use 3 magnets (since this makes 2^3 different strings).
However, I think 4 magnets in each face would work better. The 4 magnets would be placed symmetrically on each face.
There are 2^4 (i.e. 16) strings with 4 bits. 16 is too many, but 8 of these strings would be not good as magnetic arrangements since these arrangements are symmetrical. So, all 4 bit strings that have exactly 1 or 3 1s are used as patterns for the magnets. This give 8 strings with 4 bits. These patterns would ensure a one-to-one match between corresponding magnet patterns. That is, the faces would match, including the correct orientation (the correct orientation is important since rhombohedron faces are symmetrical).
So, to use an example, this magnet configuration:
0 0
1 0
Would match with this magnet configuration:
1 1
1 0
There would also be protrusions and recesses in each face to: a) indicate which face will match with another face, and b) provide lateral stability/locking which would allow large structures to be formed. The protrusions and recesses would be relatively small (only a few millimetres high), so that a block could be squeezed into spaces defined by three surrounding blocks (briefly pushing the surrounding blocks slightly out of alignment).
Anyway, this will hopefully make a fun toy (although maybe only fun for the mathematically inclined).