Sunday, 18 November 2012

Revit Multiple Host Repeater Patterns



Two Point Repeaters on Divided Surfaces and Divided Paths in Revit

Last time we looked at two point adaptive components hosted on a single divided surface, and turning them into "Repeaters" in Revit 2013.  The different patterns that can be achieved in a Repeater are often surprising, and usually difficult to predict until you understand the rules that they follow.  The images from sample repeaters shown here help to figure out those rules, although one example in the previous post defied the logic that I had figured out.   It starts getting even more interesting with two point adaptive components when they are hosted on nodes of two separate divided paths and surfaces.
In the images below, the original hosted component is shown on the left, and the resultant repeater shown on the right:

Single Divided Surface and Divided Path

A two point adaptive component hosted on nodes of a separate divided path and surface will repeat in a single direction, quite unlike a single component on a single surface, which repeats in both directions.  It is not clear how Revit decides which direction to repeat on the surface – in this example it goes vertically:


Reversing the direction of the adaptive component makes no difference to the pattern, it just changes the adaptive component itself (if it is not symmetrical between points 1 and 2).


Rehosting the adaptive point on the surface also makes no difference to the orientation of the pattern, it just changes the location of the vertical pattern, and in this example it stretches the adaptive component more:

So, what if we want the pattern on the surface to be horizontal?  Maybe rotating the grid by 90 degrees on the surface will do the trick (by changing the instance property “All Grid Rotation” of the surface)?  Well, not exactly because although it does make it horizontal, it goes in the wrong direction – reverse to the divided path on the spline:

Rehosting the point of the adaptive component on the surface makes no difference to the direction of the repeat wherever it is placed – it still crosses over itself, so it obviously is not affected by the relative position of the hosted nodes (unlike when it is on a single surface):
  
We’ll try doing the opposite of what we expect to work, and rotate the surface grid by negative 90 (or 270 degrees) – Bingo, it works.  Ok, this means it is using mathematical rotation (anti-clockwise), rather than compass rotation (clockwise), which is logical, but my brain learnt about compass rotation first, and never naturally thinks the other way despite years of working with computers :

There is another way to control the direction of the pattern, but it gives a slightly different result.  By placing two adaptive components on adjacent nodes on the surface and path, it tells Revit exactly what you want – however it actually creates two interlocking repeaters rather than one.  This is a different rule to the situation when a repeater is created by two adjacent single point adaptive components (only one repeater is generated):

Using this method allows you to generate a diagonal pattern on the surface:

It also allows you to precisely control the spacing of components in the pattern:  
  
Note that it only creates as many repeats as it can using the lesser number of available nodes it finds in either direction, depending on the spacing of the two components – in the first example below it is dictated by the surface, and the second example by the spline divided path:


When two adjacent components share one node it gives quite a different result, more like a radial pattern.  It is actually using the same logic – just using a spacing of zero in this example:

You can place additional adaptive components (you must select all when creating the repeater).  The resulting repeater patterns are a little confusing – in this example it creates three interlocking repeaters from three original hosted components; the adaptive points are on adjacent nodes, but the resulting patterns go every second node in the vertical direction, and every third node in the horizontal:

When two of the components share a node, the resultant spacing is changed – it looks like the repeaters are sharing nodes, but in fact they are not.  It seems like each repeater takes the total number of adjacent nodes used for hosting in each direction, and uses that number plus one for its own spacing.  In this example the total number of occupied nodes in each direction is two, so each repeater has a spacing of three nodes in both directions:

It is also possible to use components with more than two adaptive points, and to host on more varied combinations of divided surfaces, paths and points.  Next time . . . .

No comments:

Post a Comment